2008-11-04 7 views
64

Мне поручено реплицировать производственную среду для создания множества сред тестирования/сита.Как установить определенную версию набора модулей Perl?

Одна из вещей, которые мне нужно сделать, - это создать Perl со всеми модулями, которые были установлены (включая внутренние и внешние модули) на протяжении многих лет. Я мог бы просто использовать автозагрузку CPAN.pm, но это приведет к тому, что тестовая среда будет иметь гораздо более новые версии внешних модулей, которые имеет производство.

Что является самым простым/лучшим способом получить и установить (многие) версии Perl-модулей.

ответ

36

Сделайте свое собственное зеркало CPAN именно тем, что вы хотите. Stratopan.com, сервис и Pinto, инструменты, которые построены сверху, могут помочь вам в этом.

Инструменты CPAN устанавливают самую последнюю версию любого дистрибутива, потому что PAUSE только индексирует последнюю версию. Однако вы можете создать свой собственный частный CPAN, который имеет именно те дистрибутивы, которые вы хотите. Когда у вас есть собственное зеркало CPAN только с тем, что вы хотите, вы указываете свои инструменты CPAN только на это зеркало, поэтому оно устанавливает только эти версии. Еще об этом через минуту.

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

Инструменты, такие как CPAN :: Mini :: Inject могут помочь вам настроить свой CPAN. Ознакомьтесь с my talks on Slideshare для основных примеров, а некоторые из my videos on Vimeo для некоторых демонстраций. Посмотрите на все, что имеет «CPAN» или «BackPAN» в названии. Я думаю, что у меня может быть кое-что об этом в The Perl Review тоже, или должно быть в следующем выпуске. :)

В последнее время я работал над программой под названием dpan (для DarkPAN), которая может просматривать произвольные каталоги, находить в них дистрибутивы Perl и создавать необходимые вам строковые и индексные файлы. Вы запускаете dpan, вы получаете URL-адрес, чтобы указывать клиенту CPAN, и вы уходите. Это часть моего проекта MyCPAN-Indexer, который находится в Github. Это не совсем готово к бесконтрольному общественному использованию, потому что я в основном работаю с корпоративными клиентами, чтобы настроить их настройку. Если вы заинтересованы в этом, не стесняйтесь задавать мне вопросы.

Кроме того, я недавно выпустил CPAN::PackageDetails, который может помочь вам построить правый индексный файл. Он все еще немного молод, но опять же, если вам нужно что-то особенное, просто спросите.

+1

Спасибо Брайан. В настоящее время я собираюсь создать локальный мини-cpan, затем я буду вводить в наши локальные модули + те, которые мне нужно понизить до определенных версий. – 2008-11-04 08:34:33

101

bdfoy имеет лучшее решение крупномасштабного масштаба, но если вы просто хотите установить несколько модулей, вы можете попросить оболочку CPAN установить конкретный дистрибутив, указав путь к tarball (относительно вершины дерева CPAN) ,

cpan> install MSCHWERN/Test-Simple-0.62.tar.gz 

Вставьте URL-адрес BackPAN в список URL-адресов, и вы можете установить любую более старую версию.

cpan> o conf urllist push http://backpan.perl.org/ 

Это в CPAN.pm FAQ под «как я могу установить„Разработчик RELEASE“модуль?»

+0

Ницца. Это позволяет мне решить проблему совместимости с сервером, который я пока не могу обновить. Благодаря! – 2010-08-24 00:36:10

+0

Я не думаю, что URL-адрес работает в эти дни. это один из них: http://backpan.perl.org/ – flamey 2011-11-24 21:00:55

7

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

Carton стоит упомянуть здесь.Carton - сравнительно недавний инструмент в том же стиле, что и App::cpanminus, App::cpanoutdated, perlbrew, et. и др. Автор (Miyagawa) называет это «альфа» качеством, но даже в своей нынешней картонной коробке помогает упростить обслуживание нескольких сред модулей, настроенных на версию, на разных машинах.

Pinto также является еще одним последним инструментом, относящимся к некоторым ответам (на самом деле один из респондентов является автором).

4

Stratopan.com - еще одна альтернатива. Stratopan предоставляет частные CPAN в облаке. Вы можете заполнить репозиторий Stratopan конкретными версиями модулей (и их зависимостями), а затем установить их, используя стандартную цепочку инструментов Perl. Репозиторий изменяется только тогда, когда вы меняете, чтобы изменить его, чтобы вы всегда получали версии модулей, которые вы хотите.

Отказ от ответственности: Я управляю Стратопаном.

14
cpan install App::cpanminus 
cpanm Your::[email protected] 

(коробки, как указано в других ответах, использует cpanm под разрешить явные требования к версии.)

2

кажется, что создание cpanfile перечисляя все модули и требуемые версии (используя == <version> синтаксис для заблокировать его до определенного выпуска) тоже может хорошо служить здесь. Это будет означать использование Carton или cpanm для установки модулей.

Выполнение этого было бы полезно, если бы вы могли быстро/легко настроить файл, чтобы протестировать обновление определенных модулей в среде разработчика или промежуточной среды - то, что не позволяло бы вам делать собственное зеркало CPAN (без создания нескольких зеркал) ,