Почему я не могу найти модули Perl после обновления до Intrepid Ibex Ubuntu?
Вчера я обновился до Ubuntu Intrepid Ibex, и внезапно некоторые из установленных мной модулей Perl (на Hardy Heron) пропали!
Я получаю обычную ошибку "Не удается найти модуль в @INC". Изменились ли какие-либо репозитории CPAN или что-то для Intrepid? Google не помогает вообще.
Заранее спасибо.
4 ответа
Стандартное решение состоит в том, чтобы сгенерировать "autobundle" с CPAN.pm перед обновлением Perl. Поиск autobundle дает ссылки на несколько существующих вопросов SO, в которых обсуждается управление модулями Perl, и некоторые из них, которые выглядят так, как будто они должны предоставить больше информации. Руководство по CPAN.pm затрагивает автоматическое расслоение, но не содержит подробностей.
Поскольку вы уже обновили Perl, одним из решений для установки ваших модулей было бы создание файла автоматического объединения и использование записей в созданном файле в качестве руководства для написания специального файла автоматического объединения с записями для ваших модулей (только). Формат файла autobundle - просто POD, так что это должно быть легко сделать.
В будущем вам, вероятно, следует выработать привычку создавать автобандл перед обновлением Perl. Это не идеальное решение, в автобандл будут входить записи для основных модулей, которые необходимо будет удалить перед сборкой, но по крайней мере у вас будет снимок установленных модулей Perl, чтобы вы могли исправить установку Perl. после обновления.
Ваша установка Perl была изменена с версии 5.8 на 5.10. Поскольку многие из модулей, которые вы хотите, находятся в директориях, зависящих от версии perl, вы можете переустановить их с помощью инструментов CPAN (например, cpan
команда).
Но так как вы используете Ubuntu, имейте в виду, что многие многие библиотеки CPAN также распространяются через менеджер пакетов Ubuntu, и пакеты CPAN устанавливаются не в том месте, где их устанавливает Ubuntu (это прозрачно для пользователя, поскольку обе в @INC
пути).
Я рекомендую использовать пакеты Ubuntu, когда они доступны, потому что они будут обновляться менеджером пакетов (APT), когда новые будут выпущены на центральных серверах пакетов. Формат имени немного отличается. Вот два способа установить один и тот же пакет из разных источников:
$ cpan List::MoreUtils # installs latest from CPAN
$ sudo apt-get install liblist-moreutils-perl # installs latest from Ubuntu universe
Преимущество последнего в том, что оно будет обновлено sudo apt-get update
,
Perl изменился на Intrepid.
До обновления у вас был Perl 5.8, теперь у вас есть 5.10.
Вероятно, /usr/lib/perl5/5.10.* используется вместо /usr/lib/perl5/5.8.8, так как версия Perl изменилась