Как я могу установить локальные модули с помощью инструмента cpan?

мой администратор дал мне права sudo для

cpan

Мне также нужно установить пару модулей не-CPAN (Atlassian Crowd -> svn connector) в глобальный PERL5LIB.

Смутно помню, что cpan можно установить из локальных источников, не вытягивая модули из сети.

какие-нибудь указатели? могу я это сделать или я должен просто попросить его установить эти модули вручную как root (большая проблема для меня)? Благодарность!


person webwesen    schedule 09.10.2009    source источник


Ответы (3)


Если вы хотите установить дистрибутив Perl в текущий каталог, используйте точку вместо имени файла:

 cpan .

Если вы используете одну из последних версий программы cpan (не ту, которая в настоящее время поставляется с CPAN.pm), вы можете использовать переключатель -j, чтобы указать альтернативный файл конфигурации, в котором вы можете установить директивы --install_base или INSTALL_BASE, а также установить значения для таких параметров, как connect_to_internet_ok.

 cpan -j /path/to/Config.pm Foo::Bar

Если вы хотите изменить текущую конфигурацию для создания альтернативного файла конфигурации, используйте -J, чтобы получить текст файла:

 cpan -J

В идеале, вместо предоставления вам привилегий суперпользователя, этот системный администратор должен был бы создать группу для администраторов Perl, указать каталог для установок модулей, принадлежащих этой группе, и добавить вас в эту группу. Тогда тебе не понадобятся какие-то особые силы.

person brian d foy    schedule 09.10.2009
comment
ну .... $ cpan -J Неизвестный вариант: J Нечего устанавливать! $ cpan -j Неизвестный параметр: j Ничего не устанавливать! Спасибо, в любом случае - person webwesen; 10.10.2009
comment
Вот почему я сказал, что вам нужно установить последнюю версию. Какой вы используете? - person brian d foy; 10.10.2009
comment
Полностью согласен с решением Брайана о группе perl - это позволяет избежать лазейки в корневой оболочке, о которой я упоминал в моем комментарии (теперь с примером). - person Mark Aufflick; 10.10.2009

На самом деле вам не нужно, чтобы ваш администратор давал вам права на установку модулей CPAN. Фактически, local :: lib является лучшим решением по ряду причин.

person singingfish    schedule 09.10.2009
comment
local :: lib - не лучшее решение, если вы хотите установить модули для всех пользователей. - person brian d foy; 09.10.2009
comment
Что мне делать, если у меня вообще нет local :: lib? - person Ram; 07.12.2009

sudo права на cpan -i должны помочь:

bash-3.2$ cpan -i Foo::Bar
CPAN: File::HomeDir loaded ok (v0.80)
CPAN: Storable loaded ok (v2.18)
...

Я не знаком с установкой из файлов через скрипт cpan. В оболочке cpan вы можете look зайти в каталог модуля и вручную построить / установить оттуда, если хотите, но исходный tar-файл по-прежнему поступает из репозитория, а командная строка cpan, похоже, не имеет этой функции (если она была Я сомневаюсь, что администратор предоставит на него права sudo, поскольку тогда у вас будет корневая оболочка).

Обновление: Брайан д Фой предполагает, что я ошибаюсь, говоря, что давать sudo команде cpan это то же самое, что давать корневую оболочку - вот почему я прав:

bash-3.2# whoami
aufflick
bash-3.2# sudo cpan
cpan[1]> o conf shell bash
cpan[2]> look Acme::Bleach
..... downloads and extracts Acme::Bleach ...
CPAN: File::Temp loaded ok (v0.18)
Working directory is /Users/aufflick/.cpan/build/Acme-Bleach-1.12-v768Dv
bash-3.2# whoami
root
bash-3.2# 
person Mark Aufflick    schedule 09.10.2009
comment
я должен был быть более ясным. он дал мне sudo для cpan и sudo для ./Build - это позволяет мне установить в глобальный PERL5LIB - person webwesen; 09.10.2009
comment
Если вы укажете имя модуля, он всегда будет пытаться получить его с зеркала CPAN. - person brian d foy; 09.10.2009
comment
Программа cpan без каких-либо аргументов помещает вас в оболочку CPAN.pm. Однако это все еще не корневая оболочка. Вы можете взаимодействовать только с CPAN.pm. - person brian d foy; 09.10.2009
comment
вау ... вау ... вау ... я должен сказать своему админу, насколько он ошибается. большое спасибо - person webwesen; 11.10.2009