CPAN дает всевозможные ошибки в Ubuntu - PullRequest
2 голосов
/ 29 июля 2011

Я просто пытаюсь запустить простую 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

Я что-то не так делаю? Я пытался найти эти ошибки, но ни у кого нет правильного решения. Есть ли какие-то настройки в конфиге, которые я должен изменить?

Ответы [ 5 ]

13 голосов
/ 29 июля 2011

Если ни у кого нет ответа на вашу конкретную проблему, я, вероятно, просто попробую с новым cpan, что-то вроде:

cd && mv .cpan .cpan-bak

, а затем снова попытаюсь установить модуль.

Надеюсьэто помогает.

4 голосов
/ 25 сентября 2012

У меня была похожая проблема.

Положение:

пытается установить Catalyst :: Plugin :: AutoCRUD

с использованием версии perl: perlbrew-5.14.2

решение:

проблема заключалась в том, что sudo я предваривал к команде установки cpan следующим образом:

НЕ РАБОТАЛ:

sudo cpan Catalyst::Plugin::AutoCRUD

РАБОТАЕТ:

chown -R myusername:myusergroup ~/.cpan
cpan Catalyst::Plugin::AutoCRUD

Причина: поскольку у меня установлена ​​учетная запись perlbrew + cpan под моей учетной записью пользователя, а не как root, все последующие установки модуля cpan должны выполняться одним и тем же пользователем.

2 голосов
/ 12 сентября 2012

Убедитесь, что ваша версия "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 ".

Это небольшое несоответствие того, что по умолчанию используются разные двоичные файлы пакетов разных версий, является упущением наших администраторов и действительно вызывает много горя.

2 голосов
/ 28 мая 2012

У меня была такая же проблема, когда истекло время подключения к сайту perl./root/.cpan/sources/modules/02packages.details.txt.gz содержал только информацию о том, что время ожидания сети превышено, а /root/.cpan/sources/modules/03modlist.data.gz также был нежелательным.

Удаляя только эти файлы и повторяя попытку, когда сеть была менее загружена, файлы затем выбирались правильнои все снова заработало нормально.

0 голосов
/ 01 марта 2019

В моем случае мне нужно было запустить cpan с sudo -H, чтобы получить настройки локальной сети (например, прокси).Итак: cd && mv .cpan .cpan-bak

Затем: sudo -H cpan

По умолчанию отвечает на настройки cpan (на этот раз ошибки не появляются).

Тогда я смог установить любой модуль.

...