我想在 pacman 数据库中查询满足要求的包:本质上就是我运行后会安装的包pacman -S <requirement>
。
看来有三种情况:
- 要求是一个包的名称。
- 要求是文件或库的名称。
- 该需求出现在
provides
另一个包的字段中。
前两种情况很简单,但第三种情况却给我带来了麻烦。
例如,需求apache-ant
由包提供ant
。
pacman -S apache-ant
正确识别并安装 ant。
pacman -Q apache-ant
返回我想要的信息,但前提是软件包已经安装。
是否有一个命令与类似pacman -Q
,但如果包未在本地安装也不会失败?
答案1
第三种情况没有内置方法,但我使用了这个:
pacprovides(){
pacman -Si | sed -n '/^Name.*: /{s///;h}; /^Provides.*'"$1"'/{g; p}'
}
h
旧的包名称,g
et 并p
在找到匹配的行时打印它。
答案2
尝试pacman -F string1 string2 ...
参考:查询包数据库
答案3
--print
显示交易的目标:
$ pacman--sync- 打印标签解析器库
文件:///var/cache/pacman/pkg/cpp-utilities-5.20.0-100-x86_64.pkg.tar.zst
文件:///var/cache/pacman/pkg/tagparser-11.5.0-100-x86_64.pkg.tar.zst
该包是最后一个目标,修剪:
$ pacman--sync- 打印libtagparser.so |尾巴-n1 | 转 |切--分隔符='/' --字段=1 |切--delimiter='-' --fields=4- | rev
标签解析器