Давно была необходимость обновить FreeBSD, но как то опасался делать это на боевой машине (хостинговой). Думал какой бы метод выбрать, то ли бинарное то ли из исходников, подумав решил что более гибкое решение будет обновление из исходников с помощью программы — cvsup.
К стате ставится cvsup очень просто:
cd /usr/ports/net/cvsup-without-gui
make install clean
rehash
Это для тех у кого нет GUI, у кого он есть ставим просто cvsup.
И так едем дальше, нам надо создать файл конфига параметров.
Открываем файл (если файла нет то он создастся автоматически)
ee /etc/supfile
И вносим туда примерно такие строки:
*default host=cvsup3.ua.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix
*default tag=RELENG_7_3
src-all
где RELENG версия до которой нужно обновится
Сохраняем, и у нас все готово для запуска обновления, запускаем:
cvsup /etc/supfile
Данный процесс может отнять немало времени.
Теперь нужно собрать мир и ядро
Перед этим чистим удаляем все в /usr/obj следующей командой:
cd /usr/src/
rm -R /usr/obj/*
Выполнять cleandir рукокнига рекомендует именно 2 раз
К стате иногда при удалении может ругатся на флаги, тогда делаем следующее:
cd /usr/obj
chflags -R noschg *
И опять повторяем команду с удалением…
После этого выполняем:
cd /usr/src/
make clean && make clean
make cleandir && make cleandir
И запускаем сборку мира и ядра:
make -j4 buildworld && make buildkernel KERNCONF=GENERIC
Где j4 — компиляция в 4 потока, и GENERIC имя вашего ядра.
Cоветую вообще с начала собрать GENERIC, но скажу честно я сразу собрал свое ядро.
Теперь давайте установим новое ядро:
cd /usr/src
make installkernell
Затем на данном этапе нам нужно сравнить файлы конфигурации паролей и групп:
mergemaster -p
d — удалить предлагаемый вариант и оставить старый;
i — установить предлагаемый вариант, удалив старый;
m — сравнить построчно старый и предлагаемый вариант;
v — посмотреть отличия в файлах снова.
Теперь пришло время установить «мир» (Вообще рекомендуют делать это single mode, но так как машина далеко делал в обычном режиме):
cd /usr/src/
make installworld
make delete-old && make delete-old-libs
Теперь нужно сравнить файлы конфигурации «мира»:
mergemaster
Но если не хотите нажимать n-колличество раз (поверьте не мало) то:
mergemaster -iFU
Будет само подтверждать замену файлов где только изменилась строка версии cvs.
Теперь перезагружаемся с дрожью:
reboot
И выполняем:
cd /usr/src/
make delete-old
Вот в принципе и все! Мы обновили систему, осталось обновит дерево портов ну и по желанию софт!
4,025 всего просмотров, 1 за сегодня