假设我已经在 Fedora 40 上安装了该包ongres-scram
。
然后
$ rpm --query --requires ongres-scram
给出了安装此包所需的“依赖标签”列表:
javapackages-filesystem
mvn(com.ongres.stringprep:saslprep)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rpmlib(RichDependencies) <= 4.12.0-1
反过来
$ rpm --query --provides ongres-scram
给我安装提供的“依赖标签”:
mvn(com.ongres.scram:common) = 2.1
mvn(com.ongres.scram:common:pom:) = 2.1
ongres-scram = 2.1-13.fc40
依赖标签javapackages-filesystem
由相应的包解析:
$ rpm --query --whatprovides javapackages-filesystem
javapackages-filesystem-6.2.0-9.fc40.noarch
依赖标签肯定与基于maven 的mvn(foo)
构建过程有关,可以解决:
$ rpm --query --whatprovides "mvn(com.ongres.stringprep:saslprep)"
ongres-stringprep-1.1-12.fc40.noarch
$ dnf provides "mvn(com.ongres.stringprep:saslprep)"
...
ongres-stringprep-1.1-12.fc40.noarch : RFC 3454 Preparation of Internationalized Strings in pure Java
...
但依赖标签rpmlib(foo)
尚未解析:
$ rpm --query --whatprovides "rpmlib(FileDigests)"
no package provides rpmlib(FileDigests)
$ dnf provides "rpmlib(FileDigests)"
Error: No matches found....
可能标签代表系统对构建 RPM 包的要求。但是由什么提供它呢?
此外似乎
rpmlib(FileDigests) <= 4.6.0-1
是否表示需要相当旧的版本,因为当前版本rpm
是 4.19.1.1?