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

StackOverflow https://stackoverflow.com/questions/251705

Вопрос

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

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

Спасибо

Джей Ди

Это было полезно?

Решение

От перлфак8:Как мне сохранить свой собственный каталог модулей/библиотек?:

Когда вы создаете модули, сообщите 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 для получения подробной информации о том, как запустить недавно установленные Moudles.

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

Другие советы

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

Отрывок:

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

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

Загрузите пакет формы 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, найдите параллельную папку и получите полный путь к этому.

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

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

--Это должно сработать.

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

Информация содержится в вопросе 5 руководства CPAN (perldoc 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 вариант.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top