Обновление мира ("world") FreeBSD


Автор: serge.

Обновленная версия статьи в которой постарался учесть все пожелания и замечания оставленные в коментариях. Рассматривается переход с версии 6.1 на 6.2.
Во FreeBSD имеется две ветки разработки: FreeBSD-CURRENT и FreeBSD-STABLE. FreeBSD-CURRENT является последними рабочими версиями исходных кодов FreeBSD и предназначена в первую очередь для разработчиков, тестеров и просто интересующихся людей. В отличие от FreeBSD-CURRENT ветка FreeBSD-STABLE является разработкой, из которой делаются основные релизы. Соответственно для использования на ответственных серверах рекомендуется FreeBSD-STABLE.
Для того чтобы иметь самые последние версии исходных текстов системы необходимо провести синхронизацию с любым из серверов проекта FreeBSD. Для этих целей воспользуемся утилитой cvsup с sup-файлом stable-supfile из каталога /usr/share/examples/cvsup. Это наиболее рекомендуемый метод, так как он позволяет вам загрузить набор исходных текстов один раз полностью, а затем загружать только произошедшие изменения. Если интернет трафик ограничен, то имеет смысл перенести исходные тексты с установочного диска и затем провести синхронизацию.
Копируем stable-supfile и приводим его содержание к следующему виду. server# cp /usr/share/examples/cvsup/stable-supfile /etc/
server# vi /etc/stable-supfile
# Выбираем cvsup сервер. Кому какой ближе.
*default host=cvsup2.ru.FreeBSD.org
*default base=/var/db
*default prefix=/usr
# Качаем исходные тексты 6.2 ветки. Если необходимо 5, 4, 3 или 2.2, то меняем на
# "RELENG_5", "RELENG_4", "RELENG_3", "RELENG_2_2" соответственно.
# Если не указывать версию в ветке (RELENG_6), то будут скачиваться исходники
# последней доступной версии, которая не обязательно может быть STABLE
# (на момент написания статьи это 6.2RC2).
*default release=cvs tag=RELENG_6_2
*default delete use-rel-suffix
# Включаем сжатие трафика
*default compress
# Качаем полное дерево исходников
src-all


Запускаем cvsup и ждем пока закончится обновление.
server# cvsup -g -L2 /etc/stable-supfile

Переходим в /usr/scr и начинаем процесс обновления. Запаситесь терпением, так как это занимает 1-2 часа на P4.server# cd /usr/src/
server# rm -rf /usr/obj
server# make -j4 buildworld

Где j4 - компилировать в 4 потока. Рекомендуется для однопроцессорных машин, т.к. компиляция в большей степени требовательная к системе ввода-вывода, а не процессору. Для многопроцессорных это значение можно увиличить.
Для настройки системы можно использовать make.conf. Пример смотрите здесь /usr/share/examples/etc/make.conf.server# make -j4 buildkernel KERNCONF=MYKERNEL

Где MYKERNEL - ваше ядро. Без KERNCONF=MYKERNEL собирается с ядром GENERIC. В следующей строке поступаем соответственно.server# make installkernel KERNCONF=MYKERNEL

Перезагрузимсяserver# reboot

Перейдем в однопользовательский режим. При загрузке жмем 4, либо из основного режима следующей командой.server# shutdown now

Монтируем разделы файловой системы.server# mount -u /
server# mount -a
server# mergemaster -p

Устанавливаем мирserver# cd /usr/src
server# make installworld

Удаляем временные файлыserver# make delete-old

Сравниваем конфигурационные файлыserver# mergemaster

Несколько слов о работе этой утилиты. Она сравнивает уже установленные файлы конфигурации с теми которые предлагаются новой версией FreeBSD. Если есть отличия, то на экране появляется сообщение об этом. Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия. Знаком "-" помечаются строки, которые утилита собирается удалить, а "+" - которые будут добавлены.
В конце предлагаются следующие варианты:
d - удалить предлагаемый вариант и оставить старый;
i - установить предлагаемый вариант, удалив старый;
m - сравнить построчно старый и предлагаемый вариант;
v - посмотреть отличия в файлах снова.
Чаще всего можно жать i, но иногда это может привести к замене ваших настроек на дефолтные. Так что будте внимательны. Например, у меня установлен exim, а mergemaster предложил вернуть файл /etc/mail/mailer.conf в первоначальное состояние. Это мне не нужно, поэтому выбираю m.
Начинается построчное сравнение файлов. Экран делится на две части, слева строки из старого файла, а справа из предлагаемого. При нажатии на "Enter" выводятся возможные варианты последующих действий:
l - использовать вариант слевой стороны;
r - использовать вариант справой стороны;
и т.д.
В моем случае, чтобы оставить старые настройки жмем "l". После того как сравнение кончилось, предлагаются следующие варианты:
i - установить получившийся файл;
r - повторить сравнение снова;
v - просмотреть получивщийся файл.
Возможен также вариант, когда с новой версией системы появляются новые файлы, которых до этого не было. В таком случае предлагается только 2 варианта:
d - удалить предлагаемый вариант и оставить старый;
i - установить предлагаемый вариант, удалив старый.
И в таком же духе сравниваются все файлы.
Перезагрузимсяserver# reboot
server# cd /usr/src/
server# make delete-old-libs

Все. Проверяем.server# uname -a
server# ... FreeBSD 6.2-RELEASE #0 ...

До обновления было FreeBSD 6.1-RELEASE-p10

http://www.lissyara.su/articles/freebsd/tuning/make_buildworld/

Обновлено: 12.03.2015