Как установить модули Perl на компьютеры без подключения к Интернету?

Мне нужно установить мое программное обеспечение на основе Perl на сетевых компьютерах, которые не подключены к Интернету. Поэтому я хотел бы загрузить определенные версии и/или последние версии модулей Perl, и я также хотел бы узнать, требуется ли процедура установки для этих модулей.

Фон:
Машины не подключены к Интернету по соображениям безопасности, и его также считают ненужным.

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

Я вызываю машину, на которой я хочу установить свое программное обеспечение на основе Perl, на "целевую машину", также не подключенную к Интернету. Может быть несколько целевых машин, каждое из которых может запускать это программное обеспечение, которое я хочу установить. Я запишусь на целевую машину и запустил установку script, которая будет подключаться к установочному компьютеру через локальную сеть, чтобы получить программное обеспечение Perl и зависимые модули Perl и установить их.

Поэтому мне нужно знать:

  • Как/Где получить определенные версии модулей Perl, например. CGI.pm и т.д.
  • Как установить эти модули Perl. Это случай просто поместить их в каталог где-нибудь, например. путь к библиотеке и убедиться, что этот путь к каталогу находится в переменной окружения библиотеки @INC, если он еще не был?

Я бы предпочел не делать ничего подобного make install и т.д. как часть установки модулей. Я хотел бы, чтобы модули были предварительно скомпилированы или подготовлены по мере необходимости, поэтому их можно как можно проще установить. Я хочу избежать дополнительных зависимостей, таких как make и его конфигурация, и проанализировать его вывод, чтобы проверить, успешно ли он.

Пожалуйста, помогите мне, задав вышеуказанные конкретные вопросы, поскольку я не могу изменить концепцию "установочной машины" и "целевой машины", которые не подключены к Интернету, - я должен предоставить решение, которое работает в этом расположение.

Ответ 1

Обычный способ решить проблему "Я хочу установить вещи из CPAN, но без сети" - использовать мини-диск, как написал Дэвид Доорвар в своем ответе. Но так как вы продвигаетесь еще на один шаг, заявляя, что не хотите выполнять какую-либо реальную установку на клиентских (целевых) машинах вообще, и, если это возможно, вы хотите использовать предварительно скомпилированные модули, я настоятельно рекомендую вам проверить PAR и, в частности, PAR:: Репозиторий (сервер) и PAR:: Репозиторий:: Клиент.

Поскольку этот подход требует определенных исследований до того, как вы достигнете скорости, я бы не предложил его для "Мне просто нужно Foo.pm", как проблемы. Когда вы говорите о нескольких зависимостях и, по крайней мере, нескольких клиентах, тогда это становится более подходящим решением.

Для краткого описания того, как это работает, ознакомьтесь с слайдами моего выступления на YAPC:: EU 2008. Он также намекает на решения для проблема начальной загрузки, заключающаяся в создании доступного на сервере модуля PAR:: Repository:: Client (подсказка: PAR может генерировать автономные исполняемые файлы).

Ответ 2

Вы можете создать MiniCPAN, который имеет только самые последние версии всего от CPAN. Вы можете вставить в него дополнительные, непубличные модули с CPAN:: Mini:: Inject. Если вам нужно больше контролировать версии (т.е. Не выбирать последние версии), вы можете создать DPAN.

С помощью любого из этих решений вы можете настроить клиент CPAN для вытаскивания из вашего локального источника. Это может быть каталог, который вы знаете заранее, или что-то, что вы определяете динамически, например, компакт-диск или флеш-диск. Это просто вопрос правильной настройки конфигурации.

Возможно, вам удастся создать пакеты операционной системы для большей части вашей работы, но это все равно означает, что вы должны скомпилировать их, по крайней мере, в первый раз.

Ответ 3

1) Как/Где получить конкретные версии модулей Perl, например. CGI.pm и т.д.

http://search.cpan.org/

Если вам не нужна последняя версия, вы можете получить более раннюю версию, следуя ссылке в панировочных сухарях.

http://img.skitch.com/20091209-bu7kt3bj65374k7iijfnhrue2y.png

2) Как установить эти модули Perl. Это случай просто поместить их в каталоге где-то, например. путь библиотеки и убедитесь, что это путь к каталогу находится в переменной окружения библиотеки @INC, если это еще не?

Работа иногда, но вам действительно нужно пройти процесс perl Makefile.PL && make && make test && make install.

Выполнение этого потребует, чтобы вы вручную преследовали все зависимости. Вероятно, вам было бы лучше с чем-то вроде minicpan.