Perl/cpan: не удается найти JSON/Parse.pm @INC

Я работаю на 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.

Может ли кто-нибудь помочь или дать какое-то направление?

Запустите cpan и введите info JSON::Parse в оболочку CPAN. Он должен сказать вам, где модуль установлен на вашем компьютере.

choroba 19.06.2023 11:25

@choroba Он установлен здесь /root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON/Parse.p‌​od

Duvan Smuts 19.06.2023 12:19

Как запускается сбойный скрипт? Из дампов @INC видно, что Perl, на котором запущен сбойный скрипт, — это не тот, который вы получаете, когда вводите perl в приглашении оболочки.

user20284150 19.06.2023 14:04
.pod — это просто документация. Вы не показали, где он установлен. Пожалуйста, предоставьте вывод следующего: head -n 1 "$( which cpan )" и echo 'o conf' | cpan | grep -P 'make|mbuild' и set | grep ^PERL. И если можно, то местонахождение JSON/Parse.pm
ikegami 19.06.2023 15:49

Сообщение об ошибке Can't locate JSON/parse.pm или Can't locate JSON/Parse.pm? Ваш вопрос не последователен.

ikegami 19.06.2023 15:54

@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:/ro‌​ot/perl5 PERL_MB_OPT='--install_base /root/perl5' PERL_MM_OPT=INSTALL_BASE=/root/perl5

Duvan Smuts 19.06.2023 16:09

Вот установочный DIR: /root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON/Parse.p‌​m

Duvan Smuts 19.06.2023 16:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы установили модуль в нестандартную директорию (/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_OPTPERL5LIB) при наличии root, [3] затем переустановите модуль. Возможно, вы захотите избавиться от /root/perl5, чтобы избежать путаницы.


  1. Вы используете local::lib как root, устанавливая модули «только для root».
  2. За исключением случаев, когда вы работаете от имени пользователя root, поэтому cpan находит его при использовании root.
  3. Например, не используя local::lib в качестве root.

Спасибо, первый вариант не помог, но сброс глобальных переменных помог и сделал свое дело.

Duvan Smuts 19.06.2023 16:37

Настроил экспорт. Perl должен автоматически добавить последний бит. Но не поэтому это не сработало. Вы, вероятно, установили его в неправильном процессе, чтобы повлиять на ваш скрипт. Или у вас были проблемы с доступом к каталогу. Добавлено примечание о правах на ответ.

ikegami 19.06.2023 16:39

Другие вопросы по теме