2009-11-05 2 views
3

Я недавно начал разработку Perl и использовал CPAN для установки всех моих пакетов. Мне было интересно, есть ли какие-то «лучшие практики» для управления требуемыми пакетами для скрипта или приложения. До сих пор я делаю это неэлегантным и громоздким способом. У меня есть скрипт, который выглядит следующим образом:Как установить сразу несколько дистрибутивов CPAN?

install Foo::Bar 
install Zulu::Car 
... 

, а затем я

$perl -MCPAN -e shell < mycpan.foo 
+0

Я закончил с использованием модуля :: Установил и создал Makefile.PL формы: use inc :: Module :: Install; .. требует: Foo :: Bar; требует «Зулу :: Автомобиль»; .. – ankimal

ответ

1

Я не был бы счастлив, если бы я скачал скрипт и он автоматически устанавливается несколько пакетов CPAN. Обычная вещь - просто перечислить зависимости в документации и позволить пользователю самостоятельно устанавливать их в любом случае, как он предпочитает.

Если вы создаете модуль CPAN самостоятельно, существует стандартный способ обозначать зависимости в сценарии установки CPAN, который создается для вас с вашим распространителем (например,или Module::Install).

+0

Почему downvote? – Ether

+1

Не нужно использовать wetware для этого, это последнее средство –

4

Даже если вы не загружаете его, создайте приложение как модуль CPAN.

Это означает, что у вас есть Makefile.PL, который формально описывает зависимости, а ваше приложение находится в каталоге script/как myapplication (при условии, что это приложение командной строки/рабочего стола).

Тогда кто-то может использовать клиент CPAN для установки модуля и его зависимостей непосредственно, но распаковка тарболла и затем запустить

CPAN.

В качестве альтернативы инструмент pip позволит людям напрямую установить приложение с удаленного URL-адреса.

пип http://someserver.com/Your-Application-0.01.tar.gz

+0

Как вы могли забыть упомянуть о задаче? :) –

-1

Я обнаружил, что для крупномасштабных производственных систем, опирающихся на исходный код третьих сторон, таких как CPAN для развертывания производства нецелесообразно. Поэтому я всегда использовал такую ​​систему, как apt, rpm или GNU stow для создания пакетов для всех зависимостей системы, а затем сценарий развертывания, который использует диспетчер пакетов для развертывания всех необходимых пакетов на рабочих серверах.

+0

Почему downvote? – nohat

2

Вот почему Task::* Распространение существует. Вы перечисляете все дистрибутивы, которые вы хотите установить в качестве зависимостей в своем распределении Task ::. Сам дистрибутив Task ничего не дает.

Если вы находитесь внутри каталога, в котором вы создали задание:

$ cpan . 

Если у вас есть вам задачу в MiniCPAN или DPAN, то вы можете установить его по имени:

$ cpan Task::WhateverYouCalledIt 

Как только CPAN.pm получит его, он автоматически установит все зависимости.