FreeBSD 发布工程团队最近宣布 FreeBSD 13.0-RELEASE 的可用性。 这是 stable/13 分支的第一个版本。 FreeBSD 13.0 附带了许多更新的功能集。 它支持多种架构,包括 amd64、i386、powerpc、powerpc64、powerpc64le、powerpcspe、armv6、armv7、aarch64 和 riscv64。 如果您更喜欢全新安装,请前往 FreeBSD 13.0 下载页面 并获得适合您架构的版本。 如果您已经有旧版本,您可以直接将 FreeBSD 12 升级到 FreeBSD 13。在这个分步指南中,让我们看看如何从 FreeBSD 12 升级到 FreeBSD 13。
更新 FreeBSD 12
第一件事。 备份您无法承受丢失的所有内容。 在我的情况下,FreeBSD 升级工作 100%。 但是,请备份数据,以防万一。
使用命令检查 FreeBSD 操作系统版本和内核版本:
# freebsd-version -k
样本输出:
12.0-RELEASE-p10
$ uname -mrs
样本输出:
FreeBSD 12.0-RELEASE-p10 amd64
正如您在上面看到的,安装的版本是 FreeBSD 12.0-RELEASE。 我很久没有更新我的 FreeBSD 测试机了,所以它显示的是 12.0。 12.x 分支中的最新版本是 12.2。
在升级到下一个可用的主要版本之前,我们必须更新我们当前的 FreeBSD 12.x 版本。
要下载和安装 FreeBSD 安全补丁,请运行以下命令 root
用户:
# freebsd-update fetch
# freebsd-update install
# pkg upgrade
升级软件包后,重新启动系统:
# shutdown -r now
或者,
# reboot
是时候将 FreeBSD 12 升级到 FreeBSD 13 了。
从 FreeBSD 12 升级到 FreeBSD 13
运行以下命令从 FreeBSD 12.x 版本升级到 FreeBSD 13.0-RELEASE:
# freebsd-update -r 13.0-RELEASE upgrade
运行此命令后, freebsd-update
命令将评估配置文件和当前系统,以尝试收集执行升级所需的信息。 在升级过程中,系统会询问您要安装什么、要删除什么或如何继续。 您可能需要输入 y
并击中 ENTER
几次继续。
样本输出:
src component not installed, skipped Looking up update.FreeBSD.org mirrors… 2 mirrors found. Fetching metadata signature for 12.0-RELEASE from update1.freebsd.org… done. Fetching metadata index… done. Fetching 1 metadata files… done. Inspecting system… done. The following components of FreeBSD seem to be installed: kernel/generic kernel/generic-dbg world/base world/base-dbg world/doc world/lib32 world/lib32-dbg The following components of FreeBSD do not seem to be installed: Does this look reasonable (y/n)? y Fetching metadata signature for 13.0-RELEASE from update1.freebsd.org… done. Fetching metadata index… done. Fetching 1 metadata patches. done. Applying metadata patches… done. Fetching 1 metadata files… [...]
上面的命令将开始下载所有包。 高枕无忧。 这将需要一段时间,具体取决于您的 Internet 连接速度。
在升级任务期间,配置文件将被合并。 随着过程的继续,每次成功合并的结果都将显示给用户。 请注意,当前系统尚未更改,因为所有合并和修补都在另一个目录中进行。
成功应用所有补丁后,所有配置文件都已合并,运行以下命令将所有更改提交到磁盘:
# 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.

所有内核更新都已安装在您的 FreeBSD 中。 您需要重新启动系统以应用补丁程序。
登录系统后,再次运行以下命令完成安装更新:
# freebsd-update install
安装所有更新后,您将看到以下输出:
[...] Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run "/usr/sbin/freebsd-update install" again to finish installing updates.
再次运行相同的命令来删除旧的共享库并完成 FreeBSD 13.0 升级任务。
# freebsd-update install
最后,重新启动系统以完成升级任务。
通过检查操作系统版本来验证 FreeBSD 13.0 是否升级成功。
# freebsd-version -k 13.0-RELEASE
并检查 FreeBSD 内核版本:
# uname -mrs FreeBSD 13.0-RELEASE amd64

恭喜! 我们刚刚升级到 FreeBSD 13.0。 我们还需要做一件事。 主要版本升级后,应升级所有已安装的包和端口。
使用以下命令更新所有已安装的包和端口集合:
# pkg-static install -f pkg
# pkg bootstrap -f
# pkg update -y
# pkg upgrade -y
就是这样。 再次重新启动并开始使用 FreeBSD 版本。
解决 FreeBSD 中的 pkg 更新错误
升级到 FreeBSD 13.0 后,当我尝试更新端口集合时出现以下错误:
pkg-static: Warning: Major OS version upgrade detected. Running "pkg-static install -f pkg" recommended Updating FreeBSD repository catalogue… pkg-static: repository meta has wrong version 2 pkg-static: Repository FreeBSD load error: meta cannot be loaded No error: 0 Fetching meta.txz: 100% 916 B 0.9kB/s 00:01 pkg-static: repository meta has wrong version 2 repository FreeBSD has no meta file, using default settings Fetching packagesite.txz: 100% 6 MiB 1.6MB/s 00:04 pkg-static: repository meta has wrong version 2 pkg-static: Repository FreeBSD load error: meta cannot be loaded No error: 0 Unable to open created repository FreeBSD Unable to update repository FreeBSD Error updating repositories!
这通常在我们将 12.0 升级到 12.1 或 2 时发生。要解决此问题,请更新 ports-mgmt/pkg
从端口树使用 ports-mgmt/portmaster
.
如果您还没有这样做,请使用命令获取端口树:
# portsnap fetch
样本输出:
Looking up portsnap.FreeBSD.org mirrors… 4 mirrors found. Fetching public key from ipv4.aws.portsnap.freebsd.org… done. Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org… done. Fetching snapshot metadata… done. Fetching snapshot generated at Tue Apr 27 00:08:31 UTC 2021: 552628c35b88d79f5a54b7774ddca0463fde713e43f367 88 MB 3233 kBps 28s Extracting snapshot… done. Verifying snapshot integrity… done. Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org… done. Fetching snapshot metadata… done. Updating from Tue Apr 27 00:08:31 UTC 2021 to Tue Apr 27 07:42:07 UTC 2021. Fetching 5 metadata patches… done. Applying metadata patches… done. Fetching 0 metadata files… done. Fetching 18 patches. (18/18) 100.00% done. done. Applying patches… done. Fetching 0 new ports or files… done.
接下来运行以下命令下载并解压整个端口树到 /usr/ports
目录。
# portsnap extract
然后运行:
# pkg bootstrap -f
# pkg update -f
# pkg upgrade -f
这通常发生在我们进行小升级时,即 12.0 到 12。运行后 pkg bootstrap -f
一切都按预期工作。
相关阅读:
- 如何在 FreeBSD 上启用 SSH