Dependencies 在RPM规范中需要openjdk6或openjdk7

Dependencies 在RPM规范中需要openjdk6或openjdk7,dependencies,rpm,rpm-spec,Dependencies,Rpm,Rpm Spec,我正在构建一个RPM,它现在将openjdk-6标记为需求;我还想添加对openjdk-7的支持;但我不确定如何修改spec文件以根据需要查找openjdk6或openjdk7。我读过关于虚拟软件包的概念,我正在尝试使用它。 我补充说 Requires: libjvm.so 在我看来;并在我的%pre部分中检查6或7。但是构建的RPM包不能识别libjvm.so error: Failed dependencies: libjvm.so is needed by myapp.x

我正在构建一个RPM,它现在将openjdk-6标记为需求;我还想添加对openjdk-7的支持;但我不确定如何修改spec文件以根据需要查找openjdk6或openjdk7。我读过关于虚拟软件包的概念,我正在尝试使用它。 我补充说

Requires: libjvm.so
在我看来;并在我的%pre部分中检查6或7。但是构建的RPM包不能识别libjvm.so

error: Failed dependencies:
        libjvm.so is needed by myapp.x86_64
我尝试了rpm-q——提供了java-1.6.0-openjdk及其列表

libjvm.so()(64bit)
libjvm.so(SUNWprivate_1.1)(64bit)

我的虚拟包dep做错了吗?是否有更清晰/明显的方式将或JDK6/7称为依赖项?

如果您已经在前一节中检查了openjdk 6或7,为什么不设置一个变量,根据检查返回的值填充requires?如果OpenJDK在中间的值不是很差,可以使用<代码>要求:OpenJDK>=1.6 < /COD>,但我不认为这会起作用,因为他们决定将版本值放在中间。但令我失望的是,它们在构建时被替换了。是的,它的名字很差。例如到目前为止,openjdk6提供的虚拟包jre是openjdk7中的jre7:)。openjdk7中列出的所有组件的名称中都有7,jce7,jsse7等等,不太清楚为什么他们会做出这样的决定啊,这是一个糟糕的决定。我应该好好想想。你可以只做两个RPM吗?不:(java是我软件包的一小部分,仅仅为了这一点而创建两个RPM看起来不太好。谢谢你,是的,我很抱歉,伙计,我没有一个好的解决方案,因为命名约定是如何完成的,除非你可以做'requires:java-1.[1-9].0-openjdk。我想不出一个能满足您需求的好方法。