pacman使用笔记
-S, --sync
:源里的包
# 安装或升级某包
pacman -S 包名
# 当未安装或者版本较旧时才安装
# https://superuser.com/questions/568967/prevent-pacman-from-reinstalling-packages-that-were-already-installed
pacman -S --needed 包名
# 源中某包的详细信息
pacman -Si 包名
-R
: 移除某包
一般用sudo pacman -Rs 包名
:
-s, --recursive
Remove each target specified including all of their dependencies, provided that (A) they are not required by other
packages; and (B) they were not explicitly installed by the user. This operation is recursive and analogous to a
backwards --sync operation, and it helps keep a clean system without orphans. If you want to omit condition (B), pass
this option twice.
-c
: cascade,同时移除依赖该包的其他包。例如A依赖B依赖C,那么pacman -Rc C
会同时移除A B C。
参考:pacman: cascade vs. recursive
-F, --files
: Query the files database
首先需要更新一下file database:
pacman -Fy
一般用来查看命令由哪个包提供。比如查看dig
命令由哪个包提供。有两种方法:
pacman -F dig
输出:
extra/bind 9.16.25-1
usr/bin/dig
community/epic4 2.10.10-2
usr/share/epic/script/dig
这个方法可以自己写正则表达式匹配,可能比较灵活一点:
pacman -Fl | grep -e "/dig$"
-e
: 使用正则表达式。
$
: 匹配行末。
输出:
bind usr/bin/dig
epic4 usr/share/epic/script/dig
所以安装bind
sudo pacman -S bind
dig -v
DiG 9.18.0
参考:manjaro pacman查看已安装命令隶属于哪个包(arch应该也行)
-Q
: 查看已安装的包
# 所有包
pacman -Q
# 某包
pacman -Q 包名
# 详细信息
pacman -Qi 包名
# 包内的所有文件
pacman -Ql 包名
# 查看文件由哪个包提供
# https://bbs.archlinux.org/viewtopic.php?id=90635
pacman -Qo 相对路径或绝对路径
这里面也包括用yay安装的包。
参考:
How to find which package holds a file?
-Qu
: 查看可更新包
先更新源,获取最新应用的列表:
sudo pacman -Sy
查询可更新包:
pacman -Qu
yay同理:
yay -Sy
yay -Qu
查看某包被哪些包依赖
pacman -Qi 包名
里面的Required By
后面的就是依赖这个包的包。
或者用pkgtools
包里的whoneeds
:
# archlinuxcn源里也有pkgtools
sudo yay -S pkgtools
whoneeds 包名
无效或已损坏的软件包
可能是archlinux-keyring
过时了,需要更新一下:
sudo pacman -Sy archlinux-keyring && sudo pacman -Su
来源:
https://wiki.archlinux.org/title/Pacman/Package_signing#Upgrade_system_regularly
不再使用的依赖
pacman -Qdt
其中有一些可能是yay自动下载用于构建包的,所以最好肉眼挑选出不需要的包,手动卸载。如果确认里面没有需要使用的包,才可以用这条指令把它们全部卸掉:pacman -Rsn $(pacman -Qdtq)
。
来源:https://bbs.archlinux.org/viewtopic.php?id=57431