Я работаю на CentOS 7.
Я установил JSON::Parse через cpan, но получаю ошибку.
Can't locate JSON/Parse.pm in @INC (@INC contains:
/home/truckassist/modules
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5 .)
При запуске cpan JSON::Parse получаю следующее: JSON::Parse is up to date (0.62)
Я пробовал следующее до сих пор...
perl -e "print qq(@INC)"
Выход:
/root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
/root/perl5/lib/perl5/5.16.3
/root/perl5/lib/perl5/x86_64-linux-thread-multi
/root/perl5/lib/perl5
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5
Также:
find /root/perl5 -iname '*json*'
Выход:
/root/perl5/bin/cpanel_json_xs
/root/perl5/bin/json_pp
/root/perl5/bin/validjson
/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Cpanel/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/Cpanel/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON
/root/perl5/lib/perl5/JSON
/root/perl5/lib/perl5/JSON.pm
/root/perl5/man/man1/cpanel_json_xs.1
/root/perl5/man/man1/json_pp.1
/root/perl5/man/man3/JSON::PP.3pm
/root/perl5/man/man3/JSON::PP::Boolean.3pm
/root/perl5/man/man3/JSON.3pm
/root/perl5/man/man3/JSON::backportPP.3pm
/root/perl5/man/man3/JSON::backportPP::Boolean.3pm
/root/perl5/man/man3/JSON::backportPP::Compat5005.3pm
/root/perl5/man/man3/JSON::backportPP::Compat5006.3pm
/root/perl5/man/man3/JSON::Parse.3pm
/root/perl5/man/man3/Cpanel::JSON::XS.3pm
/root/perl5/man/man3/Cpanel::JSON::XS::Boolean.3pm
/root/perl5/man/man3/Cpanel::JSON::XS::Type.3pm
/root/perl5/man/man3/JSON::MaybeXS.3pm
/root/perl5/man/man3/JSON::Tokenize.3pm
/root/perl5/man/man3/JSON::Whitespace.3pm
Я могу только предположить, что он просматривает неправильный каталог cpan/perl.
Может ли кто-нибудь помочь или дать какое-то направление?
@choroba Он установлен здесь /root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON/Parse.pod
Как запускается сбойный скрипт? Из дампов @INC видно, что Perl, на котором запущен сбойный скрипт, — это не тот, который вы получаете, когда вводите perl в приглашении оболочки.
.pod — это просто документация. Вы не показали, где он установлен. Пожалуйста, предоставьте вывод следующего: head -n 1 "$( which cpan )" и echo 'o conf' | cpan | grep -P 'make|mbuild' и set | grep ^PERL. И если можно, то местонахождение JSON/Parse.pmСообщение об ошибке Can't locate JSON/parse.pm или Can't locate JSON/Parse.pm? Ваш вопрос не последователен.
@ikegami Выводить в порядке ваших запросов: 1. #!/usr/bin/perl, 2. the new mechanism. Please read more about it and make your choice, 3. PERL5LIB=/root/perl5/lib/perl5 PERL_LOCAL_LIB_ROOT=:/root/perl5:/root/perl5:/root/perl5:/root/perl5 PERL_MB_OPT='--install_base /root/perl5' PERL_MM_OPT=INSTALL_BASE=/root/perl5
Вот установочный DIR: /root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON/Parse.pm





Вы установили модуль в нестандартную директорию (/root/perl5/lib/perl5/x86_64-linux-thread-multi),[1] и не сообщили perl об этом[2], или у вас недостаточно прав для доступа к нему.
Убедитесь, что у других пользователей есть разрешения, необходимые для доступа к /root/perl5 и его содержимому.
И чтобы сообщить perl, где найти модули, вы можете использовать
export PERL5LIB=/root/perl5/lib/perl5
В качестве альтернативы, прекратите установку модуля в необычном месте при установке для всех на машине.
Снимите PERL_MB_OPT и PERL_MM_OPT (и PERL5LIB) при наличии root, [3] затем переустановите модуль. Возможно, вы захотите избавиться от /root/perl5, чтобы избежать путаницы.
cpan находит его при использовании root.Спасибо, первый вариант не помог, но сброс глобальных переменных помог и сделал свое дело.
Настроил экспорт. Perl должен автоматически добавить последний бит. Но не поэтому это не сработало. Вы, вероятно, установили его в неправильном процессе, чтобы повлиять на ваш скрипт. Или у вас были проблемы с доступом к каталогу. Добавлено примечание о правах на ответ.
Запустите
cpanи введитеinfo JSON::Parseв оболочку CPAN. Он должен сказать вам, где модуль установлен на вашем компьютере.