pacman 软件包管理器

使用

安装指定的包

安装或者升级单个软件包,或者一列软件包(包含依赖包)

1
pacman -S package_name1 package_name2 ...

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

1
pacman -S $(pacman -Ssq package_regex)

选择仓库按照

1
pacman -S extra/package_name

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

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

多层扩展

1
pacman -S plasma-{workspace{,-wallpapers},pa}

安装包组

1
pacman -S gnome

删除软件包

删除但保留依赖关系

1
pacman -R package_name

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

1
pacman -Rs package_name

删除软件包和所有依赖

1
pacman -Rsc package_name

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

1
pacman -Rdd package_name

升级软件包

升级整个系统

1
pacman -Syu

查询包数据库

  1. pacman 使用 -Q 参数查询本地软件包数据库

    1
    pacman -Q --help
  2. 使用 -S 参数来查询远程同步的数据库

    1
    pacman -S --help
  3. pacman 可以在包数据库中查询软件包,查询位置包含了软件包的名字和描述

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

    1
    pacman -Ss '^vim-'
  5. 要查询已安装的软件包:

    1
    pacman -Qs string1 string2 ...
  6. 按文件名查找软件库:

    1
    pacman -Fs string1 string2 ...
  7. 显示软件包的详尽的信息:

    1
    pacman -Si package_name
  8. 查询本地安装包的详细信息:

    1
    pacman -Qi package_name
  9. 使用两个 -i 将同时显示备份文件和修改状态:

    1
    pacman -Qii package_name
  10. 要获取已安装软件包所包含文件的列表:

    1
    pacman -Ql package_name
  11. 查询远程库中软件包包含的文件:

    1
    pacman -Fl package_name
  12. 检查软件包安装的文件是否都存在:

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

    1
    pacman -Qo /path/to/file_name
  14. 查询文件属于远程数据库中的哪个软件包:

    1
    pacman -Fo /path/to/file_name
  15. 要罗列所有不再作为依赖的软件包(孤立orphans):

    1
    pacman -Qdt
  16. 要罗列所有明确安装而且不被其它包依赖的软件包:

    1
    pacman -Qet
  17. 要显示软件包的依赖树:

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

    1
    whoneeds package_name
  • 或者pactree中使用-r:
    1
    pactree -r package_name

数据库结构

pacman数据库通常位于 /var/lib/pacman/sync. 对于每一个在 /etc/pacman.conf 中指定的软件仓库, 这里都有一个一致的数据库。数据库文件夹里每个 tar.gz 文件都包含着一个仓库的软件包信息。例如which 包:

1
2
3
4
% tree which-2.20-6
which-2.20-6
|-- depends
`-- desc
  • 这个 depends 项列出了该软件的依赖包, 而desc有该包的介绍,例如文件大小和MD5值 。

清理软件包缓存

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

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

1
pacman -Sc
  • pacman 提供的 paccache 命令默认会删除近3个版本前的软件包
1
paccache -r
  • Tip: 可以使用 pacman hooks 自动执行清理,这里是参考示例
  • 也可以自己设置保留最近几个版本:
1
paccache -rk 1

清理所有未安装包的缓存文件

1
paccache -ruk0

其它命令

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

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 选项.

Via


本站由 VITAN 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。