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'