Как я могу установить конкретную версию набора модулей Perl?

66

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

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

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

Теги:
module
version
cpan

6 ответов

37
Лучший ответ

Сделайте свое собственное зеркало 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, который поможет вам создать правильный индексный файл. Он еще немного молод, но опять же, если вам нужно что-то особенное, просто спросите.

  • 1
    Спасибо Брайан, я в настоящее время нахожусь в процессе создания локального мини-cpan, затем я добавлю в наши локальные модули + те, которые мне нужны, до определенных версий.
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 в разделе "как установить" РАЗРЕШЕНИЕ РАЗРЕШЕНИЯ "модуля?"

  • 0
    Ницца. Это позволило мне обойти проблему совместимости с сервером, который я пока не могу обновить. Спасибо!
  • 0
    я не думаю, что URL работает в эти дни. это делает, однако: backpan.perl.org
Показать ещё 3 комментария
12
cpan install App::cpanminus
cpanm Your::[email protected]

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

  • 0
    Это отличный ответ на конкретно , как «установить определенную версию модуля Perl» (как вопрос оказался в одной точке). Особенно, если вы уже используете cpanm.
  • 0
    Отлично: на debian-> aptitude install cpanminus
7

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

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

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

4

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

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

2

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню