Как установить модуль CPAN в локальный каталог?

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

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

perl Makefile.PL
make test
make install

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

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

Ответ 1

У меня была аналогичная проблема, когда я даже не мог установить локальный:: 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

Ответ 2

Другие ответы уже на 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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

perl Makefile.PL INSTALL_BASE=/mydir/perl