-------
https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#List_of_installed_packages
https://wiki.archlinux.org/index.php/Pacman#Installation_reason
已安装的软件包列表
保留所有显式安装的软件包的列表可能很有用,例如备份系统或加快新系统上的安装:
$ pacman -Qqe > pkglist.txt
注意:
使用选项-t,未提及其他显式安装的软件包已经需要的软件包。如果从此列表重新安装,则将安装它们,但仅作为依赖项。
使用选项-n,列表中将省略外部包(例如来自AUR)。
使用 comm -13 <(pacman -Qqdt | sort) <(pacman -Qqdtt | sort) > optdeplist.txt
创建可以重新安装的已安装可选依赖项的列表 --asdeps。
使用 pacman -Qqem > foreignpkglist.txt 创建AUR和已经显式安装等国外包的列表。

最后,要确保系统的已安装软件包与列表匹配,并删除其中未提及的所有软件包:
# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))

列出包中所有已更改的文件
如果您怀疑文件损坏(例如,软件/硬件故障),但不确定文件是否已损坏,您可能希望与软件包中的哈希值进行比较。这可以通过pacutils来完成:
# paccheck --md5sum --quiet

重新安装所有包
要重新安装所有本机程序包,请使用:
# pacman -Qqn | pacman -S -
外国(AUR)包裹必须单独重新安装; 你可以列出它们pacman -Qqm。
Pacman默认保留安装原因。
https://wiki.archlinux.org/index.php/Pacman#Installation_reason


列出包
您可能希望获得已安装软件包及其版本的列表,这在报告错误或讨论已安装的软件包时很有用。

列出所有显式安装的包:pacman -Qe。
列出名为的组中的所有包group:pacman -Sg group
列出所有显式安装本地程序包(即存在于同步数据库)不是直接或可选的依赖:pacman -Qent。
列出所有外包(通常是手动下载并安装或包裹从仓库取出)pacman -Qm。
列出所有本地软件包(从同步数据库(一个或多个)安装): pacman -Qn。
按正则表达式列出包:。pacman -Qs regex
使用自定义输出格式的regex列出包:( 需要expac)。expac -s "%-30n %v" regex
仅显示本地已安装软件包的树,请使用pacman -Qi

以下命令将列出所有已安装的软件包及其各自的大小:
$ pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
要列出所有开发/不稳定包,请运行:
$ pacman -Qq | grep -Ee '-(bzr|cvs|darcs|git|hg|svn)$'
识别不属于任何包的文件
如果您的系统具有不属于任何软件包的杂散文件(如果您不使用软件包管理器安装软件,则常见情况),您可能需要查找此类文件以进行清理。
一种方法是使用# pacreport --unowned-files从pacutils这将列出其他细节之中无主文件。
另一个是列出所有感兴趣的文件并检查pacman:
# find /etc /usr /opt /var | LC_ALL=C pacman -Qqo - 2>&1 > /dev/null | cut -d ' ' -f 5-

删除未使用的包(孤儿)
用于递归删除孤立及其配置文件:
#pacman -Rns $(pacman -Qtdq)

删除基本组以外的所有内容
如果有必要删除除基本组之外的所有包,请尝试这种单行(需要pacman-contrib):
# pacman -R $(comm -23 <(pacman -Qq | sort) <((for i in $(pacman -Qqg base); do pactree -ul "$i"; done) | sort -u))

备份pacman数据库
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local
通过将pacman_database.tar.bz2文件移动到/目录并执行以下命令,可以恢复数据库:
# tar -xjvf pacman_database.tar.bz2