Как я могу использовать новый модуль Perl без разрешения на установку?
Вот моя ситуация: я почти ничего не знаю о Perl, но это единственный язык, доступный на портирующей машине. У меня только разрешения для записи в моей локальной рабочей области, а не в месте установки Perl. Мне нужно использовать Parallel:: ForkManager Модуль Perl из CPAN
Как использовать этот Parallel:: ForkManager без центральной установки? Есть ли переменная окружения, которую я могу установить так, чтобы она находилась?
Спасибо
JD
Ответы
Ответ 1
Из 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 для получения подробных сведений о том, как запустить свой новый
установленных moudles.
Существует одна оговорка с INSTALL_BASE, хотя, поскольку она действует
иначе, чем настройки PREFIX и LIB, что более старые версии
ExtUtils:: Защитник MakeMaker. INSTALL_BASE не поддерживает
установка модулей для нескольких версий Perl или разных
архитектуры в том же каталоге. Вы должны подумать,
действительно хотите, и если вы это сделаете, используйте более старые PREFIX и LIB
Настройки. Дополнительную информацию см. В документации ExtUtils:: Makemaker.
Ответ 2
Отметьте этот пост от Марка Домина
Выдержки:
- Установите PREFIX = X при создании Makefile
- Установите INSTALLDIRS = vendor и VENDORPREFIX = X при создании Makefile
- Или, может быть, вместо VENDORPREFIX вам нужно установить INSTALLVENDORLIB или что-то
- Или, может быть, вместо того, чтобы устанавливать их при создании Makefile, вам нужно установить их при запуске make make target
- Установить LIB = X/lib при создании Makefile
- Использовать PAR
- Использовать локальные:: lib
Mark также дает другое решение в своем блоге, которое занимает немного больше места для описания, но сводится к запуску make и делает тест, но не делает установку, а затем использует материал в blib/.
Ответ 3
Загрузить пакетную форму 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
перед этим создайте папку для дома, чтобы сохранить локальные модули, теперь перейдите в загруженную папку и запустите cmlands:
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
Здесь есть переменная среды PERL5LIB и -I
в командной строке, когда дело доходит до использования модуля. Существуют механизмы для показа CPAN и CPANPLUS.
В главе 5 руководства CPAN имеется информация (perldoc CPAN или посмотрите CPAN).
Ответ 5
use lib 'directory';
use Parallel::ForkManager;
Ответ 6
Вы можете использовать ключ командной строки -I
(capital i), за которым следует каталог, в который вы поместите модуль; или попробуйте директиву "use lib", за которой следует каталог.
Ответ 7
Да даже вы можете использовать CPAN
Ответ 8
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
Ответ 9
используйте параметр cpanm -l $DIR_NAME
.
Ответ 10
Рассмотрим использование cpanminus, предложенного в этом другом потоке