Как я могу использовать новый модуль Perl без разрешения на установку? - PullRequest
27 голосов
/ 30 октября 2008

Вот моя ситуация: я почти ничего не знаю о Perl, но это единственный язык, доступный на портирующем компьютере. У меня есть только разрешения на запись в моей локальной рабочей области, а не на место установки Perl. Мне нужно использовать модуль Perl Parallel :: ForkManager из CPAN

Как мне использовать этот Parallel :: ForkManager без центральной установки? Есть ли переменная окружения, которую я могу установить, чтобы она находилась?

Спасибо

JD

Ответы [ 10 ]

35 голосов
/ 31 октября 2008

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

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

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

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

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

perl Build.PL --install_base /mydir/perl

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

% cpan
cpan> o conf mbuild_arg --install_base /mydir/perl
cpan> o conf commit

INSTALL_BASE говорит этим инструментам поместить ваши модули в F. Смотрите L для деталей о том, как запустить ваш недавно установленные лопатки.

Однако есть одна оговорка с INSTALL_BASE, поскольку она действует отличается от настроек PREFIX и LIB, которые более старые версии ExtUtils :: MakeMaker выступает за. INSTALL_BASE не поддерживает установка модулей для нескольких версий Perl или разных архитектуры в том же каталоге. Вы должны рассмотреть, если вы действительно хочу этого, и если вы это сделаете, используйте старые PREFIX и LIB Настройки. Для получения дополнительной информации см. Документацию ExtUtils :: Makemaker.

6 голосов
/ 31 октября 2008

Оформить этот пост от Марка Домина

Выдержка:

  • Установите PREFIX = X при сборке Makefile
  • Установите INSTALLDIRS = vendor и VENDORPREFIX = X при создании Makefile
    • А может, вместо VENDORPREFIX вам нужно установить INSTALLVENDORLIB или что-то в этом роде
    • Или, может быть, вместо установки их при сборке Makefile, вам нужно установить их при запуске цели make install
  • Установить LIB = X / lib при сборке Makefile
  • Использовать PAR
  • Использовать local :: lib

Марк также предлагает другое решение в своем блоге, которое требует немного больше места для описания, но сводится к запуску make и make test, но не к make install, а затем к использованию материалов из blib /.

5 голосов
/ 20 февраля 2014

Загрузить форму пакета CPAN в папку:

wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz
gunzip Parallel-ForkManager-1.06.tar.gz
tar -xvf Parallel-ForkManager-1.06.tar

перед тем, как создать домашнюю папку для хранения локальных модулей, перейдите в загруженную папку и выполните следующие команды:

perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install

получить путь к ForkManager из установленной папки / home / username / myModules и найдите папку Parallel и получите полный путь к ней.

Теперь в вашем Perl-файле поместите их в начале

use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;

- Это должно сделать это.

4 голосов
/ 31 октября 2008

В командной строке есть переменная среды PERL5LIB и -I, когда дело доходит до использования модуля. Существуют механизмы сообщения CPAN и CPANPLUS.

В вопросе 5 руководства CPAN содержится информация (perldoc CPAN или посмотрите на CPAN ).

3 голосов
/ 31 октября 2008
use lib 'directory';
use Parallel::ForkManager;
2 голосов
/ 01 ноября 2014

использовать cpanm -l $DIR_NAME опция.

2 голосов
/ 27 августа 2012
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
2 голосов
/ 02 ноября 2008
2 голосов
/ 31 октября 2008

Вы можете использовать ключ командной строки -I (заглавная i), за которым следует каталог, в который вы поместите модуль; или попробуйте директиву use lib, а затем директорию.

0 голосов
/ 13 июня 2010

Рассмотрите возможность использования cpanminus, рекомендуемого для этой другой темы

...