Manjaro-pacman命令说明

pacman - 软件包管理器,这里记录一些常用的命令

查询

查看已安装软件的可选依赖

1
pacman -Si

查看可用的包组里的包

1
# pacman -Sg gnome

安装软件包

安装指定的包

安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:

1
# pacman -S package_name1 package_name2 ...

用正则表达式安装多个软件包

1
# pacman -S $(pacman -Ssq package_regex)

安装多个含有相似名称的软件包,而并非整个包组或全部匹配的软件包;

1
# pacman -S plasma-{desktop,mediacenter,nm}

安装包组

有的包组包含大量的软件包,有时用户只需其中几个。除了逐一键入序号外,pacman 还支持选择或排除某个区间内的的软件包:

1
Enter a selection (default=all): 1-10 15

这将选中序号 1 至 10 和 15 的软件包。而

1
Enter a selection (default=all): ^5-8 ^2

将会选中除了序号 5 至 8 和 2 之外的所有软件包。

想要查看哪些包属于 gnome 组,运行:

1
# pacman -Sg gnome

也可以访问 https://www.archlinux.org/groups/ 查看可用的包组。

注意: 如果列表中的包已经安装在系统中,它会被重新安装,即使它已经是最新的。可以用 --needed 选项覆盖这种行为。

删除软件包

删除单个软件包,保留其全部已经安装的依赖关系

1
pacman -R package_name

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

1
pacman -Rs package_name

要删除软件包和所有依赖这个软件包的程序:

警告: 此操作是递归的,请小心检查,可能会一次删除大量的软件包。

1
# pacman -Rsc package_name

要删除软件包,但是不删除依赖这个软件包的其他程序:

1
# pacman -Rdd package_name

pacman 删除某些程序时会备份重要配置文件,在其后面加上*.pacsave扩展名。-n 选项可以避免备份这些文件:

1
pacman -Rn package_name

注意: pacman 不会删除软件自己创建的文件(例如主目录中的 .dot 文件不会被删除。

升级软件包

一个 pacman 命令就可以升级整个系统。花费的时间取决于系统有多老。这个命令会同步非本地(local)软件仓库并升级系统的软件包:

1
# pacman -Syu

查询包数据库

pacman 使用 -Q 参数查询本地软件包数据库。参见:

1
$ pacman -Q --help

使用 -S 参数来查询远程同步的数据库。参见:

1
$ pacman -S --help

pacman 可以在包数据库中查询软件包,查询位置包含了软件包的名字和描述:

1
$ pacman -Ss string1 string2 ...

有时,-s的内置正则会匹配很多不需要的结果,所以应当指定仅搜索包名,而非描述或其他子段,下面的命令就会返回很多不必要结果:

1
$ pacman -Ss '^vim-'

要查询已安装的软件包:

1
$ pacman -Qs string1 string2 ...

按文件名查找软件库:

1
$ pacman -Fs string1 string2 ...

显示软件包的详尽的信息:

1
$ pacman -Si package_name

查询本地安装包的详细信息:

1
$ pacman -Qi package_name

使用两个 -i 将同时显示备份文件和修改状态:

1
$ pacman -Qii package_name

要获取已安装软件包所包含文件的列表:

1
$ pacman -Ql package_name

查询远程库中软件包包含的文件:

1
$ pacman -Fl package_name

检查软件包安装的文件是否都存在:

1
$ pacman -Qk package_name

两个参数k将会执行一次更彻底的检查。 查询数据库获取某个文件属于哪个软件包:

1
$ pacman -Qo /path/to/file_name

查询文件属于远程数据库中的哪个软件包:

1
$ pacman -Fo /path/to/file_name

要罗列所有不再作为依赖的软件包(孤立orphans):

1
$ pacman -Qdt

要罗列所有明确安装而且不被其它包依赖的软件包:

1
$ pacman -Qet

要显示软件包的依赖树:

1
$ pactree package_name

检查一个安装的软件包被那些包依赖,可以使用 pkgtoolsAUR中的whoneeds:

1
$ whoneeds package_name

或者pactree中使用-r:

1
$ pactree -r package_name

更多信息查看pacman tips

清理软件包缓存

pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会自动移除旧的和未安装版本的软件包,因此需要手动清理,以免该文件夹过于庞大。

使用内建选项即可清除未安装软件包的缓存:

1
# pacman -Sc

pacman-contrib 提供的 paccache 命令默认会删除近3个版本前的软件包

1
# paccache -r

Tip: 可以使用 pacman hooks 自动执行清理,这里是参考示例。

也可以自己设置保留最近几个版本:

1
# paccache -rk 1

清理所有未安装包的缓存文件,再此运行paccache:

1
# paccache -ruk0

更多功能参见paccache -h

paccache,还可以使用 Arch User Repository 中的 pkgcachecleanAUR:

1
# pkgcacheclean

,以及pacleanerAUR,这两个是未来的替代工具.

其他命令

升级系统时安装其他软件包:

1
# pacman -Syu package_name1 package_name2 ...

下载包而不安装它:

1
# pacman -Sw package_name

安装一个本地包(不从源里下载):

1
# pacman -U /path/to/package/package_name-version.pkg.tar.xz

要将本地包保存至缓存,可执行:

1
# pacman -U file://path/to/package/package_name-version.pkg.tar.xz

安装一个远程包(不在 pacman 配置的源里面):

1
# pacman -U http://www.example.com/repo/example.pkg.tar.xz

要禁用 -S, -U-R 动作,可以使用 -p 选项.

pacman 会列出需要安装和删除的软件,并在执行动作前要求需要的权限。

参考资源

pacman (简体中文)

0%
隐藏