Некоторое время назад при обновлении с FreeBSD 7.2 получил порцию серьезных проблем и неработоспособный сервер. А всего лишь воспользовался по совету самих же разработчиков утилитой freebsd-update.. Этот способ хорош когда обновляемся в рамках одной ветки, но явно не вариант для перехода с одной ветки на другую!
Каким же образом осуществить переход? Используя “дедовский” или вернее unix-овый подход! Как это? Ничего сложного – часа 2 на процедуру и поездка до сервера 😉 (хотя если прочитать весь интернет – может и без поездки, обратите внимание, что каждая ветка по разному “называет” сетевые интерфейсы.. зачем не понятно, но так оно есть и это как аксиома..)
Собственно инструкция по переходу 🙂
- Используем cvsup для обновления файлов ядра и мира (src-all, RELENG_8_0_RELEASE)
cvsup -g -L 2 /etc/cvsupsrc
(не забудьте создать файл cvsupsrc) - Обновляем дерево портов
portsnap fetch update
- Перезагружаем сервер:
shutdown -r now
(после cvsup мы получим мало свободной памяти и много неактивной..) - Далее переходим в каталог с исходными кодами ОС:
cd /usr/src
- И поехали, сборка “мира”
make buildworld
- Сборка “ядра”
make buildkernel KERNCONF=GENERIC
- Установка “ядра”
make installkernel KERNCONF=GENERIC
- Миграция конфигурационных файлов (если знаем что делаем – меняем, если нет – тупо отвечаем нажатием Enter)
mergemaster -p
- Установка “мира”
make installworld
- Удаление “хвостов”
make delete-old
- Повторная “миграция”
mergemaster -Fi
- Перезагрузка сервера
reboot
- И удаление старых библиотек из системы
make delete-old-libs
- Затем
portsnap fetch update
(обновляем дерево портов еще раз) - Перезагружаем сервер
shutdown -r now
По идеи все должно быть отлично! Проверить можно запустив uname с ключиком -a
И конечно же стоит упомянуть, что перед обновление крайне желательно сделать резервную копию всех разделов!
Большое спасибо за сбор необходимой информации участникам конференции opennet.ru (в частности уважаемому lavr)
Jettochkin
Способ универсален – подходит для обновления как с 7 до 8 так и далее с 8 до 8.1, 8.2