在 CentOS 上安装 RPM 时,我收到以下错误消息:
/var/tmp/rpm-tmp.44492: line 578: [: too many arguments
我遇到的问题是该/var/tmp/rpm-tmp.xxxxx
文件总是在 RPM 安装后被删除,并且我想查看它遇到问题的行号。安装时保留此文件以便更轻松地调试 rpm 问题的最佳方法是什么?到目前为止,我将其放在%pre
rpm 规范文件的部分中来处理此问题:
cp -vf /var/tmp/rpm-tmp* /tmp/%module_name-rpm-tmp-copy
通过复制/var/tmp/rpm-tmp*
到/tmp
,我能够查看第 578 行并轻松修复代码中的语法错误。有没有办法引用rpm-tmp
RPM 在安装过程中使用的文件?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