Подтвердить что ты не робот

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

Я нахожусь на машине Linux, где у меня нет привилегий root. Я хочу установить некоторые пакеты через CPAN в мой домашний каталог, чтобы при запуске Perl он сможет его увидеть.

Я запустил cpan, в котором заданы некоторые параметры конгуляции. Он попросил какой-то каталог, который предложил ~/perl "для пользователей без полномочий root. Тем не менее, когда я пытаюсь установить пакет, он не работает на шаге make install, потому что у меня нет доступа на запись к /usr/lib/perl5/whatever.

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

4b9b3361

Ответ 1

См. local::lib.

После его установки вы можете:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

Ответ 2

Здесь описан способ perlfaq8, что означает local > lib для вас.

Это также часто задаваемый вопрос StackOverflow:

Любопытно, что ни один из них не предлагается, когда я использую ваш исходный заголовок вопроса (что является одной из причин того, что хороший заголовок очень важен для поиска вашего ответа).


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

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

Если вы хотите установить модули для собственного использования, самым простым способом может быть локальный:: lib, который вы можете загрузить из CPAN. Он устанавливает для вас различные параметры установки и использует те же настройки в ваших программах.

Если вам нужна большая гибкость, вам нужно настроить клиент CPAN для конкретной ситуации.

Для дистрибутивов на основе Makefile.PL используйте параметр INSTALL_BASE при создании Makefile:

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

Для дистрибутивов на основе Build.PL используйте параметр --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 сообщает, что эти инструменты помещают ваши модули в /mydir/perl/lib/perl 5. См. Как добавить каталог в мой путь включения (@INC) во время выполнения? для получения подробной информации о том, как запускать новые модули.

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