【问题标题】:How to make an rpm spec that installs libraries to /usr/lib xor /usr/lib64 based on arch?如何制作一个 rpm 规范,将库安装到 /usr/lib xor /usr/lib64 基于arch?
【发布时间】:2017-11-05 03:32:50
【问题描述】:

我正在为 centos 制定 RPM 规范,如果 arch 是 64 位,它需要将共享库安装到 /usr/lib64,否则需要安装到 /usr/lib?

【问题讨论】:

    标签: centos rpm rpm-spec


    【解决方案1】:

    这不是它应该如何工作的。决定库去哪里的不是内核类型,而是库类型本身 - 64 位 .so 去 /usr/lib64,32 位去 /usr/lib。

    你不能让一个 RPM 包含两种架构,结果应该是 2 个不同的 RPM,如果我没记错的话,如果你使用 %_libdir,RPM 宏应该会为你解决这个问题。

    【讨论】:

    • 当你这样说时似乎很明显:) %_libdir 耶!
    • 我在 centos 6 上执行此操作,%{_libdir} 解析为 /usr/lib
    【解决方案2】:

    库的安装路径将由您创建的包的类型决定。

    【讨论】:

    • 我需要编写 .spec 文件来实现这一点,并且在 .spec 文件中我需要为每个文件添加安装位置。我该如何指定?
    • 标准安装位置有宏。对于一般列表:rpm.org/api/4.4.2.2/config_macros.html。您的目标分布可能会增加更多。
    【解决方案3】:

    对于 Redhat(和 CentOS)6,RPM 宏似乎已经注入了 —libdir=/usr/lib64。

    这是 RH/CentOS 6 通过 RPM SPEC 文件设置 lib64 的方式。

    在 RH/CentOS 6 上,在 x86_64 架构类型的情况下,执行 automake/configure 不会(并且根据 RH,不会)将库前缀添加到 /usr/lib64。

    所有这些都已在 RH/CentOS 7 及更高版本中得到修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 2021-03-09
      • 2017-06-05
      • 2013-04-10
      • 2020-05-02
      相关资源
      最近更新 更多