Я получил задание задокументировать, как установить очень сложное приложение на чистый сервер. Часть приложения требует большого количества скриптов Perl, каждый из которых требует множества различных модулей Perl.
Я не очень разбираюсь в perl и знаю только один способ установить необходимые модули. Это означает, что моя документация теперь выглядит так:
Введите каждую из этих команд и примите все значения по умолчанию:
sudo perl -MCPAN -e 'install JSON' sudo perl -MCPAN -e 'install Date::Simple' sudo perl -MCPAN -e 'install Log::Log4perl' sudo perl -MCPAN -e 'install Email::Simple' (.... continues for 2 more pages... )
Есть ли способ сделать всю эту одну строчку, как я, со способностями, т.е.
Введите следующую команду и идите выпить кофе:
sudo aptitude install openssh-server libapache2-mod-perl2 build-essential ...
Спасибо (от имени многострадальных людей, которые будут читать мой документ)
РЕДАКТИРОВАТЬ: лучший способ сделать это - использовать упакованные версии. Для модулей, которые не были упакованы для Ubuntu 10.10, я получил небольшой скрипт perl, который я нашел Вот )
#!/usr/bin/perl -w
use CPANPLUS;
use strict;
CPANPLUS::Backend->new( conf => { prereqs => 1 } )->install(
modules => [ qw(
Date::Simple
File::Slurp
LWP::Simple
MIME::Base64
MIME::Parser
MIME::QuotedPrint
) ]
);
Это означает, что я могу поместить в свой документ один красивый лайнер:
sudo perl installmodules.pl
В зависимости от вашего дистрибутива многие модули Perl могут быть уже упакованы.
Перед использованием CPAN проверьте, доступны ли некоторые / большинство / все необходимые пакеты для вашего дистрибутива.
Я обнаружил, что CPAN менее чем идеален для систем с длительным сроком службы, поскольку обновление модулей с течением времени кажется далеко не идеальным.
Я бы рекомендовал вместо этого использовать встроенную в вашу систему систему управления пакетами. Используя репозиторий для конкретного дистрибутива, вы должен меньше проблем с зависимостями, и по мере обновления модулей вы также получите новые версии. Поскольку вы, похоже, используете Ubuntu, вам может потребоваться включить некоторые дополнительные репозитории, такие как world, или metaverse, или uber-ultra-intraverse.
В противном случае существует относительно новый веб-сайт под названием Поиск пакетов Linux который пытается скомпилировать пакеты для всех типов систем. Мне повезло с поиском любых дополнительных пакетов, которые мне нужны, если они не были доступны где-либо еще.
Если вам нужно выполнить установку этих модулей из источника (что мне часто нужно, поскольку я устанавливаю их как пользователь без полномочий root в месте, отличном от системного стандарта), я рекомендую CPANPLUS в качестве стоящего обновления до стандартного CPAN - он обрабатывает разрешение зависимостей и может автоматически устанавливать все зависимости модуля, пока вы пьете кофе.
Кроме того, если это большое сложное приложение, которое вы устанавливаете, также распространяется по CPAN (я собираюсь сделать внешнее предположение, что это RT, всеобщий любимый кошмар зависимостей Perl), часто возникает Bundle::AppName
package на CPAN, в котором собрано все необходимое для данной версии приложения.
Надеюсь, это поможет; удачи!
Я бы создал модуль стиля задачи, который объединяет все ваши списки зависимостей в модуль стиля CPAN. Таким образом, вы можете использовать стандартные инструменты cpan для управления им. Например, вот такой комплект, который я часто использую (бессовестная вилка)
http://search.cpan.org/perldoc?Task::BeLike::JJNAPIORK
Возможно, вы могли бы просто взять что-то подобное и при необходимости изменить.
Кроме того, рассмотрите возможность использования local :: lib вместо глобального пути включения perl. Таким образом вы сможете лучше управлять своими депешами и вам не понадобится root. Вот ссылка на хорошую бесплатную книгу, которая охватывает это (среди прочего)
используйте системную функцию и используйте оператор && после каждой установки модуля, например
system("sudo apt-get install 1 && sudo apt-get install 2 &&....");