yum/RPM 依赖于通用包(类似于其他包管理器中的“提供”)

yum/RPM 依赖于通用包(类似于其他包管理器中的“提供”)

我正在尝试弄清楚如何让我的一个软件包依赖于提供“java”的任何内容,但我甚至不知道要查找什么。显然,“yum provide”是一个用于查找哪个软件包包含特定文件的命令,而“yum info”似乎没有我想要的信息。

基本上,我的操作系统有一个名为“java-1.6.0-openjdk”的软件包,我的软件包需要一些 Java 实现,但它在 Oracle Java 或 Java 7 上可以完美运行,所以我不想那么具体。有没有办法只依赖提供 Java 的任何东西?

答案1

主题有点旧了但没有答案......

你可以使用 rpm 找到你的 java 提供的内容:

[mdavis@x1pt01 yumrepo]$ rpm -q --provides java-1.5.0-gcj-1.5.0.0-29.fc12.x86_64
jaas = 1.5.0.0-29.fc12
java = 1.5.0
java-1.4.2-gcj-compat > 1.4.2.0-40jpp.111
java-1.5.0 = 1.5.0.0-29.fc12
java-gcj = 1.5.0.0-29.fc12
java-gcj-compat = 1.0.79
java-sasl = 1.5.0.0-29.fc12
jaxp_parser_impl = 1.5.0.0-29.fc12
jce = 1.5.0.0-29.fc12
jdbc-stdext = 1.5.0.0-29.fc12
jdbc-stdext = 3.0
jndi = 1.5.0.0-29.fc12
jndi-cos = 1.5.0.0-29.fc12
jndi-dns = 1.5.0.0-29.fc12
jndi-ldap = 1.5.0.0-29.fc12
jndi-rmi = 1.5.0.0-29.fc12
jre = 1.5.0
jre-1.5.0 = 1.5.0.0-29.fc12
jre-1.5.0-gcj = 1.5.0.0-29.fc12
jre-gcj = 1.5.0.0-29.fc12
jsse = 1.5.0.0-29.fc12
java-1.5.0-gcj = 1.5.0.0-29.fc12
java-1.5.0-gcj(x86-64) = 1.5.0.0-29.fc12

然后您只需在 spec 文件中“要求”您需要的最小 java 即可。

要求:java >= 1.0

答案2

我认为您需要找到一个适合所有这些包的名称模式,例如,如果您需要 jdk:

yum list installed '*openjdk*'

如果包名称无法用独特的模式来概括并避免误报,那么您可能只需要找到 a 或 b 或 c 等。

我明白了,然后您可以制作自己的元(虚拟)包,每个包都需要一个合适的包并提供类似“java-installed”的东西。

然后你的 rpm 只需要安装 java 即可。

相关内容