
开发者推出免费工具 pkgbase-update(8),简化 FreeBSD pkgbase 系统升级流程
来源标题:New FreeBSD pkgbase-update(8) Tool
开发者发布了免费工具 pkgbase-update(8),用于简化 FreeBSD pkgbase 的更新与升级操作。FreeBSD 15.x 是最后一个支持 freebsd-update(8) 的版本,从 16.0-RELEASE 起 pkgbase 将成为安装和升级基础系统的唯一方式。该工具旨在替代 15.2-BETA1 中繁琐的多条 pkg 命令升级步骤。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
众所周知,PKGBASE 是 FreeBSD 未来的“唯一”方向——但还有一些细节需要打磨。FreeBSD 15.x 是最后一个允许使用 freebsd-update(8) 命令来更新/升级 FreeBSD 系统的版本。从 FreeBSD 16.0-RELEASE 开始,PKGBASE 将成为安装/更新/升级 FreeBSD 基础系统的唯一方式。
即将发布的 FreeBSD 15.2-RELEASE 的首个 15.2-BETA1 版本已经公布。我一直很期待在 FreeBSD 15.2-BETA1 的公告中看到新的升级说明和功能……但我失望了。
我们得到的不是像 freebsd-update(8) 那样简单到傻瓜式的升级说明,例如:
freebsd # freebsd-update upgrade -r 15.2-BETA1
freebsd # freebsd-update install
(...)
而是变成了这样:
freebsd # pkg upgrade -yr FreeBSD-ports pkg
freebsd # mkdir /tmp/upgrade-15.2
freebsd # echo 'FreeBSD-base: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/base_release_2_beta1"
}' > /tmp/upgrade-15.2/upgrade.conf
freebsd # pkg -o REPOS_DIR=/etc/pkg,/usr/local/etc/pkg/repos,/tmp/upgrade-15.2
-o IGNORE_OSVERSION=yes
upgrade -r FreeBSD-base
freebsd # pkg -o REPOS_DIR=/etc/pkg,/usr/local/etc/pkg/repos,/tmp/upgrade-15.2
upgrade -r FreeBSD-ports-kmods
freebsd (amd64) # cp /boot/loader.efi /boot/efi/efi/boot/BOOTX64.EFI
freebsd (aarch64) # cp /boot/loader.efi /boot/efi/efi/boot/BOOTAA64.EFI
freebsd (armv7) # cp /boot/loader.efi /boot/efi/efi/boot/BOOTARM.EFI
freebsd # find /etc /usr/local/etc -name '*.pkgnew' -ls
freebsd # rm -r /tmp/upgrade-15.2
freebsd # shutdown -r now
freebsd # pkg which $(kldstat -v | awk -F '[()]' '/.ko/ {print $2}')
……而我想到的第一件事就是……“认真的吗?”
我的意思是……把它写成脚本并自动化能有多难?……别提 AI 了——我在这里所做的一切都是靠我自己的双手和手指,以经典系统管理员的方式——一个字符一个字符地——一行一行地——一条命令接一条命令地——一个异常接一个异常地……最多花了我 2-3 个小时。
Microslop GitHub 仓库在这里——https://github.com/vermaden/pkgbase-update——一如既往地以 BSD 许可证发布。代码中最重要、最关键的部分就是下面这个“部分”。
现在来说功能……新的 pkgbase-update(8) 工具能提供什么? freebsd # pkgbase-update usage: pkgbase-update upgrade -r VERSION pkgbase-update install pkgbase-update loader pkgbase-update pkgnew pkgbase-update modules 说实话,这就是 freebsd-update(8) 相当标准的替代品……只不过是在 PKGBASE 的世界里。它以 PKGBASE 的方式将现有的 FreeBSD 系统升级到指定目标——就像 freebsd-update(8) 所做的那样……而且方式非常相似。
下面是一个全新的 FreeBSD 15.1-RELEASE 系统,使用 pkgbase-update(8) 工具升级到现已可用的 15.2-BETA1 版本。唯一可以调整的是中间那个 'y' 回答——我可以把它设为“强制”和自动,这样它就会直接“发生”——但至少在开始阶段保留这个选择似乎是合理的。
我的意思是……这是 pkgbase-update(8) 代码的第一个公开版本——所以没必要急于做出“强制”选择。
现在——废话少说——这就是使用 pkgbase-update(8) 命令将 FreeBSD 15.1-RELEASE 系统升级到 15.2-BETA1 的样子。所有 INFO:(此处任何内容)消息都是由 pkgbase-update(8) 命令生成的。 freebsd # pkgbase-update upgrade -r 15.2-BETA1 INFO: upgrading from '15.1-RELEASE' to '15.2-BETA1' version Updating FreeBSD-base repository catalogue... pkg: Repository FreeBSD-base has a wrong packagesite, need to re-create database Fetching meta.conf: 100% 179 B 0.2 kB/s 00:01 Fetching data: 100% 7563 KiB 7.7 MB/s 00:01 Processing entries: 100% FreeBSD-base repository update completed. 509 packages processed. FreeBSD-base is up to date. 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: 2.6.2_1 -> 2.8.4 [FreeBSD-base] Number of packages to be upgraded: 1 The process will require 22 MiB more space. 13 MiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching pkg-2.8.4: 100% 13 MiB 6.9 MB/s 00:02 Checking integrity... done (0 conflicting) [1/1] Upgrading pkg from 2.6.2_1 to 2.8.4... [1/1] Extracting pkg-2.8.4: 100% pkg: option REPOS_DIR is defined in the environment to '/etc/pkg,/usr/local/etc/pkg/repos,/tmp/15.2-BETA1' but command line option redefines it pkg: option IGNORE_OSVERSION is defined in the environment to 'yes' but command line option redefines it Updating FreeBSD-base repository catalogue... pkg: need to re-create repo FreeBSD-base to upgrade schema version Fetching meta.conf: 100% 179 B 0.2 kB/s 00:01 Fetching data: 100% 7563 KiB 7.7 MB/s 00:01 Processing entries: 100% FreeBSD-base repository update completed. 509 packages processed. Fetching filesite: 100% 670 KiB 686.4 kB/s 00:01 Compressing files: 100% FreeBSD-base is up to date. Checking for upgrades (213 candidates): 100% Processing candidates (213 candidates): 100% The following 213 package(s) will be affected (of 0 checked): Installed packages to be UPGRADED: FreeBSD-acct: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-acpi: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-apm: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-at: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-atf: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-atf-dev: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-atf-lib: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-audit: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-audit-dev: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-audit-lib: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-autofs: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-bhyve: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base] FreeBSD-blocklist: 15.1 -> 15.2.b1.20261106025213 [FreeBSD-base]
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。