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 会列出需要安装和删除的软件,并在执行动作前要求需要的权限。