如何修改 rpm 规范文件以在 centos 7 上需要 java-1.8.0-openjdk?

如何修改 rpm 规范文件以在 centos 7 上需要 java-1.8.0-openjdk?

我通常从最小 Centos 7并运行

yum install java-1.8.0-openjdk

为了安装Java运行时环境。这非常有效,因为我能够执行 JAR 文件。

我现在正在尝试创建一个转速 规格文件使用“需要" 子句来打包依赖项,例如:

Requires:        jre-headless = 1.8

然而,当我这样做时

yum install my-rpm-1.0.0.el7.x86_64.rpm

我收到如下错误消息:

Available: 1:java-1.8.0-openjdk-headless-1.8.0.272.b10-1.el7_9.i686
Available: 1:java-11-openjdk-headless-11.04.11-0.el7_6.i686
    Not found

You could try using --skip-broken to work around this problem
You could try running: rpm -Va --nofiles --nodigest

有谁知道我的规范文件中的“Requires:”子句有什么问题吗?我只希望规范文件通过“Requires”子句自动执行“yum install java-1.8.0-openjdk”。

答案1

我认为没有提供任何东西jre-headless = 1.8。让我们看一下可用的虚拟包:

$ repoquery --provides $(repoquery --whatprovides jre-headless) | sort -u | grep jre-headless
jre-headless = 1:1.7.0
jre-headless = 1:1.8.0

所以你可以写:

Requires: jre-headless = 1:1.8.0

答案2

1.81:由于包版本名称中涉及纪元号(有趣的前缀),因此还不够;

# rpm -qa | grep head
java-1.8.0-openjdk-headless-1.8.0.332.b09-1.el7_9.x86_64
# rpm -q --provides java-1.8.0-openjdk-headless | grep jre
jre-1.8.0-headless = 1:1.8.0.332.b09-1.el7_9
jre-1.8.0-openjdk-headless = 1:1.8.0.332.b09-1.el7_9
jre-headless = 1:1.8.0
jre-openjdk-headless = 1:1.8.0.332.b09-1.el7_9

如果1:1.8.0使用相反,这应该满足依赖解析:

# grep Requ somedirectory.spec
Requires:       jre-headless = 1:1.8.0
# rpmbuild -ba somedirectory.spec
...
# rpm -qp --requires rpmbuild/RPMS/x86_64/somedirectory*
jre-headless = 1:1.8.0 
# yum -y install /root/rpmbuild/RPMS/x86_64/somedirectory*
...

相关内容