首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rpm-maven-plugin构建的RPM上的rpmlib(FileDigests)依赖错误

使用rpm-maven-plugin构建的RPM上的rpmlib(FileDigests)依赖错误
EN

Stack Overflow用户
提问于 2015-11-18 07:05:20
回答 2查看 8.3K关注 0票数 2

就像使用this question一样,我尝试安装一个RPM,并得到以下错误:

代码语言:javascript
复制
# rpm -iv myapp-0.0.14-SNAPSHOT.rpm 
error: Failed dependencies:
        rpmlib(FileDigests) <= 4.6.0-1 is needed by myapp-0.0.14-SNAPSHOT20151117233758.noarch
        rpmlib(PayloadIsXz) <= 5.2-1 is needed by myapp-0.0.14-SNAPSHOT20151117233758.noarch

但我的应用是用rpm-maven-plugin构建的。

构建机器和我要在其上执行安装的服务器之间的redhat版本存在差异。

代码语言:javascript
复制
$ uname -a
Linux buildmach 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

# uname -a
Linux myserver 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

如果我使用这个插件来构建rpm,我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2015-12-04 06:59:44

实际上,这并不难,至少对于我的用例来说,我基本上只是使用rpm来部署war文件。

您只需要定义几个宏,与常用的redhat安装程序提供的宏不同:

代码语言:javascript
复制
%_binary_payload    w9.gzdio
%_binary_filedigest_algorithm   1

有趣的是,redhat的rhel6宏文件表明这些是默认的,但实际上它们不是默认的:

代码语言:javascript
复制
#   Compression type and level for source/binary package payloads.
#       "w9.gzdio"  gzip level 9 (default).
#       "w9.bzdio"  bzip2 level 9.
#       "w7.xzdio"  xz level 7, xz's default.
#       "w7.lzdio"  lzma-alone level 7, lzma's default
#
#%_source_payload   w9.gzdio
#%_binary_payload   w9.gzdio

#   Algorithm to use for generating file checksum digests on build.
#   If not specified or 0, MD5 is used.
#   WARNING: non-MD5 is backwards incompatible, don't enable lightly!
#   The supported algorithms may depend on NSS version, as of NSS
#   3.11.99.5 the following are supported:
#   1   MD5 (default)
#   2   SHA1
#   8   SHA256
#   9   SHA384
#   10  SHA512
#
#%_source_filedigest_algorithm  1
#%_binary_filedigest_algorithm  1

如果默认值如redhat宏文件中的注释所示,则不需要取消对这些行的注释。

在任何情况下,因为我使用的是rpm-maven- plugin,所以我可以在pom.xml中使用插件参数来配置它,而无需更改宏文件。

代码语言:javascript
复制
<defineStatements>
    <defineStatement>_binary_payload w9.gzdio</defineStatement>
    <defineStatement>_binary_filedigest_algorithm 1</defineStatement>
</defineStatements>
票数 5
EN

Stack Overflow用户

发布于 2015-11-18 08:57:24

是的,那些“红帽版本的不同之处”是巨大的,也正是问题所在。CentOS 5和CentOS 6有非常不同的rpm (和rpmlib)版本,而CentOS 6版本支持更新的有效载荷压缩和比CentOS 5上的rpm (和rpmlib)版本更新的FileDigests版本。

这正是我在回答您链接的问题时所说的。如果不使用某种chroot,就不能在CentOS 6上构建用于CentOS 5的包。

好吧,我相信你可以通过rpmbuild宏配置覆盖压缩和摘要算法的默认选择,并且选择CentOS 5上可用的rpm版本中支持的值可能会从你的build RPM中删除这些要求(或者降低版本以使其正常工作),但我不知道如何立即做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33768793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档