Если нужно отслеживать одно и то же дерево исходных текстов
на множестве машин, то загрузка кода и полное перестроение
системы на каждой из них выглядит как ненужная трата ресурсов:
дискового пространства, пропускной способности сети и
процессорного времени. Решением является выделение одной машины,
которая выполняет основной объём работы, в то время как остальные
используют результаты работы посредством NFS.
В этом разделе описывается именно этот метод. Для получения
информации об использовании NFS обращайтесь в
Раздел 25.3, <
Первым делом определите набор машин, на которых будет
выполняться единый набор программ, который мы будем называть
набором для построения. Каждая машина
может иметь собственное уникальное ядро, но они будут работать
с одними и теми же программами пользователя. Из этого набора
выберите машину, которая будет являться машиной
построения, на которой будут строиться ядро и
всё окружение. В идеальном случае это быстрая машина с
достаточно незагруженным CPU для выполнения
команд make buildworld
и make
buildkernel
.
Выберите тестовую машину, которая будет выполнять проверку обновлений программного обеспечения, прежде чем они пойдут в работу. Это должна быть машина, которая может находиться в нерабочем состоянии достаточно долго. Это также может быть машина построения, но не обязательно.
Всем машинам в этом наборе для построения нужно смонтировать
/usr/obj
и /usr/src
по
NFS с машины построения. В случае нескольких
наборов для построения каталог /usr/src
должен находиться на одной машине построения и монтироваться на
остальных по NFS.
Удостоверьтесь, что /etc/make.conf
и
/etc/src.conf
на всех машинах в заданном
наборе для построения согласуются с машиной построения. Это
означает, что машина построения должна строить все те части
базовой системы, которые будут устанавливаться на каждой машине
из набора для построения. Кроме того, у каждой машины
построения должно быть задано имя ядра в переменной
KERNCONF
в /etc/make.conf
,
и машина построения должна перечислить их все в переменной
KERNCONF
, причём первым должно идти имя её
собственного ядра. Машина построения должна хранить
конфигурационные файлы ядра каждой машины в каталоге /usr/src/sys/
.arch
/conf
Постройте ядро и всё окружение на машине построения так,
как это описано в Раздел 21.6.3, <<Переменные и цели выполнения>>, но ничего
не устанавливайте на самой машине. Вместо этого, установите
собранное ядро на тестовой машине. Для этого смонтируйте
/usr/src
и /usr/obj
по NFS. Затем выполните команду
shutdown now
для перехода в
однопользовательский режим, для того чтобы установить новое ядро
и всё окружение, после чего выполните команду
mergemaster
обычным образом. После этих
действий перезагрузитесь для возврата к обычному режиму работы
в многопользовательском режиме.
После того, как вы убедитесь в нормальной работе всего на тестовой машине, проведите эту процедуру для установки нового программного обеспечения на каждой из оставшихся машин в наборе для построения.
Такой же подход можно использовать и для дерева портов.
Сперва нужно смонтировать /usr/ports
по
NFS на всех машинах в наборе для построения.
Чтобы настроить /etc/make.conf
для
использования общего каталога с дистрибутивными файлами,
задайте переменную DISTDIR
так, чтобы она
указывала на общедоступный каталог, доступный для записи тому
пользователю, который отображается в пользователя root
для точек монтирования
NFS. Каждая машина должна задавать
WRKDIRPREFIX
так, чтобы она указывала на
локальный каталог, если порты будут собираться локально. Если
же пакеты будут распространяться, задайте на машине построения
переменную PACKAGES
, чтобы она указывала на
каталог, соответствующий DISTDIR
.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.