RPM包装 - 不需要按预期工作

时间:2016-01-05 12:05:11

标签: rpm packaging rpmbuild rpm-spec

我建立一个rpm,我有一些要求,其中一些并不是真的有效: 这是我在规范文件中写的内容:

Requires    : java-1.8.0-openjdk = 1.8.0.65-3.b17.el7
Requires    : apache-tomcat = 8.0.24-8.el7
Requires    : postgresql-server = 9.2.14-1.el7_1
Requires    : PyGreSQL = 4.0-9.el7
Requires    : systemd-units
Requires    : logrotate = 3.8.6-6.el7
Requires    : influxdb = 0.9.4.2-6
Requires    : kafka = 0.8.2.0-6.el7
Requires    : curl = curl-7.29.0-25.el7
Requires    : python-iptools = 0.6.1-1.el7
Requires    : shadow-utils = 4.1.5.1-18.el7

当我尝试使用以下命令安装rpm时:

yum --nogpgcheck localinstall $myrpm

我收到以下错误:

Error: Package: $myrpm (/$myrpm)
           Requires: curl = curl-7.29.0-25.el7
           Installed: curl-7.29.0-25.el7.x86_64 (@anaconda/7.1)
               curl = 7.29.0-25.el7
           Available: curl-7.29.0-19.el7.x86_64 (rhel-7-1-base)
               curl = 7.29.0-19.el7
Error: Package: $myrpm (/$myrpm)
           Requires: java-1.8.0-openjdk = 1.8.0.65-3.b17.el7
           Available: 1:java-1.8.0-openjdk-1.8.0.31-1.b13.el7.centos.x86_64 (pd-3rdparty)
               java-1.8.0-openjdk = 1:1.8.0.31-1.b13.el7.centos
           Available: 1:java-1.8.0-openjdk-1.8.0.31-2.b13.el7.x86_64 (rhel-7-1-base)
               java-1.8.0-openjdk = 1:1.8.0.31-2.b13.el7
           Available: 1:java-1.8.0-openjdk-1.8.0.45-30.b13.el7_1.x86_64 (pd-3rdparty)
               java-1.8.0-openjdk = 1:1.8.0.45-30.b13.el7_1
           Available: 1:java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 (rhel-7-server-rpms)
               java-1.8.0-openjdk = 1:1.8.0.65-3.b17.el7
Error: Package: $myrpm (/$myrpm)
           Requires: shadow-utils = 4.1.5.1-18.el7
           Installed: 2:shadow-utils-4.1.5.1-18.el7.x86_64 (@anaconda/7.1)
               shadow-utils = 2:4.1.5.1-18.el7

rpm -qpR $myrpm

的输出
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/usr/bin/env
/usr/bin/python
PyGreSQL = 4.0-9.el7
apache-tomcat = 8.0.24-8.el7
config(pd-sys-mgmt) = 1.0.837-cobradrop1.801b7ff8+
curl = curl-7.29.0-25.el7
influxdb = 0.9.4.2-6
java-1.8.0-openjdk = 1.8.0.65-3.b17.el7
kafka = 0.8.2.0-6.el7
logrotate = 3.8.6-6.el7
osgi(org.eclipse.persistence.core)
postgresql-server = 9.2.14-1.el7_1
python-iptools = 0.6.1-1.el7
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
shadow-utils = 4.1.5.1-18.el7
systemd-units
rpmlib(PayloadIsXz) <= 5.2-1 

1 个答案:

答案 0 :(得分:2)

我相信您的curl = curl-7.29.0-25.el7条目不应该在右侧curl。它不是版本字符串的一部分。

您的java-1.8.0-openjdk要求似乎缺少主要纪元价值1(请参阅yum输出中的1:1.8.0.65-3.b17.el7)。 (虽然如果你真的需要包含它,我会有点惊讶。)

同样shawdow-utils似乎缺少前导2时代(请参阅yum输出中的2:4.1.5.1-18.el7)。

所有人都说你的要求非常特别,这可能是一个坏主意。这意味着您无法在安装软件包时更新任何软件包(无需重新构建),即使您打包的内容很可能也可以使用更新的版本。