Как я могу избежать sudo-ing при установке модулей Perl с помощью cpan?

Я установил Perl из источника в / usr / local и соответствующим образом скорректировал свой путь, следуя предложение Брайана Д Фоя.

Я уверен, что мне что-то не хватает, но теперь я пытаюсь установить что-то с помощью команды cpan, и это не удается, потому что она не может писать в / usr / local. Мне приходится использовать sudo, что мне не нравится. Следует ли перемещать материалы CPAN в другое место? Это нормально - использовать sudo?


person AmbroseChapel    schedule 09.01.2010    source источник


Ответы (4)


Если вам действительно мешает использование sudo, вы можете использовать local::lib и установить модули в ваш домашний каталог - где вам не нужны привилегии суперпользователя.

Тем не менее, использование sudo не должно вас беспокоить. В этом нет ничего плохого. Как говорит Gbacon, он вам понадобится, если вы хотите установить в /usr/local, потому что /usr/local используется всеми пользователями системы (и поэтому его разрешения отражают это):

    telemachus ~ $ ls -ld /usr/local/
    drwxr-xr-x 17 root wheel 578 Jan  8 20:00 /usr/local/
person Telemachus    schedule 09.01.2010
comment
Проблема с local :: lib в том, что в то же время поддерживаются разные Perl. Если вы хотите полностью изолировать установки, как я предлагаю, вам не нужно устанавливать модули для разных perl в один и тот же каталог. - person brian d foy; 09.01.2010

Дерево /usr/local защищено. Совершенно нормально использовать sudo для установки там программного обеспечения.

Часто задаваемый вопрос - установка в отдельную библиотеку. См. «Как сохранить собственный каталог модулей / библиотек?» в разделе 8.

Ключевой отрывок:

Вы можете установить это в своей 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
person Greg Bacon    schedule 09.01.2010
comment
Я думаю, он уже этим занимается. Советов в FAQ для этого недостаточно. Есть опция mbuild_install_build_command и make_install_make_command, где вы можете установить sudo как команду для использования на этапе установки. - person brian d foy; 09.01.2010

Каталог / usr / local не должен быть доступен для записи обычным пользователям, но в установке Unix есть много возможностей для этого.

В своем совете я предложил настроить / usr / local / perls. Вы можете дать этому каталогу любые разрешения, которые захотите. Не применяйте разрешения к большему количеству каталогов, чем вам нужно.

Я предлагаю создать группу perl, добавить себя в эту группу и сделать группу каталогов библиотеки Perl доступной для записи. После настройки вам не нужно использовать sudo, потому что у вас есть разрешения для группы.

Кроме того, вы можете настроить конфигурацию CPAN.pm для использования sudo на этапах установки. Ознакомьтесь с командами make_install_make_command и mbuild_install_build_command в документации. Просто ищите «sudo», и вы их найдете.

Удачи, :)

person brian d foy    schedule 09.01.2010

В своей оболочке CPAN настройте ее для выполнения шагов make и build под sudo:

o conf make_install_make_command 'sudo make'
o conf mbuild_install_build_command 'sudo ./Build'
o conf commit
quit

(Я нашел этих здесь - я не гуру CPAN. )

person Sean McMillan    schedule 26.03.2012