RPM需要i386版本的软件包

时间:2010-09-15 04:17:44

标签: rpm rpmbuild rpm-spec

不确定这是否属于......但是......

我正在为Centos成功构建RPM,问题是它是一个32位二进制文​​件(请不要问...) - 要求部分rpm规范只安装所需库的64位/ x86_64版本。 / p>

我正在连接libicu,我希望rpm自动安装32位版本作为依赖。我的要求在我的rpmspec文件中看起来像这样:

Requires: libicu

构建rpm工作正常,除非我尝试在一个完全干净的系统上安装rpm,它首先想要将它作为依赖项安装:

libicu    x86_64

哪个不起作用,因为那只是库的x86_64版本。如果我尝试手动安装libicu:

yum install libicu

我明白了:

libicu    x86_64
libicu    i386

它也安装了32位版本的库,我的应用程序正常工作。如何让rpm自动安装该库的32位版本?任何想法将不胜感激......

2 个答案:

答案 0 :(得分:1)

这个问题可能更适合ServerFault,但我相信从RPM 4.6.0开始,您可以这样做:

Requires: libicu%{_isa}
%if %{__isa_bits} == 64
Requires: libicu(%{__isa_name}-32)
%endif

[见http://www.rpm.org/wiki/PackagerDocs/ArchDependencies]

然而,遗憾的是我正在使用的服务器正在运行RPM 4.4.2.3,所以我不得不使用你的解决方案......并且谢谢你,顺便说一句。 : - )

答案 1 :(得分:0)

我(终于)找到了一个似乎有效的答案。将以下内容添加到rpm规范中的Requires:标记:

actual-so-name()(64bit), actual-so-name-again, package-name

所以,作为一个例子,在我的情况下,我需要libicu我做了以下(只选择了我碰巧链接到的一个icu .so文件):

Requires: libicui18n.so.36()(64bit), libicuuc.so.36, libicu

这似乎有效。

有更好的方法吗?