XBPS包管理


X 二进制包系统 (XBPS) 是一个从头开始设计和实现的快速包管理器。XBPS 由 Void Linux 团队管理,开发于 https://github.com/void-linux/xbps

大多数常规包管理都是通过以下命令完成的:

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

要了解如何从源代码构建软件包,请参阅 void-packages 存储库的自述文件。

更新

更新系统

# xbps-install -Su

重新启动服务

XBPS 在更新服务时不会重新启动服务。此任务留给管理员,以便他们可以协调维护时段,确保合理的备份容量,并且通常可用于服务升级。

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

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

xcheckrestart 将打印出 PID、可执行文件的路径、已启动路径的状态(几乎总是 deleted )和进程名称。

xcheckrestart 可以并且应该以非特权用户身份运行。

更新后内核崩溃

如果您在更新后出现内核崩溃,则可能是您的系统在 /boot 中的空间不足。请参阅“ 删除旧内核 ”以获取更多信息。

查找文件和包

要在可用的存储库中搜索软件包,请使用 xbps-query

$ xbps-query -Rs <search_pattern>

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

如果在安装软件包后找不到您希望找到的文件或程序,可以使用 xbps-query 列出该软件包提供的文件:

$ xbps-query -f <package_name>

xtools 软件包包含 xlocate 工具。 xlocate 的工作方式与 locate 类似,但对于 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 来查找文件, 但强烈建议不要这样做:

$ 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