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
:对镜像进行速度排名