2014-02-18 4 views
0

Мне нужен скрипт perl, который будет автоматически устанавливать все модули cpan при запуске скрипта perl. Можете ли вы помочь этому?Установить модули cpan через perl-скрипт?

+0

Какая платформа вы? Я могу сделать предложение, как это сделать на linux, но это не строго perl-based. – Jeef

+0

На самом деле я сейчас работаю в Windows, но если вы можете сказать в Linux, то и это нормально для меня. – user3248333

ответ

2

Клиент CPAN - это всего лишь Perl module, который обернут инструментом командной строки. Поэтому вы вызываете его непосредственно из скрипта Perl.

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

Достаточно разумное решение - потребовать от ваших пользователей установить cpanm client и указать свои зависимости в cpanfile. Затем ваши пользователи должны сделать только cpanm --installdeps /dir/of/your/script.

Но если мы уже переживаем все эти проблемы, вы также можете создать надлежащее распределение CPAN. Вам не нужно загружать его в CPAN, но вы можете распространять tarball и устанавливать его пользователями. У этого есть много преимуществ: Зрелые инструментальные цепочки, автоматическое тестирование и замечательные помощники, такие как Dist::Zilla, которые делают создание бриза.

+0

Как я могу записать результат установки – user3248333

+1

Посмотрите на источник для инструмента 'cpan'. Это просто программа Perl. –

+0

Я нахожусь на победе 7. И я до сих пор не знаю, как вы ответили на вопрос OP. Мне нужно установить несколько модулей внутри моего скрипта во время выполнения на ПК пользователей. Я также попробовал предложение ниже, и это не сработало. Мой perl жаловался, что мне не хватает CPAN :: Shell. Я нахожусь на perl ver 5.18.2. Если скрипт для установки отсутствующих модулей требует от пользователей установки другого модуля 'cpanm', то что-то не так с этим предложением? Я не могу ожидать, что мои пользователи установят что-то простое приложение, такое как Firefox или Chrome. – YouHaveaBigEgo

1

Использование CPAN::Shell, из документации:

CPAN::Shell->install("Acme::Meta"); 
+0

любая возможность устанавливать зависимости модуля perl через CPAN :: Shell в perl-скрипте – user3248333

+0

Я хочу добавить прокси для cpanmodule через perl-скрипт ,как мне это сделать? – user3248333

+1

Прочитайте документацию, в которой четко указано, как это сделать. Если вы хотите использовать этот инструмент, прочитайте руководство –

Смежные вопросы