我创建安装到/ opt / mypackage的RPM,其中/ opt / mypackage是RPM规范文件中的重定位集,使用"前缀:/ opt / mypackage"前缀
如果在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在这两种情况下都能正常工作。
我是否正确相信&#34;前缀:&#34;在RPM秒应该允许重定位路径的任何前缀?例如前缀:/opt/mypackage
允许重新定位/opt/mypackage
/opt
或/
我可能做错了什么或者这可能是个错误?
我注意到如果我使用--badreloc一切正常。为什么这里需要badreloc?
答案 0 :(得分:0)
如果重定位了前缀:标记中 NOT 的路径,那么--badreloc所做的就是覆盖警告消息。
否则* .rpm中的所有路径都是可重定位的。
答案 1 :(得分:0)
我认为您需要为要更改的每个路径添加“前缀”行。
根据http://ftp.rpm.org/api/4.4.2.2/relocatable.html:
“dir”通常类似于“/ usr”,“/ usr / local”或者 “/选择”。文件列表中的每个文件都必须以该前缀开头。对于 例如,如果您有“前缀:/ usr”并且您的文件列表包含 “/etc/foo.conf”,构建将失败。解决这个问题的方法是放
Prefix: /usr Prefix: /etc
进入spec文件,以便可以重定位/ usr和/ etc目录 这个包是分开的 安装。