1

不确定这是否属于这里……但是……

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

我正在链接 libicu,我希望 rpm 自动安装 32 位版本作为依赖项。我的 rpmspec 文件中的要求如下所示:

Requires: libicu

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

libicu    x86_64

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

yum install libicu

我得到:

libicu    x86_64
libicu    i386

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

4

2 回答 2

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,所以我不得不使用您的解决方案……顺便说一句,谢谢。:-)

于 2011-05-04T17:08:26.257 回答
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

这似乎有效。

有没有更好的办法?

于 2010-09-15T04:37:32.143 回答