不确定这是否属于......但是......
我正在为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位版本?任何想法将不胜感激......
答案 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
这似乎有效。
有更好的方法吗?