pacman
命令是 Arch linux 的软件包管理工具,和 Debian 上的 apt,Redhat 上的 yum 类似,用来安装和删除软件,以及系统更新等操作。算是使用 Arch linux 系统时必须要掌握的一个命令。
pacman 命令格式
pacman <操作选项> [选项...] [操作目标]
pacman
命令的提供了丰富的命令选项,其中比较最主要的是操作选项,用来指示命令需要做什么动作。比如查询是 --query
,安装是 --sync
,删除是 --remove
。操作选项后可以跟更多其他类型的辅助选项。操作目标大多数时候是软件名称,或者查询关键字等。
pacman 命令例子
关于 pacman
命令完整的选项介绍请参考文末的命令选项部分。下面先以例子来展示 pacman
命令的日常用法。
首先来看个使用 Arch linux 时每天必须要敲一次的 pacman 命令:
pacman -Syu
它表示把当前系统和安装的软件都更新到最新状态。这也是用 Arch linux 的人常说的「滚」系统。我个人建议每天要执行一次。间隔时间越长,使用这个命令更新系统出现异常的概率会变大。在刚开始使用 Arch 时,我经常十天半个月的更新一次,最常遇到的问题是软件签名过期而导致更新失败,只能先解决更新签名的问题后才能再使用此命令。换成每天执行一次后,就再没出现类似问题。
第二个常用的操作是通过 pacman 命令安装软件:
pacman -S nginx
如果不太确定软件名称,还可以查询一下:
pacman -Ss nginx
查看包的详细信息:
pacman -Qi nginx
列出包的相关文件:
pacman -Ql nginx
删除软件包:
pacman -R nginx
pacman 命令选项
操作选项
缩写 | 完整名称 | 说明 |
---|---|---|
-D |
--database |
操作包数据库。 |
-Q |
--query |
查询包数据库。 |
-R |
--remove |
从系统中删除包。 |
-S |
--sync |
直接从远程存储库同步并安装软件包,包括所需的所有依赖项。 |
-T |
--deptest |
检查依赖关系。 |
-U |
--upgrade |
升级或向系统添加包,并从同步存储库安装所需的依赖项。 |
-F |
--files |
查询文件数据库。 |
-V |
--version |
显示命令版本信息。 |
-h |
--help |
显示命令帮助信息。 |
通用选项
缩写 | 完整名称 | 说明 |
---|---|---|
-b |
--dbpath <path> |
指定软件库位置。 |
-r |
--root <path> |
指定软件安装的根目录。 |
-v |
--verbose |
让命令输出更详细的信息。 |
--arch <arch> |
指定替补结构。 | |
--cachedir <dir> |
指定软件包缓存目录。 | |
--color <when> |
高亮显示选项。可用值为 always , never 和 auto 。 |
|
--config <file> |
指定配置文件。 | |
--debug |
显示调试信息。 | |
--gpgdir <dir> |
指定 GnuPG 用于验证签名的目录。 | |
--hookdir <dir> |
指定包含钩子文件的替代目录。 | |
--logfile <file> |
指定日志目录。 | |
--noconfirm |
不显示确认提示消息。 | |
--confirm |
显示确认消息。 | |
--disable-download-timeout |
禁用默认的低速限制和下载超时。 | |
--sysroot <dir> |
指定一个替代的系统根。 |
事务选项
事务选项主要应用于 -S
, -R
和 -U
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-d |
--nodeps |
跳过依赖项版本检查。 |
--assume-installed <package=version> |
向事务添加带有版本 version 的虚拟包 package 以满足依赖性。 |
|
--dbonly |
只添加或删除数据库条目,仍保留所有文件。 | |
--noprogressbar |
下载文件时不显示进度条。 | |
--noscriptlet |
不执行安装脚本。 | |
-p |
--print |
只显示内容,不执行实际操作。 |
--print-format <format> |
设置显示格式。可用的格式占位符有这些: %n 为软件包名, %v 为软件包版本, %l 为文件位置, %r 为库名, %s 为大小。 |
更新选项
更新选项主要应用于 -S
和 -U
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-w |
--downloadonly |
从服务器检索所有包,但不做安装和升级操作。 |
--asdeps |
隐式安装软件包。 | |
--asexplicit |
显式安装软件包。 | |
--ignore <package> |
忽略包的升级。 | |
--ignoregroup <group> |
忽略组中所有包的升级。 | |
--needed |
不重新安装已经是最新的目标软件包。 | |
--overwrite <glob> |
绕过文件冲突检查并覆盖冲突文件。 |
查询选项
查询选项主要应用于 -Q
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-c |
--changelog |
查看软件包的变更日志。 |
-d |
--deps |
限制或过滤依赖包的输出。 |
-e |
--explicit |
限制或过滤显式安装包的输出。 |
-g |
--groups |
显示分组下的所有成员软件包。 |
-i |
--info |
显示软件包的信息。 |
-k |
--check |
检查系统中是否存在软件包包含的所有文件。 |
-l |
--list |
列出软件包的所有文件。 |
-m |
--foreign |
限制或过滤同步数据库中不存在的软件包输出。 |
-n |
--native |
限制或过滤同步数据库中存在软件包的输出。 |
-o |
--owns <file> |
搜索包含指定文件的软件包。 |
-p |
--file |
表示命令行上提供的包是一个文件,而不是数据库中的一个条目。 |
-q |
--quiet |
对查询操作显示更少的信息。 |
-s |
--search <regexp> |
使用正则搜索软件包名称和描述。 |
-t |
--unrequired |
限制或过滤输出,只打印当前安装不需要的软件包。 |
-u |
--upgrades |
限制或过滤本地系统中过期的包的输出,只使用包版本来查找过时的包。 |
删除选项
删除选项主要应用于 -R
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-c |
--cascade |
删除指定软件包,包括依赖此软件包的其他软件。 |
-n |
--nosave |
忽略备份指定。 |
-s |
--recursive |
删除指定软件包以及相关依赖项。 |
-u |
--unneeded |
删除没有依赖的软件包。 |
同步选项
同步选项主要应用于 -S
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-c |
--clean |
从缓存中删除没有使用的软件包和数据,以释放磁盘空间。 |
-g |
--groups |
显示软件包的所有成员。 |
-i |
--info |
显示软件包的信息。 |
-l |
--list |
列出存储库中的所有包。 |
-q |
--quiet |
对同步操纵显示更少的信息。 |
-s |
--search <regexp> |
使用正则搜索软件名称和描述。 |
-u |
--sysupgrade |
升级所有过期的软件包。 |
-y |
--refresh |
从服务器下载新的软件库。 |
数据库选项
数据库选项主要应用于 -D
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
--asdeps <package> |
标记软件包为非显式安装。 | |
--asexplicit <package> |
标记软件包为显式安装。 | |
-k |
--check |
检查本地软件包数据库内部是否一致。 |
-q |
--quiet |
使用静默操作,不输出任何信息。 |
文件选项
文件选项主要应用于 -F
操作选项。
缩写 | 完整名称 | 说明 |
---|---|---|
-y |
--refresh |
从服务器上下载最新的软件包数据库。 |
-l |
--list |
列出指定包的文件列表。 |
-x |
--regex |
将查询解释为正则表达式。 |
-q |
--quiet |
对包含文件的操作显示较少的信息。 |
--machinereadable |
以机器码输出匹配的信息。 |