Я использую размещенную машину Linux, поэтому у меня нет прав на запись
в каталог /usr/lib
.
Когда я пытаюсь установить модуль CPAN, выполняя обычное:
perl Makefile.PL
make test
make install
Этот модуль извлекается в папку blib/lib/
. Я сохранил use
blib/lib/ModuleName
, но он все еще компилятор говорит, что модуль не может быть
найденный. Я попытался скопировать файл .pm в локальный каталог и сохранил
require ModuleName
, но все же это дает мне некоторую ошибку.
Как я могу установить модуль в другой каталог и использовать его?
У меня была аналогичная проблема, когда я даже не мог установить локальный:: 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
use lib
. local :: lib позаботится об этом за вас - следуйте его инструкциям и все будет в порядке.
Другие ответы уже на 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
o conf mbuild_arg '--install_base /mydir/perl'
local::lib поможет вам. Он убедит "make install" (и "Build install" ) установить в каталог, в который вы можете писать, и он расскажет perl
, как получить эти модули.
В общем случае, если вы хотите использовать модуль, находящийся в каталоге blib/, вы хотите сказать perl -Mblib ...
, где ...
- это то, как вы обычно вызываете свой script.
Я настоятельно рекомендую Perlbrew. Он позволяет запускать несколько версий Perl, устанавливать пакеты, взломать внутренние компоненты Perl, если вы хотите, все обычные разрешения пользователя.
Для дистрибутивов на основе Makefile.PL используйте параметр INSTALL_BASE при создании Makefile:
perl Makefile.PL INSTALL_BASE=/mydir/perl