FreeBSD包管理指南:使用pkg命令列出可升级软件包

本文详细介绍如何在FreeBSD系统中使用pkg命令列出可升级的软件包,包括更新包数据库、使用pkg version命令分析版本状态,以及利用dry-run模式预览升级操作。

如何使用pkg在FreeBSD上列出可升级的软件包

以下是在FreeBSD上使用pkg命令快速列出所有可升级软件包的方法。这相当于在Debian或Ubuntu Linux系统上使用apt list --upgradable命令。

教程详情

  • 难度级别:简单
  • 需要root权限:是
  • 要求:Unix终端
  • 类别:包管理器
  • 系统兼容性:FreeBSD • Jails • Unix
  • 预计阅读时间:2分钟

更新包数据库

首先通过运行以下命令更新FreeBSD上的包数据库:

1
$ sudo pkg update

获取包数据库需要一些时间。

列出需要升级的包

然后,输入以下命令列出与刚刚更新的存储库目录相比需要升级的包:

1
$ sudo pkg version -vRL=

在FreeBSD 13.5版本上的输出示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
cbsd-14.2.4                        <   needs updating (remote has 14.2.6)
py38-dateutil-2.8.1                ?   orphaned: devel/py-dateutil
py38-magic-5.41                    ?   orphaned: devel/py-magic
py38-s3cmd-2.2.0                   ?   orphaned: net/py-s3cmd
py38-setuptools-63.1.0_1           <   needs updating (remote has 63.1.0_2)
py38-six-1.16.0                    ?   orphaned: devel/py-six
py39-setuptools-63.1.0_1           <   needs updating (remote has 63.1.0_2)
py39-speedtest-cli-2.1.3           ?   orphaned: net/py-speedtest-cli
uefi-edk2-bhyve-csm-0.2_4,1        ?   orphaned: sysutils/uefi-edk2-bhyve-csm
wireguard-2,1                      ?   orphaned: net/wireguard
wireguard-kmod-0.0.20220615_1      ?   orphaned: net/wireguard-kmod

版本状态说明

第二列显示的字符含义如下:

  • = - 包是最新的,无需操作
  • < - 包需要更新
  • > - 已安装的包版本比当前版本新。这种情况可能出现在索引文件过时或测试新端口或包时
  • ? - 已安装的包未出现在索引中。这可能是由于索引过时或来自尚未提交的PR的包,也可能是孤立的包
  • ! - 已安装的包存在于索引中,但由于某种原因,pkg version无法比较已安装包的版本号与索引中的相应条目

过滤需要更新的包

可以使用grep命令作为过滤器,仅获取需要更新的包列表:

1
$ sudo pkg version -vRL= | grep '<.*needs updating'

执行实际升级

现在剩下的就是输入以下命令来应用实际升级:

1
$ sudo pkg upgrade

使用dry-run模式

FreeBSD pkg还具有dry-run模式,它可以显示哪些包有可用更新,但不执行任何升级。这是在运行pkg update后的另一个快捷方式:

1
$ sudo pkg upgrade -n

1
$ sudo pkg upgrade --dry-run

输出示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking for upgrades (120 candidates): 100%
Processing candidates (120 candidates): 100%
The following 3 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
	cbsd: 14.2.4 -> 14.2.6
	py38-setuptools: 63.1.0_1 -> 63.1.0_2
	py39-setuptools: 63.1.0_1 -> 63.1.0_2

Number of packages to be upgraded: 3

7 MiB to be downloaded.

将所有已安装的包保持更新到最新的稳定版本可确保系统稳定性并有助于避免安全问题。请使用man命令查看pkg命令手册页以获取更多信息:

1
$ man pkg
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计