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)에서도 이 문제가 발생했습니다. 태그 --noclean
재작성 %clean
제안 솔루션도 스크립트 제거를 막지 못했습니다 /var/tmp/rpm-tmp.*
.
exit -1
디버깅 중인 단계의 마지막에 깔끔한 추가 항목을 추가하여 이 문제를 해결할 수 있었습니다 . rpmbuilder는 다음과 같이 종료됩니다.
error: Bad exit status from /var/tmp/rpm-tmp.00000 (%install)
그리고 파일을 여전히 디버깅해야 합니다.
답변2
두 가지 옵션이 있습니다 rpmbuild
.
1.--노클린
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
센트OS 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