pacman

最后更新: 2021-02-02 07:14:22 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

pacman 管理已安装的软件包记录和已配置的 Arch 软件仓库。 本地数据库记录已安装的版本、安装原因、文件及所有权; 同步数据库描述软件仓库中的软件包。为保持这些视图一致,应在同一个事务中完成刷新和升级。

检查本地数据库 #

使用 -Q 查询已安装的软件包:

sh
pacman -Qs '^bash$'
pacman -Qi bash
pacman -Ql bash
pacman -Qo /usr/bin/pacman
pacman -Qk

-Ql 列出已安装软件包提供的文件,-Qo 查找现有路径的所有者,-Qk 检查受跟踪的文件。pacman -F 则搜索软件仓库文件数据库;先使用 sudo pacman -Fy 填充该数据库。

软件包的安装原因会影响孤立软件包的检测。应有意检查或更改单个软件包的安装原因:

sh
pacman -Qi package-name
sudo pacman -D --asexplicit package-name
sudo pacman -D --asdeps package-name

安全地同步和升级 #

使用 -Ss 和 -Si 搜索并检查已配置的软件仓库。常规系统更新命令如下:

sh
sudo pacman -Syu

-y 刷新同步数据库,-u 根据同一软件仓库状态升级已安装的系统。不要执行 pacman -Sy package-name 之类的部分升级:刷新后的元数据可能要求比当前已安装系统更新的依赖项。在确认大型事务之前,应阅读 Arch 新闻,并处理配置文件相关的指示。

使用 sudo pacman -S package-name 安装软件仓库中的软件包。使用 sudo pacman -U file.pkg.tar.zst 安装本地构建或已缓存的归档;pacman 仍会从已配置的软件仓库解析所需的依赖项。

有意地删除软件包和孤立软件包 #

pacman -R package-name 删除目标软件包。-Rs 还会删除因该目标软件包而变得不再需要的依赖项;-Rns 还会删除保留的备份文件。接受删除操作前,应检查建议的删除列表,因为即使 pacman 的依赖关系图已不再要求某些依赖软件包,递归删除仍可能删除另一个本地工作流依赖的软件包。

删除前先列出可能的孤立软件包:

sh
pacman -Qdt
pacman -Qtdq

仅在检查列表后删除其中的名称。pacman -Qtdq 返回空结果并不是需要通过未加保护的命令替换来规避的错误。

保留恢复选项 #

默认缓存目录是 /var/cache/pacman/pkg。保留近期版本;pacman-contrib 提供的 paccache 可以在保留指定数量条目的同时清理较旧的条目。使用兼容的缓存归档可以执行受控降级:

sh
sudo pacman -U /var/cache/pacman/pkg/package-old.pkg.tar.zst

降级库可能需要使依赖它的软件包保持匹配。检查依赖约束并规划一致的事务,不要直接替换 /usr 下的文件,因为这会绕过 pacman 的数据库、钩子和所有权模型。对于中断或损坏的安装,请查阅 /var/log/pacman.log,使用 pacman 重新安装受影响的软件包,并在必要时从经过验证的备份中恢复文件。

保持签名验证启用 #

软件仓库和软件包签名可以保护供应链。通过 archlinux-keyring、pacman-key、系统时间和有文档记录的镜像配置,修复已过期、缺失或已撤销的信任信息;不要为了完成更新而禁用签名检查。签名错误表明存在必须在安装软件包前查明的问题。

评论

在 GitHub 上阅读或评论(发表评论需要登录)