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

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

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

Спасибо

JD

10 ответов

Решение

От perlfaq8: Как мне сохранить мой собственный каталог module/library?:

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

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

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 для получения более подробной информации.

Загрузите пакет формы 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;

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

Проверьте этот пост от Марка Домина

Выдержка:

  • Установите 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/.

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

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

use lib 'directory';
use Parallel::ForkManager;

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

perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl

Использование cpanm -l $DIR_NAME вариант.

perlbrew позволяет использовать локальный Perl и устанавливать его пакеты в локальный каталог.

\curl -L https://install.perlbrew.pl | bash

perlbrew init  # put this in .bash_profile etc

perlbrew install 5.27.11

perlbrew switch 5.27.11

См. Также https://opensource.com/article/18/7/perlbrew.

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

Другие вопросы по тегам