Как я могу установить конкретную версию набора модулей Perl? - PullRequest
70 голосов
/ 04 ноября 2008

Мне поручено тиражировать производственную среду для создания множества тестовых / сидячих сред.

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

Какой самый простой / лучший способ получить и установить (множество) специфичных для версии модулей Perl.

Ответы [ 6 ]

104 голосов
/ 06 ноября 2008

bdfoy - лучшее крупномасштабное решение, но если вы просто хотите установить несколько модулей, вы можете попросить оболочку CPAN установить конкретный дистрибутив, указав путь к тарболу (относительно вершины дерева 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 в разделе «Как установить« РАЗРАБОТЧИК РАЗРАБОТЧИКОВ »модуля?»

37 голосов
/ 04 ноября 2008

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

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

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

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

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

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

29 голосов
/ 30 мая 2015
cpan install App::cpanminus
cpanm Your::Module@1.23

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

9 голосов
/ 14 июня 2013

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

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

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

4 голосов
/ 06 декабря 2013

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

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

2 голосов
/ 22 марта 2016

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

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

...