Arch Linux:如何找到提供需求的包

Arch Linux:如何找到提供需求的包

我想在 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旧的包名称,get 并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

标签解析器

相关内容