00. Pacman常用命令
0000. 安装软件包
Tip
有的包组包含大量的软件包,有时用户只需其中几个。除了逐一键入序号外,pacman 还支持选择或排除某个区间内的的软件包:
Enter a selection (default=all): 1-10 15
这将选中序号 1 至 10 和 15 的软件包。而Enter a selection (default=all): ^5-8 ^2
将会选中除了序号 5 至 8 和 2 之外的所有软件包。
Tip
如果列表中的包已经安装在系统中,它会被重新安装,即使它已经是最新的。可以用
--needed
选项覆盖这种行为。
Warning
在 Arch 上安装软件包时,请避免在还没有更新系统前刷新同步软件包列表(例如,当官方软件仓库不再提供某个软件包时)。实际操作上,请使用
pacman -Syu _软件包名_
, 而不要使用pacman -Sy _软件包名_
,因为后者可能会导致依赖问题。参见 System maintenance#不支持部分升级一文和 BBS#89328 论坛讨论。
0001. 删除软件包
0002. 升级软件包
Warning
- 建议用户遵守System maintenance#更新系统的指导,定期更新系统,并不盲目地执行这些命令。
- Arch 只支持系统完整升级,详细参见System maintenance#不支持部分升级和安装软件包。
0003. 查询软件包
pacman 使用 -Q
参数查询本地软件包数据库, -S
查询同步数据库,以及 -F
查询文件数据库。要了解每个参数的子选项,分别参见 pacman -Q --help
,pacman -S --help
和pacman -F --help
。
0004. 依赖查询
0005. 数据库结构
pacman数据库通常位于 /var/lib/pacman/sync
. 对于每一个在/etc/pacman.conf
中指定的软件仓库, 这里都有一个一致的数据库。数据库文件夹里每个tar.gz文件都包含着一个仓库的软件包信息。例如which
包:
这个 depends
项列出了该软件的依赖包, 而desc
有该包的介绍,例如文件大小和MD5值 。
0006. 清理软件包缓存
pacman 将下载的软件包保存在 /var/cache/pacman/pkg/
并且不会自动移除旧的和未安装版本的软件包。这样做有一些好处:
- 这样允许降级软件包而不需要通过其他方式提取旧版本,例如 Arch Linux Archive.
- 被卸载的软件包可以轻易地直接从缓存文件夹重新安装,不需要重新从软件仓库下载。
然而,需要定期手动清理缓存来避免该文件夹无限制增大。
pacman-contrib包 提供的 paccache(8) 脚本默认会删除所有缓存的版本和已卸载的软件包,除了最近的3个会被保留:
启用 (systemctl enable)和 启动 (systemctl start)paccache.timer
来每周删除不使用的包。
Tip
提示: 可以使用钩子自动执行清理,安装 pacman-cleanup-hookAUR 参考[1]。
也可以自己设置保留最近几个版本:
添加-u
/--uninstalled
开关来限制paccache的行为只作用于卸载的包。例如清理所有卸载的包的缓存版本,可以用以下命令:
更多参数参见paccache -h
。
pacman也有一些内建参数用于清除缓存和那些不再在/etc/pacman.conf
配置文件中列出的软件仓库残留数据库文件。然而 pacman 并不提供保留一定数量的过去版本的功能,因此它比 paccache 的默认选项更加激进。
要删除目前没有安装的所有缓存的包,和没有被使用的同步数据库,执行:
要删除缓存中的全部文件,使用两次-c
开关。这是最为激进的方式,将会清空缓存文件夹:
Warning
警告: 应当避免从缓存中删除所有过去版本和卸载的包,除非需要更多磁盘空间。这样会导致无法降级或重新安装包而不再次下载他们
pkgcacheclean以及pacleaner是两个进一步清理缓存的替代工具。
0007. 其他命令
下载包而不安装它:
安装一个本地包(不从源里下载):
要将本地包保存至缓存,可执行:
安装一个远程包(不在 pacman 配置的源里面):
要禁用 -S
, -U
和 -R
动作,可以使用 -p
选项.
pacman 会列出需要安装和删除的软件,并在执行动作前要求需要的权限。
进一步查看:pacman ArchWiki。
0008. yay
yay
用法和pacman
基本一致,有几条额外常用命令值得注意: