rpm 临时文件问题 (rpm-tmp)

rpm 临时文件问题 (rpm-tmp)

在 CentOS 上安装 RPM 时,我收到以下错误消息:

/var/tmp/rpm-tmp.44492: line 578: [: too many arguments

我遇到的问题是该/var/tmp/rpm-tmp.xxxxx文件总是在 RPM 安装后被删除,并且我想查看它遇到问题的行号。安装时保留此文件以便更轻松地调试 rpm 问题的最佳方法是什么?到目前为止,我将其放在%prerpm 规范文件的部分中来处理此问题:

cp -vf /var/tmp/rpm-tmp* /tmp/%module_name-rpm-tmp-copy

通过复制/var/tmp/rpm-tmp*/tmp,我能够查看第 578 行并轻松修复代码中的语法错误。有没有办法引用rpm-tmpRPM 在安装过程中使用的文件?env我可以在规范文件中使用其中的某些内容来复制正确的内容rpm-tmp而不是一揽子cp(复制/var/tmp/rpm-tmp*文件)声明?

答案1

我今天在 SLES 11SP4(RPM 版本 4.4.2.3)中也遇到了这个问题:既没有 a--noclean也没有重写%clean标签建议的解决方案阻止删除脚本/var/tmp/rpm-tmp.*

我可以通过exit -1在我正在调试的阶段结束时添加一个简洁的内容来解决这个问题:rpmbuilder 退出时带有

error: Bad exit status from /var/tmp/rpm-tmp.00000 (%install)

并且该文件仍然需要调试。

答案2

rpmbuild有2个选择。

1.--noclean

您可以指示在安装包rpmbuild时不要使用此开关删除这些文件。--rebuild

$ rpmbuild --rebuild --noclean ....

笔记:我可以访问的大多数版本都提供此功能。

$ rpmbuild --help |& grep clean
      --clean                    remove build tree when done
      --noclean                  do not execute %clean stage of the build
软呢帽20
$ rpmbuild --version
RPM version 4.11.2
CentOS 5.x
$ rpmbuild --version
RPM version 4.4.2.3

2. rpmbuild不支持--noclean

如果您rpmbuild --rebuild使用自己的文件构建包.spec。它不支持此选项,您可以将自己的例程添加到%clean.spec文件的阶段。

%Clean
%if "%{noclean}" == ""
   rm -rf $RPM_BUILD_ROOT
%endif

参考

相关内容