Ситуации бывают разные. Как-то раз мне пришлось устанавливать WEB-сервер там, где в общем-то доступ в Интернет не очень широкий, поэтому стандартные установки из портов заняли очень много времени. И тут я подумал, что, в общем-то ничто ведь не мешает сохранить все пакеты, скачанные один лишь раз и потом использовать их, устанавливая буквально за секунды.
Будем делать свой дистрибутив пакетов.
Надо сказать, что установка приложения из пакета происходит ещё быстрее, чем из порта, по команде:
# pkg_add <имя пакета>
Или, если, например, пакета у нас нет, и нужно стянуть его с репозитария, то указывается ещё ключик -r, и просто имя пакета. Всё скачается и поставится само.
Проверить, какие пакеты у нас сейчас установлены, можно так:
# pkg_info
Как видим, пакетов никаких пока не установлено. Подготовим единожды машину, на которой установлены все интересующие нас пакеты, то есть установленные там Apache, PHP с компонентами посредством установки из портов.
Как установить программу из порта я уже описывал. В общем виде это делается так (например, нужен Apache22)
# whereis apache22
apache22: /usr/ports/www/apache22
# cd /usr/ports/www/apache22
# make install clean
Дальше отвечаем на несколько конфигурационных диалоговых окон и всё! Апач установлен. Нетрудно заметить, что после этого утилита pkg_info начнет отдавать этот пакет в общем списке:
Вот тут у меня ещё версия 1.3 установлена. Ну не суть важно. Таким образом мы напичкаем систему разными пакетами. Как же теперь нам их вытащить и перенести на другую (а в идеале записать на CD или USB диск и таскать с собой)?
На помощь нам приходит утилита pkg_create
# pkg_create -jb apache-1.3.42_1
Создаст в текущей папке .tbz-архив с пакетом установки апача. Что мы делаем теперь? Теперь мы “бэкапим” все установленные пакеты и переносим их на целевую машину.
Для этого я написал такой скриптик:
#!/bin/sh
# script name: backup_pkg.sh
# autor: seqular [litl-admin.ru]
TMP=/tmp/dist
cd ${TMP}
for item as `pkg_info | awk ‘{print $1}’` do
pkg_create -jb ${item}
done
И у нас в папке /tmp/dist при запуске этого скрипта окажутся все *.tbz архивы пакетов, установленных в системе. Переносим их на наш новый сервер вместе с файликом install_pkg.sh
#!/bin/sh
# script name: install_pkg.sh
# autor: seqular [litl-admin.ru]
TMP=/tmp/dist
cd ${TMP}
for item as `ls *.tbz` do
pkg_add ${item}
done
Просто, не правда ли?
Таким образом я собрал собственный набор нужных программ и пакетов, который устанавливается (вместе с установкой ОС FreeBSD 8.2 с нуля) около 20 минут. Осталось прописать только несколько параметров в httpd-конфиге и всё будет работать!
Советую заглянуть так же на:
Записки сисадмина – быстрое решение сложных вопросов – есть информация по FreeBSD
Comments: