Я работаю над проектом, который требует установки всех perl-модулей сторонних производителей (чтение: CPAN) в репозитории perforce, так что любой код, который зависит от них, может быть успешно запускаются без необходимости установки вручную вручную. Я использую cpanminus для установки модулей CPAN, поэтому я запустил cpanm -L . Moose
в нужном каталоге и все было успешно установлено. Однако, когда я пытаюсь скомпилировать модуль, который я сделал с лосем, иногда я получаю эту ошибку:Использовать локально установленный модуль для использования локально установленных зависимостей
Undefined subroutine &Carp::longmess_heavy called at /usr/lib/perl5/5.8.8/Carp.pm line 235.
Она выглядит, хоть карп был установлена в мой локальный каталог с лосем, она, используя (устаревшее) версия в /user/lib/perl5/5.8.8
. Я мог бы модернизировать Carp на своей машине, но как только я проверю свой код в репозитории, все остальные с их устаревшими карпами столкнутся с той же проблемой. Итак, как заставить Моуз использовать локально установленный Карп, а не тот, который находится в /usr/lib/perl5/5.8.8
?
Это правильно, но не очень переносимо. Я бы рекомендовал использовать local :: lib. http://search.cpan.org/dist/local-lib/lib/local/lib.pm#The_bootstrapping_technique –
@misplacedme, 1) local :: lib просто неспособен. (На самом деле это чрезвычайно сложно использовать в скрипте входа.) 2) local :: lib использует INSTALL_BASE, который, как я считаю, ошибочен дизайном. – ikegami
Я стою исправлено. Я буду помнить об этом в следующий раз, когда мне нужно это сделать. –