FreeBSD регулярно обновляется; команда разработчиков добавляет новые функции и исправляет уязвимости в системе безопасности. Постоянно поддерживая операционную систему сервера в актуальном состоянии, вы обеспечиваете более высокий уровень безопасности и совместимости. Чтобы упростить процесс обновления, FreeBSD предлагает инструмент freebsd-update.
Это руководство поможет обновить FreeBSD 10.2-RELEASE до 10.3.RELEASE-p4.
Важно! Прежде чем приступить к обновлению системы, обязательно сделайте резервную копию данных.
Требования
- Сервер FreeBSD 10.2.
- Пользователь с доступом к sudo. В руководстве используется стандартный пользователь freebsd, который создаётся автоматически.
Примечание: Чтобы узнать больше о FreeBSD, откройте специальный раздел нашего Информатория.
1: Загрузка патчей
Сначала нужно загрузить все пакеты и патчи нового релиза. Войдите на сервер.
ssh freebsd@your_server_ip
Чтобы собрать информацию об обновлениях системы, запустите freebsd-upgrade.
sudo freebsd-update upgrade -r 10.3-RELEASE
С помощью флага -r можно указать целевую версию (в данном случае это 10.3-RELEASE).
Обработка команды займёт некоторое время, после чего на экране появится вывод:
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from update6.freebsd.org... done.
Fetching metadata signature for 10.2-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system...
The following components of FreeBSD seem to be installed:
kernel/generic world/base world/doc world/games world/lib32
The following components of FreeBSD do not seem to be installed:
Does this look reasonable (y/n)? y
Этот вывод предупреждает вас обо всех потенциальных проблемах и ошибках. Чтобы продолжить, введите y и нажмите ENTER.
Примечание: В примерах данного руководства используется свежий сервер FreeBSD 10.2. Если вы изменили настройки некоторых компонентов, создайте резервную копию, прежде чем продолжить обновление. Следует помнить, что при обновлении системы вы всегда рискуете потерять данные.
После подтверждения процесса система применит обновления и исправления. Вы увидите следующий вывод:
Fetching metadata signature for 10.3-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system...
Fetching files from 10.2-RELEASE for merging... done.
Preparing to download files...
Fetching 10722 patches.....10....20....30....40....50....60....70....80....90
....100....110....120....130....140....150....160....170....180....190....200
**. . .**
....10650....10660....10670....10680....10690....10700....10710....10720. done.
Applying patches... done.
Fetching 152 files...
Attempting to automatically merge changes in files... done.
Однако этот процесс не может применить все патчи автоматически. Некоторые компоненты нужно обновить вручную.
2: Устранение конфликтов
После обновления системы freebsd-update выведет два сообщения об ошибках. Эти ошибки нужно устранить вручную в файлах /etc/rc.subr и /etc/ssh/sshd_config.
Первое сообщение выглядит так:
The following file could not be merged automatically: `/etc/rc.subr`
Press Enter to edit this file in vi and resolve the conflicts
manually...
Нажмите Enter, чтобы открыть файл /etc/rc.subr в текстовом редакторе vi.
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $
<<<<<<< current version
# $FreeBSD: releng/10.1/etc/rc.subr 273188 2014-10-16 22:00:24Z hrs $
=======
# $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $
>>>>>>> 10.3-RELEASE
Измените этот раздел, удалив все строки, в которых упоминается текущая версия (выше они выделены красным). Несмотря на то, что на данный момент система использует FreeBSD 10.2, этот файл указывает версию 10.1. Удалите эти строки, чтобы устранить ошибку. После этого раздел будет иметь такой вид:
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $
# $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $
Сохраните и закройте файл.
После этого система сообщит вам, что ошибка устранена. На экране останется только вторая ошибка, исправить которую можно в /etc/ssh/sshd_config.
/var/db/freebsd-update/merge/new//etc/rc.subr: 2087 lines, 47888 characters.
The following file could not be merged automatically: `/etc/ssh/sshd_config`
Press Enter to edit this file in vi and resolve the conflicts
manually...
Чтобы открыть файл в редакторе, нажмите Enter.
<<<<<<< current version
# $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
# $FreeBSD: releng/10.1/crypto/openssh/sshd_config 264692 2014-04-20 12:46:18Z des $
=======
# $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $
# $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $
>>>>>>> 10.3-RELEASE
В этом файле нужно тоже удалить все строки, в которых упоминается текущая версия операционной системы.
В результате файл будет выглядеть так:
# $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $
# $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $
Сохраните и закройте файл. После этого freebsd-update предложит подтвердить изменения. Чтобы продолжить установку, введите y.
На экране появится очень длинный список бинарных и конфигурационных файлов, которые будут обновлены.
The following files will be added as part of updating to 10.3-RELEASE-p5:
/boot/kernel/ismt.ko
/boot/kernel/ismt.ko.symbols
/boot/kernel/linux64.ko
/boot/kernel/linux64.ko.symbols
/boot/kernel/linux_common.ko
/boot/kernel/linux_common.ko.symbols
/boot/kernel/mlx5.ko
. . .
The following files will be updated as part of updating to 10.3-RELEASE-p5:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
/bin/chflags
/bin/chio
. . .
Если вы не хотите просматривать список, закройте его, нажав q (это не прервёт процесса обновления).
Просмотрите список и вернитесь в терминал. Теперь можно приступать к установке.
3: Установка FreeBSD 10.3
Чтобы начать установку новой версии FreeBSD, запустите команду:
sudo /usr/sbin/freebsd-update install
Команда вернёт:
src component not installed, skipped
Installing updates...
Kernel updates have been installed. Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
Система предложит выполнить переустановку. Для этого запустите команду:
sudo reboot
Сессия SSH будет прервана, перезагрузка займёт примерно минуту.
Примечание: Ядро 10.3-RELEASE-p4 и исправленные двоичные файлы загружаются только во время процесса загрузки системы, потому обязательно нужно перезагрузить сервер.
4: Завершение установки
Запросите версию сервера, чтобы убедиться в том, что установка прошла успешно.
ssh freebsd@your_server_ip
uname -a
Команда должна вернуть:
FreeBSD YOUR_HOSTNAME 10.3-RELEASE-p4 FreeBSD 10.3-RELEASE-p4 #0: Sat May 28 12:23:44 UTC 2016 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
Теперь запустите freebsd-update ещё раз:
sudo /usr/sbin/freebsd-update install
Команда вернёт:
src component not installed, skipped
Installing updates...
Installing updates...
install: ///var/db/etcupdate/current/etc/mtree/BSD.debug.dist: No such file or directory
install: ///var/db/etcupdate/current/etc/periodic/daily/480.leapfile-ntpd: No such file or directory
done.
Можете просто проигнорировать два предупреждения в конце вывода.
После обновления операционной системы нужно также обновить все сторонние пакеты.
sudo pkg upgrade
Команда вернёт:
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
. . .
Processing entries: 100%
FreeBSD repository update completed. 25089 packages processed.
New version of pkg detected; it needs to be installed first.
The following 1 package(s) will be affected (of 0 checked):
Installed packages to be UPGRADED:
pkg: 1.5.6 -> 1.7.2
The process will require 242 KiB more space.
2 MiB to be downloaded.
Proceed with this action? [y/N]: y
Введите y и нажмите Enter, чтобы продолжить. На экране появится сообщение:
Fetching pkg-1.7.2.txz: 100% 2 MiB 1.3MB/s 00:02
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.5.6 to 1.7.2...
[1/1] Extracting pkg-1.7.2: 100%
Updating FreeBSD repository catalogue...
Repo "FreeBSD" upgrade schema 2011 to 2012: Add depends formula field
Repo "FreeBSD" upgrade schema 2012 to 2013: Add vital field
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Checking for upgrades (24 candidates): 100%
Processing candidates (24 candidates): 100%
The following 24 package(s) will be affected (of 0 checked):
Installed packages to be UPGRADED:
xproto: 7.0.27 -> 7.0.28
sudo: 1.8.13 -> 1.8.16_1
rsync: 3.1.1_3 -> 3.1.2_1
python27: 2.7.9_1 -> 2.7.11_2
py27-setuptools27: 17.0 -> 20.0
py27-pip: 7.0.3 -> 8.0.2
perl5: 5.20.2_5 -> 5.20.3_12
pcre: 8.37_4 -> 8.38_1
libxml2: 2.9.2_3 -> 2.9.3
libxcb: 1.11_1 -> 1.11.1
libnet: 1.1.6_3,1 -> 1.1.6_4,1
libiconv: 1.14_8 -> 1.14_9
libX11: 1.6.2_3,1 -> 1.6.3,1
kbproto: 1.0.6 -> 1.0.7
indexinfo: 0.2.3 -> 0.2.4
gobject-introspection: 1.42.0 -> 1.46.0
glib: 2.42.2 -> 2.46.2
gettext-runtime: 0.19.4 -> 0.19.7
expat: 2.1.0_3 -> 2.1.1_1
dbus: 1.8.16 -> 1.8.20
curl: 7.43.0_2 -> 7.48.0_1
ca_root_nss: 3.19.3 -> 3.22.2
avahi-app: 0.6.31_3 -> 0.6.31_5
Installed packages to be REINSTALLED:
dbus-glib-0.104 (option added: DOCS)
The process will require 5 MiB more space.
39 MiB to be downloaded.
Proceed with this action? [y/N]: y
Снова введите y и нажмите Enter.
Все пакеты будут обновлены. Теперь запустите:
rehash
Обновление системы завершено.
5: Возврат к предыдущей версии (опционально)
Если в процессе обновления у вас возникли серьёзные ошибки, исправить которые не получается, вы можете вернуться к предыдущей версии операционной системы.
sudo freebsd-update rollback
Если у вас есть резервная копия, вы можете восстановить её в случае неудачного обновления.
Заключение
Своевременно обновлять систему и добавлять патчи безопасности очень важно. Это позволяет исправить некоторые баги и получить новые функции. Команда freebsd-update упрощает этот процесс.
Примечание: Больше о FreeBSD можно узнать здесь.