Pacman
跳转到导航
跳转到搜索
Arch Linux 的包管理器。
常用示例
安装/卸载
安装包
pacman -S packages
pacman -Sf packages #重新安装
pacman -Sd packages #忽略依赖关系
卸载包
pacman -R packages
pacman -Rs packages #同时卸载依赖的包
pacman -Rn packages #同时删除相关配置文件
pacman -Rdd packages #忽略依赖关系卸载
只下载
pacman -Sw packages
安装已在本地的包
pacman -U files
查询
查询包
pacman -Ss pattern
pacman -Qs pattern #查询已安装的软件包
pacman -Qdt #孤立包
# 所有主动安装的包
LANG=C pacman -Qei | awk '/^Name/ { name=$3 } /^Groups/ { if ( $3 != "base" && $3 != "base-devel" ) { print name } }'
pacman -Qm #从本地安装的包,如通过 yaourt
pacman -Sl core #列出指定仓库的所有包
# 指定仓库的所有包的名字和版本,使用指定的格式
pacman -Slq archlinuxcn | xargs pacman -Sddp --print-format '%n: %v'
# 指定仓库的大小
pacman -Slq extra | xargs pacman -Sddp --print-format '%s' | sumnum | filesize
包信息
pacman -Ql package #已安装软件包所包含文件的列表
pacman -Qo /path/to/a/file #文件属于哪个包
pacman -Qi package #包信息,含有依赖关系等
另见 package-query。
更新
更新包信息
pacman -Sy
升级
pacman -Su
pacman -Syu #同时更新包信息
标记
标记指定包为显式安装或者作为依赖安装
pacman -D --asexplicit package
pacman -D --asdeps package
清理
pacman -Sc #删除缓存中所有未安装的软件包
pacman -Scc #删除所有缓存的文件
pacman 会询问是否要删除旧的软件包,以及是否删除无用的软件库(即 /var/lib/pacman/sync
下的各目录)。
配置文件中的 CleanMethod
控制 -Sc
保留已安装的软件包还是最新的软件包。默认为 KeepInstalled
。
pacman -Qmq | parallel 'ver=($(package-query {} -AQ -f "%l")); [[ "${ver[1]}" != "${ver[2]}" ]] && echo {} ${ver[1]} != ${ver[2]}'
清理缓存,只保留已安装包的两个版本:
paccache -rv -k2
paccache -rv -k0 -u
选项
--noconfirm
- 不提示是否确认
配置
设定使用的下载程序
XferCommand = /usr/bin/wget -c --passive-ftp -c %u
XferCommand = /usr/bin/aria2c -s 2 -m 2 -d / -o %o %u
配置文件
/etc/pacman.conf
以及/etc/pacman.d/mirrorlist
优化
提高数据库访问速度
使用 pacman-optimize
命令尝试将所有小文件放在磁盘上同一个物理区域,以减少磁头移动。参见Improve Pacman Performance (简体中文) - ArchWiki。
另外,可考虑将其存放数据的目录挂载到单独的文件系统上,如一个reiserfs类型的loopback文件。参见pacman提速 - osily。
内部原理
软件包的签名是存储在软件仓库数据库( .db
包)文件里的,base64 编码数据,位于相应软件描述文件( desc
文件)的 PGPSIG
字段。
相关软件
- pacman-color,带彩色输出的 pacman
- pacserve,用于 LAN 的包缓存服务
- downgrader, Powerful packages downgrader for Archlinux, powered by libalpm. Works with AUR, ARM and pacman logs
查询与可视化
- pkgfile,属于pkgtools包,用于查询文件属于哪个包
- pactree,树形输出软件包的依赖,属于 pacman 这个包
- pacgraph,软件依赖图
- gtkpacman,GTK图形前端
- pacmanlog2gource,将 pacman 的日志转成 gource 日志
打包
- srcpac,从源码安装官方提供的软件包
- repacman,将已安装的软件重新打包
- pacman-contrib,包含一个重新打包脚本bacman
统计
pkgstats 程序用于统计用户软件包等信息,会自动安装一个每周的 cron job。统计信息在 https://www.archlinux.de/?page=Statistics 。
参见
外部链接
- Arch 官方文档
- 开源世界旅行手册: Pacman
- archlinux的软件管理工具pacman
- 两个新的 pacman 外壳:clyde 和 packer « K.I.S.S. – 简单哲学,其中packer主要目的是整合pacman和AUR。
- pacman 疑难杂症篇 | delectate's blog
- MSYS2 | SourceForge.net: 一个使用 pacman 的 Windows 类 UNIX 工具集,基于 Cygwin
- Pacman Hooks 简介 | Felix's Blog