Pacman

来自百合仙子's Wiki
跳转到导航 跳转到搜索

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

查询本地与 AUR 中版本不相符的软件包:[1]

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,软件依赖图
  • gtkpacmanGTK图形前端
  • pacmanlog2gource,将 pacman 的日志转成 gource 日志

打包

  • srcpac,从源码安装官方提供的软件包
  • repacman,将已安装的软件重新打包
  • pacman-contrib,包含一个重新打包脚本bacman

统计

pkgstats 程序用于统计用户软件包等信息,会自动安装一个每周的 cron job。统计信息在 https://www.archlinux.de/?page=Statistics

参见

外部链接

参考资料