21.7. Отслеживание исходных текстов для нескольких машин

Текст предоставил Mike Meyer.

Если нужно отслеживать одно и то же дерево исходных текстов на множестве машин, то загрузка кода и полное перестроение системы на каждой из них выглядит как ненужная трата ресурсов: дискового пространства, пропускной способности сети и процессорного времени. Решением является выделение одной машины, которая выполняет основной объём работы, в то время как остальные используют результаты работы посредством 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>.