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

я использую размещенную Linux-машину, поэтому у меня нет разрешений на запись в .

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

perl Makefile.PL
make test
make install

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

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

5 ответов


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

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

установка проходит так:

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 модуль.pm и т. д.) не требуют изменений.

вы можете позвонить .PL файл только с

perl file.pl

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

из perlfaq8:


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

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

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

perl Makefile.PL INSTALL_BASE=/mydir/perl

вы можете установить это в своем CPAN.PM configuration so модули автоматически устанавливаются в каталог частной библиотеки при использовании CPAN.pm shell:

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

Для Сборки.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

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

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


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


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

perl Makefile.PL INSTALL_BASE=/mydir/perl