Заметки о работе с ОС FreeBSD. Статьи об установке и настройке ПО для FreeBSD.

19 февраля 2014 г.

Upgrade FreeBSD 9.1 to FreeBSD 10.0-RELEASE

Обновление FreeBSD 9.1 до 10.0-RELEASE при помощи freebsd-update.

Обновляться будем вот с такой версии (не самой последней):

[root@test258 ~]# uname -a
FreeBSD test258 9.1-RELEASE-p4 FreeBSD 9.1-RELEASE-p4 #0: Mon Jun 17 11:42:37 UTC 2013     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

[root@test258 ~]# freebsd-update upgrade -r 10.0-RELEASE
Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata patches.. done.
Applying metadata patches... done.
Inspecting system...
The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/lib32

Так как при установке мы отказались от установки документации и игры, freebsd-update уточняет этот момент:

The following components of FreeBSD do not seem to be installed:
world/doc world/games
Does this look reasonable (y/n)? y
Fetching metadata signature for 10.0-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files...
The update metadata is correctly signed, but failed an integrity check.
Cowardly refusing to proceed any further.

Что-то пошло не так. Скорее всего необходимо обновить текущую систему до последней версии (до 9.1-RELEASE-p10).

Обновляем:

[root@test258 ~]# freebsd-update fetch install
Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 60 patches.....10....20....30....40....50....60 done.
Applying patches... done.
The following files will be updated as part of updating to 9.1-RELEASE-p10:
/boot/kernel/kernel
/boot/kernel/kernel.symbols
/boot/kernel/linker.hints
...
/usr/src/sys/vm/vm_map.c
/usr/src/usr.sbin/freebsd-update/freebsd-update.sh
/var/db/mergemaster.mtree
Installing updates... done.

[root@test258 ~]# reboot

Проверяем. Обновились:

[root@test258 ~]# uname -a
FreeBSD test258 9.1-RELEASE-p10 FreeBSD 9.1-RELEASE-p10 #0: Sun Jan 12 20:11:23 UTC 2014     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

Теперь снова пробуем апгрейд до 10.0-RELEASE:

[root@test258 ~]# freebsd-update upgrade -r 10.0-RELEASE
Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching metadata signature for 9.1-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/lib32
The following components of FreeBSD do not seem to be installed:
world/doc world/games
Does this look reasonable (y/n)? y
Fetching metadata signature for 10.0-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
Fetching files from 9.1-RELEASE for merging... done.
Preparing to download files...

Долго ждем:

Fetching 40217 patches.....

Снова долго ждем:

7550....27560....27570.. done.
Applying patches... done.
Fetching 11592 files... done.
Attempting to automatically merge changes in files... done.
The following file could not be merged automatically: /etc/motd
Press Enter to edit this file in /usr/bin/ee and resolve the conflicts manually...

freebsd-update нам говорит, что автоматическое изменение некоторых файлов невозможно и просит внести изменения вручную.

Один из примеров:

The following changes, which occurred between FreeBSD 9.1-RELEASE and
FreeBSD 10.0-RELEASE have been merged into /etc/group:
--- current version
+++ new version
@@ -1,6 +1,6 @@
-# $FreeBSD: release/9.1.0/etc/group 218046 2011-01-28 22:28:12Z pjd $
+# $FreeBSD: release/10.0.0/etc/group 256366 2013-10-12 06:08:18Z rpaulo $
 #
 wheel:*:0:root
 daemon:*:1:
 kmem:*:2:
 sys:*:3:
@@ -16,10 +16,11 @@
 sshd:*:22:
 smmsp:*:25:
 mailnull:*:26:
 guest:*:31:
 bind:*:53:
+unbound:*:59:
 proxy:*:62:
 authpf:*:63:
 _pflogd:*:64:
 _dhcp:*:65:
 uucp:*:66:
Does this look reasonable (y/n)?

После внесения необходимых изменений в файлы необходимо еще раз запустить freebsd-update install:

To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
[root@test258 ~]# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates.

Перезагружаем и видим что версия FreeBSD 10.0-RELEASE:

[root@test258 ~]# uname -a
FreeBSD test258 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014     root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

Как и просили, запускаем freebsd-update install еще раз:

[root@test258 ~]# freebsd-update install
Installing updates...

В FreeBSD 10 рекомендуют использовать pkg для работы с пакетами. Для этого нужно сконвертировать базу установленных приложений в новый формат:

[root@test258 ~]# pkg2ng

Обновляем репозитации:

[root@test258 ~]# pkg update

Обновляем установленные приложения:

[root@test258 ~]# pkg upgrade

Можно принудительно изменить необходимые зависимости на нужные версии, например:

[root@test258 ~]# pkg set -o lang/perl5.14:lang/perl5.16

После обновления всех приложений необходимо запустить freebsd-update instal:

[root@test258 ~]# freebsd-update install
Installing updates... done.

Всё. Система обновлена.