Установка модулей Perl с большим количеством зависимостей на компьютере без доступа к сети CPAN

Я пытаюсь установить машину DateTime на сервер Linux. К сожалению, этот сервер Linux имеет некоторую политику ограниченного доступа к сети, которая запрещает мне использовать оболочку CPAN непосредственно для загрузки содержимого или установки cpanminus. Изменение политики доступа вне моего контроля, поэтому я ищу обходной путь. У меня также нет корневого доступа к этому серверу Linux.

Я могу, однако, загрузить что-нибудь на оконную машину моей работы и загрузить в файловый ресурс на этот сервер. Поэтому я начал один за другим удалять зависимости DateTime. Я бы загрузить модуль, то он будет иметь Makefile.PL иногда это будет Build.PL. Потом перебазироваться каждой сборки или Makefile для моего INSTALL_BASE, тест каждого модуля. Я сделал это примерно для 20 модулей,и деревья, похоже, расширяются до все меньших классов без конца...

Я надеюсь, что вы можете сказать мне, лучший способ. Есть ли способ, которым я могу инициировать загрузку с машины с доступом CPAN (т. е. мой Windows box) всех зависимостей DateTime в один гигантский пакет Perl, загрузите его на сервер Linux и запустите CPAN там (без доступа к сети), чтобы поместить вещи в нужное место? Спасибо.

4 ответов


самый эффективный способ - сделать minicpan, установить cpanm на машине linux и псевдоним localcpanmчто-то вроде этого:

alias localcpanm='cpanm --mirror file:///Users/Shared/cpan/ --mirror-only'

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


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

cpanm -L /dev/null --save-dists dists --scandeps DateTime

это генерирует список зависимостей, но, что более важно, загружает их в


есть некоторые решения для этой проблемы, см. например коробка это как упаковщик Руби или еще Пинто который стремится быть вашим собственным частным CPAN (как я понимаю).


одно решение, которое я использую на работе, - это иметь сервер разработки с perlbrew, один Perl + модули и приложение на приложение и все это в репозитории git. На производственных машинах доступ к репозиторию git-это все, что нужно для развертывания приложения и переключения между версиями с помощью тегов.