CPAN дает всевозможные ошибки в Ubuntu
Я просто пытаюсь запустить простую Perl-программу для импорта данных из XML и экспорта в базу данных.
Используйте Mysql; не сработало, поэтому я использовал DBD::mysql вместо того, чтобы получить Mysql.pm из cpan.
Однако я не могу ничего установить. Я пытаюсь установить модуль парсера xml, но cpan выдает эти ошибки независимо от того, какой модуль вы пытаетесь установить.
install xml::parser
CPAN: Storable loaded ok (v2.20)
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'
CPAN: Compress::Zlib loaded ok (v2.02)
............................................................................DONE
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
CPAN: Time::HiRes loaded ok (v1.9719)
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
DONE
Going to read '/root/.cpan/sources/modules/03modlist.data.gz'
Catching error: "Can't locate object method \"data\" via package \"CPAN::Modulelist\" (perhaps you forgot to load \"CPAN::Modulelist\"?) at (eval 29) line 1.\cJ at /usr/share/perl/5.10/CPAN/Index.pm line 518\cJ\cICPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85\cJ\cICPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 955\cJ\cICPAN::exists('CPAN=HASH(0xa225610)', 'CPAN::Module', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1243\cJ\cICPAN::Shell::expandany('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1639\cJ\cICPAN::Shell::rematein('CPAN::Shell', 'install', 'xml::parser') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1935\cJ\cICPAN::Shell::__ANON__('CPAN::Shell', 'xml::parser') called at /usr/share/perl/5.10/CPAN.pm line 375\cJ\cIeval {...} called at /usr/share/perl/5.10/CPAN.pm line 372\cJ\cICPAN::shell() called at /usr/bin/cpan line 198\cJ" at /usr/share/perl/5.10/CPAN.pm line 391
CPAN::shell() called at /usr/bin/cpan line 198
Going to read '/root/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Going to read '/root/.cpan/sources/modules/02packages.details.txt.gz'
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Line-Count header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
Warning: Your /root/.cpan/sources/modules/02packages.details.txt.gz does not contain a Last-Updated header.
Please check the validity of the index file by comparing it to more
than one CPAN mirror. I'll continue but problems seem likely to
happen.
cpanDONE
Going to read '/root/.cpan/sources/modules/03modlist.data.gz'
No history written (no histfile specified).
Lockfile removed.
Can't locate object method "data" via package "CPAN::Modulelist" (perhaps you forgot to load "CPAN::Modulelist"?) at (eval 31) line 1.
at /usr/share/perl/5.10/CPAN/Index.pm line 518
CPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/share/perl/5.10/CPAN/Index.pm line 85
CPAN::Index::reload('CPAN::Index') called at /usr/share/perl/5.10/CPAN.pm line 692
CPAN::all_objects('CPAN=HASH(0xa225610)', 'CPAN::Distribution') called at /usr/share/perl/5.10/CPAN/Shell.pm line 1046
CPAN::Shell::failed('CPAN::Shell', 2, 1) called at /usr/share/perl/5.10/CPAN.pm line 413
eval {...} called at /usr/share/perl/5.10/CPAN.pm line 413
CPAN::shell() called at /usr/bin/cpan line 198
Я делаю что-то неправильно? Я пытался найти эти ошибки, но ни у кого нет правильного решения. Есть ли какие-то настройки в конфиге, которые я должен изменить?
4 ответа
Если ни у кого нет ответа на вашу конкретную проблему, я, вероятно, просто попробую с новым cpan, что-то вроде:
cd && mv .cpan .cpan-bak
и затем снова пытаюсь установить модуль.
Надеюсь это поможет.
У меня была похожая проблема.
Ситуация:
пытается установить Catalyst::Plugin::AutoCRUD
используя версию perl: perlbrew-5.14.2
решение:
Проблема заключалась в том, что sudo я предварительно настроил на команду cpan install, например так:
НЕ РАБОТАЕТ:
sudo cpan Catalyst::Plugin::AutoCRUD
РАБОТАЕТ:
chown -R myusername:myusergroup ~/.cpan
cpan Catalyst::Plugin::AutoCRUD
Причина: из-за того, что у меня установлен perlbrew + cpan под моей учетной записью, а не как root, все последующие установки модуля cpan должны выполняться одним и тем же пользователем.
У меня была такая же проблема, когда истекло время подключения к сайту perl. /root/.cpan/sources/modules/02packages.details.txt.gz
содержал только информацию о том, что сеть отключена, и /root/.cpan/sources/modules/03modlist.data.gz
был также мусором.
Удаляя только эти файлы и повторяя попытку, когда сеть была менее загружена, файлы затем выбирались правильно, и все снова работало нормально.
Убедитесь, что ваша версия "cpan" (вашей программы установки) соответствует вашей версии "perl"...
Проверьте это, выполнив: cpan --version и perl -v
Я столкнулся с этой же ошибкой при попытке установить другой модуль, и оказалось, что используемая мной версия "cpan" была скомпилирована как часть пакета perl 5.8.8, но версия "perl", которая установлена по умолчанию здесь работает версия 5.8.5, поэтому cpan компилировал код C, используя ссылки на неправильную библиотеку perl 5.8.8, которая была несовместима при реализации базой perl 5.8.5.
Простым решением было вызвать правильную программу "cpan", используя полный путь "/usr/.../perl/5.8.5/bin/cpan module_name".
Это небольшое несоответствие того, что по умолчанию используются разные бинарные файлы разных пакетов версий, является упущением наших администраторов и действительно вызывает много горя.
Чтобы решить эту проблему, мне пришлось установить cpanm на Centos7.
Шаги:
yum install perl-devel
yum install perl-CPAN
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Добавить локальную корзину (/usr/local/bin
) к PATH
с помощью:
PATH=$PATH:/usr/local/bin
Ссылки
В моем случае мне нужно было запустить cpan с sudo -H, чтобы получить настройки локальной сети (например, прокси). Итак: cd && mv .cpan .cpan-bak
Тогда: sudo -H cpan
По умолчанию отвечал на конфиги cpan (на этот раз ошибки не появлялись).
Тогда я смог установить любой модуль.