如何在spec文件中更改%install部分?

时间:2015-09-30 15:51:08

标签: rpmbuild rhel5 rhel6

我尝试使用rpmbuild命令在RHEL6中构建二进制文件。在rpmbuild命令执行期间抛出文件未找到错误。但在RHEL5中,相同的rpmbuild命令工作正常。

RHEL5执行结果:

*执行(%install):/ bin / sh -e /var/tmp/rpm-tmp.77266

  • umask 022
  • cd / usr / src / redhat / BUILD
  • LANG = C
  • export LANG
  • 取消设置DISPLAY *

RHEL6执行结果:

*执行(%install):/ bin / sh -e /var/tmp/rpm-tmp.BeMhyH

  • umask 022
  • cd // rpmbuild / BUILD
  • ' [' // rpmbuild / BUILDROOT /'!=' /']'
  • rm -rf // rpmbuild / BUILDROOT / ++ dirname // rpmbuild / BUILDROOT /
  • mkdir -p // rpmbuild / BUILDROOT
  • mkdir // rpmbuild / BUILDROOT /
  • LANG = C
  • export LANG
  • 取消设置DISPLAY
  • 的/ usr / lib / rpm的/签的buildroot *

我无法在spec文件之间找到任何%install更改。请帮助我理解我做错了什么?

先谢谢..!

2 个答案:

答案 0 :(得分:0)

从提供的片段中可以清楚地看出,唯一的问题是你的rpmbuild环境中没有定义$ HOME。 $ HOME / rpmbuild是' rpmbuild'的默认构建根目录。在RHEL6中,而不是像RHEL5中的/ usr / src / redhat。

需要考虑的事项:

  • 是否有'〜/ .rpmmacros'正在改变rpmbuild的文件 指令。
  • 不会删除临时%安装脚本 错误退出。直接检查它可能会告诉你更多关于它失败的原因。

例如:

import os
os.chdir("/home/user/b")
os.system("php /home/user/b/phpscript1.php")

答案 1 :(得分:0)

较早的建议是将目标buildroot作为%install的第一步。为了帮助强制%build%install步骤之间的分离,较新版本的rpmbuild会严格执行此操作,方法是为您执行第一步,如您粘贴的内容所示。< / p>

我假设你的%build阶段正在将一个或多个文件放入目标buildroot区域,它不应该这样做。它应该只在构建区域。