XBPS 软件包管理器

X Binary Package System(XBPS)是一个快速的软件包管理器,它是从头开始设计和实现。XBPS 由 Void Linux 团队管理,它的原始代码库在 https://github.com/void-linux/xbps

大多数通用包管理是使用以下命令完成的:

  • xbps-query(1) 搜索并显示本地安装的软件包的信息,如果与 -R 标志一起使用,则显示存储库中的软件包。
  • xbps-install(1) 安装和更新软件包,并同步存储库的索引。
  • xbps-remove(1) 可以删除已安装的软件包, 也可以删除孤立的软件包和缓存的软件包文件。
  • xbps-reconfigure(1) 运行已安装包的配置,可用于重新配置更改配置文件后的某些软件包。 后者通常需要 --force 标志。
  • xbps-alternatives(1) 列出或设置已安装软件包所提供的替代品。替代品允许多个软件包通过其他冲突的应用提供共同的功能。,否则会有冲突的软件包,它通过从共同的路径创建符号链接到包的特定版本,以建立符号链接,由用户选择。
  • xbps-pkgdb(1) 可以报告和修复包数据库中的问题,并对其进行修改。
  • xbps-rindex(1) 管理本地的二进制包库。

大多数问题可以通过查阅xbps.d(5) 的man page来找到解决方法。

学习如何从源代码构建软件包,参阅the README for thevoid-packages repository.

更新系统

和大多数系统一样,保持 Void 版本最新十分重要。使用 xbps-install(1) 更新系统:

# xbps-install -Su

XBPS必须使用一个单独的事务来更新自己。如果你的更新包括 xbps 包,你需要第二次运行上述命令来应用其余的更新。

重启服务

当服务被更新时,XBPS不会重新启动服务。这项任务留给了用户自己,所以他们可以安排时间,确保备份,并且通常在更新时,用户应该在电脑前进行维护。

要找到运行与磁盘上不同版本的进程,请使用 xtools 包提供的 xcheckrestart 工具:

$ xcheckrestart
11339 /opt/google/chrome/chrome (deleted) (google-chrome)

xcheckrestart 将输出PID、可执行文件的路径、被启动的路径的状态(几乎都是 deleted )和进程名称。 被启动的路径(几乎总是 deleted )和进程名称。 xcheckrestart可以而且应该以非特权用户的身份运行。

更新后的内核崩溃问题

如果你在更新后出现了内核崩溃,很可能是你的系统在 /boot 中的空间用完了。请参考 "Removing old kernels" 以获得更多信息。

寻找文件和软件包

查找可用软件包,使用 xbps-query(1) :

$ xbps-query -Rs <search_pattern>

-R 标志指定了应搜索的存储库。如果没有它, -s 会搜索本地安装的软件包。

如果你在安装一个软件包后找不到你期望找到的文件或程序包,你可以使用 xbps-query(1) 列出该软件包所提供的文件。

$ xbps-query -f <package_name>

xtools 这一软件包包含了 xlocate(1) 工具、 xlocate 的工作原理与 locate(1) ,但对于Void软件源中的文件:

$ xlocate -S
Fetching objects: 11688, done.
From https://repo-default.voidlinux.org/xlocate/xlocate
 + e122c3634...a2659176f master     -> master  (forced update)
$ xlocate xlocate
xtools-0.59_1   /usr/bin/xlocate
xtools-0.59_1   /usr/share/man/man1/xlocate.1 -> /usr/share/man/man1/xtools.1

也可以使用 xbps-query(1) 来查找文件,尽管 这是很不可取的。

$ xbps-query -Ro /usr/bin/xlocate
xtools-0.46_1: /usr/bin/xlocate (regular file)

这需要 xbps-query 下载每个软件包的部分内容来寻找文件。 xlocate 则是查询本地缓存的所有文件的索引,所以不需要网络,所以不需要网络访问。

要获得所有已安装软件包的列表,不包括其版本,运行:

$ xbps-query -l | awk '{ print $2 }' | xargs -n1 xbps-uhelper getpkgname