Linux pacman命令

什么是pacman命令?

pacman(Package Manager)是Arch Linux及其衍生版(如Manjaro、EndeavourOS等)的包管理器。它是一个功能强大的命令行工具,用于安装、更新、删除和管理软件包。

特点: pacman是Arch Linux发行版的核心工具,具有简单、快速、轻量级的特点,使用C语言编写,性能优异。
注意: pacman是Arch Linux特有的包管理器,与Debian/Ubuntu的apt、RedHat/CentOS的yum/dnf不同。

语法格式

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

pacman需要超级用户权限(sudo)来执行安装、更新和删除操作。

基本操作

操作 描述 示例
-S, --sync 从仓库同步/安装软件包 pacman -S package
-Syu 同步仓库并升级所有软件包 pacman -Syu
-R, --remove 删除软件包 pacman -R package
-Q, --query 查询本地软件包数据库 pacman -Q package
-Ss, --search 在仓库中搜索软件包 pacman -Ss keyword
-Si, --info 显示软件包信息 pacman -Si package
-U, --upgrade 安装本地软件包 pacman -U package.pkg.tar.zst
-Sc, --clean 清理包缓存 pacman -Sc

同步数据库

在安装软件前,需要先同步软件包数据库。

同步软件包数据库:

# 同步并更新数据库 sudo pacman -Sy # 仅同步数据库,不更新 sudo pacman -Syy
注意: 通常建议使用pacman -Syu来同时更新系统和同步数据库,避免依赖问题。

安装软件

安装单个软件包:

# 安装软件包 sudo pacman -S firefox # 安装多个软件包 sudo pacman -S vim git curl

安装软件包组:

# 列出可用的软件包组 pacman -Sg # 安装软件包组 sudo pacman -S gnome sudo pacman -S xfce4

重新安装软件包:

# 重新安装软件包 sudo pacman -S firefox --needed

从本地文件安装:

# 从本地文件安装 sudo pacman -U /path/to/package.pkg.tar.zst # 从URL安装 sudo pacman -U https://example.com/package.pkg.tar.zst

系统更新

更新整个系统:

# 同步数据库并更新所有软件包 sudo pacman -Syu # 或者分开执行 sudo pacman -Sy sudo pacman -Su

更新特定软件包:

# 更新特定软件包 sudo pacman -S firefox
重要提示: Arch Linux是滚动更新发行版,建议定期更新系统。更新前请查看Arch官网新闻,了解可能的重大变更。

模拟更新(不实际执行):

# 模拟更新,查看将会更新的包 sudo pacman -Syu --print # 或者使用--print-only选项 sudo pacman -Syu --print-only

删除软件

删除软件包:

# 删除软件包 sudo pacman -R firefox # 删除软件包及其配置文件 sudo pacman -Rns firefox

删除孤立软件包:

# 列出孤立软件包 pacman -Qdt # 删除孤立软件包 sudo pacman -Rns $(pacman -Qdtq)

递归删除依赖:

# 删除软件包及其不再需要的依赖 sudo pacman -Rs firefox # 递归删除,包括依赖的依赖 sudo pacman -Rsc firefox

查询软件包

查询已安装的软件包:

# 检查特定软件包是否已安装 pacman -Q firefox # 列出所有已安装的软件包 pacman -Q # 查询软件包详细信息 pacman -Qi firefox

查询软件包拥有的文件:

# 查询软件包安装的文件 pacman -Ql firefox # 查询特定文件属于哪个软件包 pacman -Qo /usr/bin/firefox

搜索软件包:

# 在仓库中搜索软件包 pacman -Ss firefox # 在已安装的软件包中搜索 pacman -Qs firefox

获取软件包信息:

# 从仓库获取软件包信息 pacman -Si firefox # 显示软件包的依赖 pacman -Qi firefox | grep Depends # 显示反向依赖(哪些包依赖于此包) pactree -r firefox

搜索和列表

搜索包含关键字的软件包:

# 搜索软件包名称和描述 pacman -Ss media player # 使用正则表达式搜索 pacman -Ss '^vim-'

列出仓库中的软件包:

# 列出所有可用的软件包 pacman -Sl # 列出特定仓库的软件包 pacman -Sl core pacman -Sl extra pacman -Sl community

列出已安装的软件包:

# 列出所有明确安装的软件包 pacman -Qe # 列出作为依赖安装的软件包 pacman -Qd # 列出已安装的软件包(按大小排序) pacman -Qi | awk '/^Name/ {name=$3} /^Installed Size/ {size=$4$5} {if (name && size) {print name, size; name=""; size=""}}' | sort -k2 -h

依赖管理

显示依赖关系:

# 显示软件包的依赖 pacman -Si firefox | grep Depends # 使用pactree显示依赖树 pactree firefox # 显示反向依赖树 pactree -r firefox

检查依赖问题:

# 检查损坏的依赖 sudo pacman -Dk # 检查软件包一致性 sudo pacman -Qkk

修复依赖问题:

# 重建软件包数据库 sudo pacman -Syu --overwrite '*' # 重新安装所有软件包 sudo pacman -Qnq | sudo pacman -S - # 使用pacreport检查问题 sudo pacreport --unowned-files

缓存管理

清理包缓存:

# 清理所有未安装的包缓存 sudo pacman -Sc # 清理所有包缓存(包括已安装的) sudo pacman -Scc # 清理孤立包的缓存 sudo pacman -Sc --noconfirm

手动下载软件包到缓存:

# 下载但不安装 sudo pacman -Sw firefox # 查看缓存中的软件包 ls /var/cache/pacman/pkg/

从缓存中安装:

# 从缓存中重新安装旧版本 sudo pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.zst

软件包组操作

列出软件包组:

# 列出所有软件包组 pacman -Sg # 列出特定组的软件包 pacman -Sg gnome

安装软件包组:

# 安装整个软件包组 sudo pacman -S gnome # 安装软件包组中的特定软件包 sudo pacman -S gnome-{calculator,terminal}

查看软件包组成员:

# 查看软件包组的详细信息 pacman -Si gnome

AUR(Arch User Repository)

AUR是Arch Linux的用户社区软件仓库,包含大量不在官方仓库中的软件包。

手动安装AUR软件包:

# 克隆AUR包 git clone https://aur.archlinux.org/package-name.git cd package-name # 生成PKGBUILD文件 makepkg -si

使用yay(AUR助手):

# 安装yay sudo pacman -S yay # 从AUR搜索软件包 yay -Ss package-name # 从AUR安装软件包 yay -S package-name

使用paru(另一个AUR助手):

# 安装paru sudo pacman -S paru # 从AUR搜索和安装 paru -Ss package-name paru -S package-name

常见问题

常见解决方法:
1. 检查磁盘空间:df -h
2. 检查网络连接
3. 清除包缓存:sudo pacman -Sc
4. 删除锁文件:sudo rm /var/lib/pacman/db.lck
5. 更新密钥:sudo pacman-key --refresh-keys
6. 强制更新数据库:sudo pacman -Syyu

1. 从缓存中安装旧版本:
# 查看缓存中的可用版本 ls /var/cache/pacman/pkg/ | grep package-name # 安装旧版本 sudo pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.zst
2. 从Arch Linux Archive下载旧版本
3. 使用downgrade工具:sudo downgrade package-name

pacman:
• 官方包管理器
• 只能安装官方仓库的软件包
• 需要root权限

AUR助手(如yay/paru):
• 第三方工具
• 可以安装AUR仓库的软件包
• 通常不需要root权限(makepkg阶段除外)
• 提供更友好的用户界面

建议: 官方软件包用pacman,AUR软件包用yay/paru。

配置和优化

pacman配置文件:

# 主配置文件 /etc/pacman.conf # 镜像列表文件 /etc/pacman.d/mirrorlist

优化配置:

# 编辑配置文件 sudo nano /etc/pacman.conf # 启用并行下载 ParallelDownloads = 5 # 启用彩色输出 Color ILoveCandy # 启用详细包列表 VerbosePkgLists

选择镜像:

# 生成镜像列表 sudo reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist # 备份原镜像列表 sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

常用选项

选项 描述
-S, --sync 从仓库安装软件包
-Syu 更新系统(同步+升级)
-R, --remove 删除软件包
-Rns 删除软件包及其配置和依赖
-Q, --query 查询本地数据库
-Ss, --search 搜索仓库
-Qs 搜索已安装的软件包
-Si, --info 显示软件包信息
-Qi 显示已安装软件包信息
-U, --upgrade 安装本地软件包
-Sc, --clean 清理缓存
--noconfirm 不提示确认
--needed 跳过已安装的软件包
--overwrite 覆盖文件

最佳实践

定期系统维护:

# 1. 定期更新系统 sudo pacman -Syu # 2. 清理缓存 sudo pacman -Sc # 3. 删除孤立包 sudo pacman -Rns $(pacman -Qdtq) # 4. 检查系统完整性 sudo pacman -Qkk
警告:
1. 永远不要使用pacman -Syyu强制更新,除非必要
2. 更新前查看Arch官网新闻
3. 定期备份重要数据
4. 不要随意删除python、glibc等系统关键包
5. 使用Timeshift等工具备份系统
提示: 使用alias创建常用命令的简写:
# 添加到 ~/.bashrc 或 ~/.zshrc alias update='sudo pacman -Syu' alias cleanup='sudo pacman -Sc' alias orphans='sudo pacman -Rns $(pacman -Qdtq)' alias pkg-info='pacman -Qi' alias search='pacman -Ss'