rpm 임시 파일 문제(rpm-tmp)

rpm 임시 파일 문제(rpm-tmp)

CentOS에 RPM을 설치할 때 다음 오류 메시지가 나타납니다.

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

제가 겪고 있는 문제는 /var/tmp/rpm-tmp.xxxxxRPM 설치 후 이 파일이 항상 삭제된다는 것입니다. 문제가 있는 줄 번호를 확인하고 싶습니다. rpm 문제를 더 쉽게 디버깅할 수 있도록 설치할 때 이 파일을 보존하는 가장 좋은 방법은 무엇입니까? 지금까지 나는 %pre이것을 rpm 사양 파일의 섹션에 넣어서 이 문제를 처리했습니다.

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

/var/tmp/rpm-tmp*에 복사함으로써 /tmp578행을 볼 수 있었고 코드의 구문 오류를 쉽게 수정할 수 있었습니다. rpm-tmp설치 중에 RPM이 사용하는 파일을 참조할 수 있는 방법이 있습니까 ? 포괄적 (복사된 파일) 선언 대신 env올바른 콘텐츠를 복사하기 위해 사양 파일에서 이 중 일부를 사용할 수 있나요 ?rpm-tmpcp/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

인용하다

관련 정보