pacman命令

pacman 命令 #

pacman(Package Manager)是 Arch Linux 及其衍生发行版(如 Manjaro)的包管理工具,用于安装、更新、移除和管理软件包。它以其简单、快速和强大的特性而闻名,能够处理本地和远程软件包。

语法 #

pacman [选项] [操作] [包...]

常用操作 #

操作 描述
-S, --sync 从远程仓库安装或升级包
-R, --remove 移除包
-Q, --query 查询包数据库
-F, --files 查询文件数据库
-T, --deptest 检查依赖关系
-U, --upgrade 从文件安装或升级包
-D, --database 修改包数据库
-V, --version 显示版本信息
-h, --help 显示帮助信息

常用选项 #

通用选项 #

选项 描述
-v, --verbose 显示详细信息
-r, --root <路径> 设置安装根目录
-b, --dbpath <路径> 设置数据库路径
--cachedir <路径> 设置包缓存目录
--config <文件> 设置配置文件
--noprogressbar 不显示进度条
--noscriptlet 不执行安装脚本
--print 打印目标而不执行操作
--confirm 总是请求确认
--noconfirm 不请求确认
--needed 不重新安装已是最新的包
--asdeps 标记包为作为依赖项安装
--asexplicit 标记包为显式安装

同步选项(-S) #

选项 描述
-y, --refresh 下载新的包数据库
-u, --sysupgrade 升级所有已安装的包
-s, --search 搜索远程仓库中的包
-i, --info 查看包信息
-l, --list 列出包中的文件
-g, --groups 查看包组的内容
-c, --clean 从缓存中删除旧包
-w, --downloadonly 下载包但不安装
--ignore <包> 忽略包升级
--ignoregroup <组> 忽略组升级

查询选项(-Q) #

选项 描述
-i, --info 查看包信息
-l, --list 列出包中的文件
-s, --search 搜索已安装的包
-o, --owns <文件> 查询拥有文件的包
-g, --groups 查看包组的内容
-d, --deps 列出包的依赖
-t, --unrequired 列出不被任何包依赖的包
-q, --quiet 显示较少的信息
-e, --explicit 列出显式安装的包
-m, --foreign 列出不在同步数据库中的包
-n, --native 列出只在同步数据库中的包
-k, --check 检查包文件是否存在

移除选项(-R) #

选项 描述
-s, --recursive 移除指定的包及其所有未被其他包使用的依赖
-n, --nosave 移除配置文件
-c, --cascade 移除包及所有依赖于它的包
-u, --unneeded 移除不被其他包依赖的包

数据库选项(-D) #

选项 描述
--asdeps 将包标记为依赖项
--asexplicit 将包标记为显式安装
--check 检查数据库的有效性

常见用法 #

1. 安装包 #

pacman -S package_name

例如:

pacman -S firefox

2. 安装多个包 #

pacman -S package1 package2 package3

3. 更新包数据库 #

pacman -Sy

这将同步包数据库,但不升级包。

4. 升级所有包 #

pacman -Syu

这将同步包数据库并升级所有已安装的包。

5. 搜索包 #

pacman -Ss keyword

例如:

pacman -Ss "web browser"

6. 查看包信息 #

pacman -Si package_name

7. 移除包 #

pacman -R package_name

8. 移除包及其依赖 #

pacman -Rs package_name

这将移除包及其不被其他包使用的依赖。

9. 移除包及其配置文件 #

pacman -Rn package_name

10. 移除包、其依赖和配置文件 #

pacman -Rns package_name

11. 查询已安装的包 #

pacman -Q

12. 查询已安装的特定包 #

pacman -Qi package_name

13. 列出包中的文件 #

pacman -Ql package_name

14. 查找拥有特定文件的包 #

pacman -Qo /path/to/file

15. 清理包缓存 #

pacman -Sc

这将删除未安装的包缓存。

16. 完全清理包缓存 #

pacman -Scc

这将删除所有包缓存,包括已安装的包。

17. 安装本地包文件 #

pacman -U /path/to/package.pkg.tar.zst

18. 下载包但不安装 #

pacman -Sw package_name

19. 列出孤立的包 #

pacman -Qdt

这将列出不被任何包依赖且作为依赖项安装的包。

20. 列出显式安装的包 #

pacman -Qe

高级用法 #

1. 忽略特定包的升级 #

/etc/pacman.conf中添加:

IgnorePkg = package_name1 package_name2

或者在命令行中:

pacman -Syu --ignore=package_name

2. 忽略包组的升级 #

/etc/pacman.conf中添加:

IgnoreGroup = group_name

或者在命令行中:

pacman -Syu --ignoregroup=group_name

3. 安装包组 #

pacman -S group_name

例如:

pacman -S xorg

4. 查看包组 #

pacman -Sg

5. 查看包组内容 #

pacman -Sg group_name

6. 查找未满足的依赖 #

pacman -T

7. 查找外部包(AUR 等) #

pacman -Qm

8. 查找仓库包 #

pacman -Qn

9. 将包标记为依赖项 #

pacman -D --asdeps package_name

10. 将包标记为显式安装 #

pacman -D --asexplicit package_name

11. 搜索文件数据库 #

pacman -F filename

12. 更新文件数据库 #

pacman -Fy

13. 查找提供特定文件的包 #

pacman -F /path/to/file

14. 检查包文件的完整性 #

pacman -Qk package_name

15. 详细检查包文件的完整性 #

pacman -Qkk package_name

配置文件 #

pacman 的主要配置文件和目录:

  • /etc/pacman.conf:主配置文件
  • /etc/pacman.d/mirrorlist:镜像列表
  • /var/lib/pacman/:包数据库目录
  • /var/cache/pacman/pkg/:包缓存目录

镜像配置 #

镜像服务器在/etc/pacman.d/mirrorlist中配置。可以使用reflector工具自动选择最快的镜像:

# 选择最近24小时内同步的10个最快的镜像
reflector --latest 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

钩子 #

pacman 5.0 及更高版本支持钩子,可以在特定操作前后执行脚本。钩子配置文件位于:

  • /etc/pacman.d/hooks/:系统钩子目录
  • /usr/share/libalpm/hooks/:包安装的钩子目录

钩子文件示例:

[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = kernel26

[Action]
Description = Updating boot image
When = PostTransaction
Exec = /usr/bin/update-grub

AUR(Arch User Repository) #

pacman 不直接支持 AUR,但有几个辅助工具可以使用:

  • yay:流行的 AUR 助手
  • paru:另一个 AUR 助手,用 Rust 编写
  • aurman:另一个 AUR 助手
  • pamac:Manjaro 的图形包管理器,支持 AUR

使用yay的示例:

# 安装AUR包
yay -S package_name

# 更新系统,包括AUR包
yay -Syu

# 搜索包,包括AUR
yay -Ss keyword

提示 #

  • 定期运行pacman -Syu以保持系统更新
  • 使用pacman -Qdt查找并移除孤立的包
  • 定期清理包缓存以节省磁盘空间
  • /etc/pacman.conf中启用彩色输出:Color
  • /etc/pacman.conf中启用并行下载:ParallelDownloads = 5
  • 使用pacman -Ql package_name | grep bin快速找出包安装的可执行文件
  • 在大型系统更新前,先查看Arch Linux 新闻
  • 使用pactree package_name查看包的依赖树
  • 使用pacman -Qii package_name查看包的详细信息,包括安装原因
  • 使用pacman -Qqe > pkglist.txt备份已安装的包列表
  • 使用pacman -S --needed - < pkglist.txt从列表安装包
  • 使用pacman-contrib包中的工具扩展 pacman 功能
    • paccache:高级缓存清理
    • checkupdates:检查更新而不修改系统数据库
    • rankmirrors:对镜像进行速度排名