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

58

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

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

perl Makefile.PL
make test
make install

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

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

  • 1
    В общем, вы должны предоставить сообщение об ошибке. «Некоторая ошибка» мало помогает.
Показать ещё 1 комментарий
Теги:
module
install
cpan

5 ответов

32
Лучший ответ

У меня была аналогичная проблема, когда я даже не мог установить локальный:: 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
  • 13
    Нет причин изменять ваш скрипт - установите PERL5LIB вместо use lib . local :: lib позаботится об этом за вас - следуйте его инструкциям и все будет в порядке.
  • 9
    используйте INSTALL_BASE вместо PREFIX.
Показать ещё 3 комментария
61

Другие ответы уже на 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
  • 1
    Я думаю, что вы должны добавить кавычки: o conf mbuild_arg '--install_base /mydir/perl'
  • 4
    Я думаю, что люди, которые находят проблемы, должны редактировать сообщение. :)
Показать ещё 5 комментариев
19

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

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

  • 0
    Я действительно рекомендую вам использовать local :: lib. Он заботится обо всех мелких деталях.
  • 0
    К сожалению, он не проходит «make test», когда я пытаюсь его установить.
3

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

  • 0
    Ссылка мертва?
2

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

perl Makefile.PL INSTALL_BASE=/mydir/perl

Ещё вопросы

Сообщество Overcoder
Наверх
Меню