如何使用pkg在FreeBSD上列出可升级的软件包
以下是在FreeBSD上使用pkg命令快速列出所有可升级软件包的方法。这相当于在Debian或Ubuntu Linux系统上使用apt list --upgradable命令。
教程详情
- 难度级别:简单
- 需要root权限:是
- 要求:Unix终端
- 类别:包管理器
- 系统兼容性:FreeBSD • Jails • Unix
- 预计阅读时间:2分钟
更新包数据库
首先通过运行以下命令更新FreeBSD上的包数据库:
获取包数据库需要一些时间。
列出需要升级的包
然后,输入以下命令列出与刚刚更新的存储库目录相比需要升级的包:
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'
|
执行实际升级
现在剩下的就是输入以下命令来应用实际升级:
使用dry-run模式
FreeBSD pkg还具有dry-run模式,它可以显示哪些包有可用更新,但不执行任何升级。这是在运行pkg update后的另一个快捷方式:
或
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命令手册页以获取更多信息: