Как я могу установить модуль CPAN в локальный каталог? - PullRequest
60 голосов
/ 12 февраля 2009

Я использую хост-машину Linux, поэтому у меня нет прав на запись в каталог /usr/lib.

Когда я пытаюсь установить модуль CPAN, выполняя обычные действия:

perl Makefile.PL
make test
make install

Этот модуль извлекается в папку blib/lib/. Я сохранил use blib/lib/ModuleName, но это все еще компилятор говорит, что модуль не может быть найденный. Я попытался скопировать файл .pm в локальный каталог и сохранил require ModuleName но все равно это дает мне какую-то ошибку.

Как установить модуль в другой каталог и использовать его?

Ответы [ 5 ]

61 голосов
/ 13 февраля 2009

Другие ответы уже на Stackoverflow:

Из perlfaq8:


Как мне сохранить собственный каталог модуля / библиотеки?

Когда вы собираете модули, скажите Perl, где устанавливать модули.

Для дистрибутивов на основе Makefile.PL используйте опцию INSTALL_BASE при генерации Makefile:

perl Makefile.PL INSTALL_BASE=/mydir/perl

Вы можете установить это в конфигурации CPAN.pm, чтобы модули автоматически устанавливались в каталог вашей частной библиотеки при использовании оболочки CPAN.pm:

% cpan
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
cpan> o conf commit

Для дистрибутивов на основе Build.PL используйте параметр --install_base:

perl Build.PL --install_base /mydir/perl

Вы можете настроить CPAN.pm на автоматическое использование этой опции:

% cpan
cpan> o conf mbuildpl_arg '--install_base /mydir/perl'
cpan> o conf commit
36 голосов
/ 12 февраля 2009

У меня была похожая проблема, когда я даже не смог установить local :: lib

Я создал установщик, который установил модуль где-то относительно файлов .pl

Установка идет как:

perl Makefile.PL PREFIX=./modulos
make
make install

Затем в файле .pl, для которого требуется модуль, который находится в ./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path
use module::name;

Остальные файлы (makefile.pl, module.pm и т. Д.) Не требуют изменений.

Вы можете вызвать файл .pl просто

perl file.pl
19 голосов
/ 12 февраля 2009

local :: lib поможет вам. Он убедит "make install" (и "Build install") установить в каталог, в который вы можете написать, и сообщит perl, как получить эти модули.

В общем, если вы хотите использовать модуль, который находится в каталоге blib /, вы хотите сказать perl -Mblib ..., где ... - это то, как вы обычно вызываете свой скрипт.

3 голосов
/ 19 июля 2014

Для дистрибутивов на основе Makefile.PL используйте опцию INSTALL_BASE при генерации Makefile:

perl Makefile.PL INSTALL_BASE=/mydir/perl
3 голосов
/ 31 августа 2013

Я настоятельно рекомендую Perlbrew . Он позволяет вам запускать несколько версий Perl, устанавливать пакеты, взламывать внутренние компоненты Perl, если хотите, все обычные права пользователя.

...