freebsd-update - бинарное обновление системы
17-07-2010. Разместил: admin Несомненно, правильный путь обновления системы лежит через пересборку мира (make world). Но есть путь и попроще. Он основан на бинарном обновлении системы через freebsd-update. Данная утилита уже имеется в основной системе. Ее описание гласит, что freebsd-update предназначена для получения, установки и отката бинарных обновлений системы и обновления имеются только для тех релизов и архитектур, которые подготовлены командой разработчиков, в частности для веток RC, RELEASE, BETA.
Команд у нее немного. Вот основные
fetch - получает обновления для текущей архитектуры и конфиграции
cron - случайно, с промежутком от 1 до 3600 секунды выполняет fetch для получения обновлений.
Если обновления имеются, то шлется письмо, обычно на имя root.
upgrade - получает файлы, необходимые для обновления на новый релиз. Прежде чем использовать, ознакомьтесь с анонсами и правилами обновления для нового релиза, если требуется выполнение дополнительных действий.
install - устанавливает полученные обновления.
rollback - удаляет установленные обновления.
Обычно, для текущих обновлений выполняется
#freebsd-update fetch
#freebsd-update install
В том случае, если патчи безопасности относились к ядру (ядро или модули), по завершению работы freebsd-update систему необходимо будет перезагрузить. Для регулярной отработки этой операции, можно воспользоваться cron(8), поместив в него следующую строчку:
@daily root freebsd-update cron
Эта строчка заставит freebsd-update каждый день проверять наличие обновлений для вашей системы. В том случае, если патчи безопасности имеются, они будут сохранены на локальный диск, но не применены. Применение патчей необходимо проводить вручную.
Утилита freebsd-update в состоянии обновлять только GENERIC-ядро. В том случае, если Вы используете ядро собственной сборки, Вам потребуется его перекомпилировать после каждой отработки freebsd-update, в которой затронуты изменения относящиеся к ядру. freebsd-update также может обнаруживать и обновлять GENERIC ядро, по пути /boot/GENERIC (если оно существует), поэтому, хранить еще одно ядро в /boot/GENERIC - это хорошая идея.
Уровень патчей на системе идентифицирует число, следующее за буквой 'p' в имени релиза (команда uname -r).
Внимание! Вы можете обновлять систему, будучи загруженным на собственном ядре, однако всегда рекомендуется иметь в системе копию стандартного ядра, расположенного в /boot/GENERIC каталоге. Его можно получить, например, с установочного диска FreeBSD:
mount /cdrom
cd /cdrom/X.Y-RELEASE/kernels
./install.sh GENERIC
Где X.Y - это релиз системы, который Вы используете.
Помимо этого, GENERIC ядро можно собрать из исходных кодов:
cd /usr/src
env DESTDIR=/boot/GENERIC make kernel
mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
rm -rf /boot/GENERIC/boot
Шаг1: получение обновлений
Для того, чтобы обновить систему на определенный релиз, freebsd-update необходимо запускать с ключем -r, где после 'r' указывается конечная версия системы.
Например:
#freebsd-update -r 8.1-RELEASE upgrade
заставит freebsd-update получить те дополнения, которые необходимы для FreeBSD 8.1-RELEASE. В процессе отработки, будут выведены те категории системы, которые будут подлежать обновлению. Нажатием 'y' (или Enter) на вопрос «Does this look reasonable (y/n)? y» Вы подтверждаете, что freebsd-update будет скачивать перечисленные категории на локальный диск.
В том случае, если система запущена не на GENERIC ядре, вы получите об этом соответствующее уведомление:
WARNING: This system is running a «MYKERNEL» kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running »/usr/sbin/freebsd-update install»
Это предупреждение на этом этапе можно игнорировать. Новое GENERIC ядро можно использовать как промежуточный шаг в процессе обновления.
После того, как необходимые категории будут сохранены начнется процесс их применения. Скорость операции зависит от скосрости и загрузки Вашей машины. Возможно, в процессе слияния конфигурационных файлов, система может столкнуться с трудностями и запустив редактор, потребует от Вас ручного вмешательства.
Обратите внимание, что на данном этапе, все изменения и слияния конфиг-файлов происходят в другом каталоге, поэтому, в случае проблем (пропажа питания), система загрузиться в привычное состояние, а шаги по обновлению придется делать заново.
Шаг2: применение обновлений для ядра
# freebsd-update install
На этом этапе будут обновлено ядро и модули ядра. После этого шага, система нуждается в перезагрузке. Если система работает не на GENERIC ядре, используйте nextboot(8) для установки ядра следующей загрузки:
nextboot -k GENERIC
Перезагрузка:
shutdown -r now
Шаг3: применение обновлений userland
После перезагрузки, freebsd-update должна быть запущена вновь, для обновления базовых утилит и библиотек.
freebsd-update install
Внимание! Поскольку на этом этапе возможна инсталляция библиотек более старших версий, сторонее ПО (например устанавливаемое из портов) требуется переустанавливать. Для этого можно воспользоваться утилитами (ports-mgmt/portupgrade, ports-mgmt/portinstall). Если в данный момент времени эта процедура невозможна, прочтите пункт 'c' в замечениях.
Если Вами используется не GENERIC ядро, самое время, чтобы его перестроить и установить ( cd /usr/src && make kernel KERNCONF=«MYKERNEL» )
shutdown -r now
Поздравляю, процесс обновления завершен.
Вернуться назад