【问题标题】:rpm relocate part of prefixrpm 重定位前缀的一部分
【发布时间】:2017-03-08 12:02:46
【问题描述】:

我创建安装到 /opt/mypackage 的 RPM,其中 /opt/mypackage 是使用“前缀:/opt/mypackage”前缀在 RPM 规范文件中设置的重定位

如果在 RHEL5(RPM 版本 4.4.2.3)上构建并安装了 RPM,则以下命令有效:

rpm -i --relocate /=`pwd`/ mypackage.rpm
rpm -i --relocate /opt=`pwd`/opt mypackage.rpm
rpm -i --relocate /opt/mypackage=`pwd`/opt/mypackage mypackage.rpm

但是,如果 RPM 是基于安装在 RHEL7(RPM 版本 4.11.3)上构建的,那么就会出现问题:

path / in package <mypackage> is not relocatable
path /opt in package <mypackage> is not relocatable

但是重新定位 /opt/mypackage 可以正常工作。

注意:rpm -i --prefix=/opt/mkpackage 在这两种情况下都可以正常工作。

那么我认为 RPM sec 中的“前缀:”应该允许重定位路径的任何前缀是否正确?例如前缀:/opt/mypackage 允许重定位 /opt/mypackage /opt/

我可能做错了什么或者这可能是一个错误?

我注意到,如果我使用 --badreloc 一切正常。为什么这里需要 badreloc?

【问题讨论】:

    标签: rpm rpmbuild rpm-spec


    【解决方案1】:

    --badreloc 所做的只是在重定位 Prefix: 标记中的 NOT 路径时覆盖警告消息。

    否则 *.rpm 中的所有路径都是可重定位的。

    【讨论】:

      【解决方案2】:

      我认为您需要为要更改的每条路径添加一个“前缀”行。

      根据http://ftp.rpm.org/api/4.4.2.2/relocatable.html

      “目录”通常类似于“/usr”、“/usr/local”或 “/选择”。文件列表中的每个文件都必须以该前缀开头。为了 例如,如果您有“前缀:/usr”并且您的文件列表包含 “/etc/foo.conf”,构建将失败。解决这个问题的方法是把

      Prefix: /usr
      Prefix: /etc 
      

      进入规范文件,以便 /usr 和 /etc 目录可以重新定位 当这个包是分开的 已安装。

      【讨论】:

        猜你喜欢
        • 2019-05-13
        • 2019-10-11
        • 1970-01-01
        • 2016-04-20
        • 1970-01-01
        • 2011-06-27
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多