The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Централизованное обновление портов и системы FreeBSD"
Отправлено newser, 22-Июн-05 12:15 
>Здравствуйте.
>Хочу решить следующую задачу по оптимизации процесса обновления дерева портов и исходников
>системы FreeBSD не нескольких серверах.
>В сети работает несколько серверов под управлением ОС FreeBSD. Каждый сервер подключен
>к интернету. Дело в том, что обновлять отдельно каждый как-то не
>выгодно финансово, посколько приходится за одно обновление платить в несколько раз
>больше.
>Скажите, каким образом можно организовать следующую схему:
>один сервер будет обновляться по интернету, а остальные сервера будут обновляться уже
>с первого сервера. Тогда учитывая, что трафик локальный бесплатный, платить придется
>только один раз.
>Может у кого-то реализованы подобные схемы? Пожалуйста, поделитесь опытом.


Первым делом советую почитать man development.
У меня это организовано примерно так:

На основном сервере есть каталог /FreeBSD, в котором располагается полное дерево CVS от FreeBSD (/FreeBSD/FreeBSD-CVS). Оно обновляется по CVSup раз в сутки, можно и чаще. Потом cvs'ом получаю каталог /FreeBSD/ports, в котором содержатся соответственно порты:

cd /FreeBSD; cvs -d /home/ncvs co -A -P ports

/home/ncvs - это симлинк на /FreeBSD/FreeBSD-CVS.
Есть каталог /FreeBSD/FreeBSD-5.4, где опять же cvs'ом с тегом RELENG_5_4 получен каталог src:

mkdir /FreeBSD/FreeBSD-5.4
cd /FreeBSD/FreeBSD-5.4
cvs -d /home/ncvs co -P -rRELENG_5_4 src

Таким образом можно наплодить каталогов для разных веток. Далее кидаются симлинки:

ln -s /FreeBSD/ports /usr/ports
ln -s /FreeBSD/FreeBSD-5.4/src /usr/src

Создается каталог для дистфайлов:

mkdir /distfiles

У меня он вынесен на отдельный раздел, почему - объясню позже. Далее

ln -s /distfiles /usr/ports/distfiles

После чего создаем еще один каталог (у меня он тоже на отдельном разделе):

mkdir -p /build/obj
ln -s /build/obj /usr/obj

После этого можно расшарить по NFS каталоги /FreeBSD (read-only), /build (read-only) и /distfiles (read-write).

Теперь можно собрать систему:

cd /usr/src
make buildworld
make buildkernel KERNCONF=...

На других серверах примонтируем mainserver:/FreeBSD mainserver:/build mainserver:/distfiles кидаем соответствующие симлинки для /usr/ports, /usr/src и /usr/obj и можно просто

cd /usr/src
make installkernel KERNCONF=...
make installworld

Правда, этот процесс оказывается чуточку сложнее, но суть такова.
Далее, идем в любой порт и делаем make, который кладет дистфайлы в /distfiles (именно поэтому он расшарен в read-write).

Таким образом достигается:

1. Централизованное хранение исходников (src) и портов (ports)
2. Централизованное хранение distfiles
3. Сборка мира осуществляется на одной машине (mainserver) (если, конечно в /etc/make.conf на всех машинах прописано примерно одно и то же).
4. Т.к. сборка делается только в одном месте, уменьшаются накладные расходы.

В кратце все, надеюсь объяснил доступным языком.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру