Как я могу использовать новый модуль Perl без разрешения на установку?
-
05-07-2019 - |
Вопрос
Вот моя ситуация:Я почти ничего не знаю о 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, предложенного на эта другая тема