2012-12-04 4 views
1

내 요구 사항은 rpm 설치가 클라이언트 machine.or에서 어떤 경우라도 실패하면 rpm 설치가 실패로 끝나는 것처럼 화면에 일부 메시지를 인쇄하려고합니다. 생성 된 이유 중 하나에. 다른 표준 rpm과 같습니다.RPM 빌드 - 클라이언트에서 rpm 설치시 오류 메시지를 인쇄하는 방법

그리고 나는 .spec 파일에서 c 파일이나 make 명령을 만들지 않습니다. 내가 spec 파일 spec.inf에서하고 있었던 모든 것은 spec 파일을 사용하는 클라이언트 콘솔에서 그런 종류의 것들을 출력하는 방법을 제안한다.


그래 그 난 그냥 example.my excet 요구 사항은 스펙 파일 내용 아래에 줄이 --test 내 문제가되지 않습니다. 원하는 두 메시지 서비스 status.i에 따라 인쇄 옵션을 클라이언트 제거 후 후 표시 -v 경우 :

#Pre-Uninstall section 

%preun 
Processes=`ps -Ao"%p:%a" --cols 150 | 
egrep "Launcher|rmiregistry" | grep -v grep | cut -d ":" -f1` 
     if [ -n "$Processes" ]; then 
       echo 'xyz is running ,first stop it then uninstall.' > /dev/stderr; 
       exit 1; 
     else 
       echo 'xyz service is not running' >/dev/stdout; 
     fi 

는 내가

rpm -ev xyz 

출력 명령을 사용하여 RPM을 제거하려고 그렇지 않으면 화면에 메시지가 없습니다. 내가 어떻게 할 수 있니?

답변

0

%pre, %post, %preun%postun 섹션을 정의 할 수 있습니다. 패키지의 현재 설치 수를 매개 변수로 가져옵니다. here을 참조하십시오.

RPM 서적의 각 섹션은이 스크립트와 관련하여 자세히 설명됩니다. 본질적으로, 스크립트는 실행 전에 파일에 기록되고 실행됩니다.

+0

자세한 내용을 알려주십시오. –

+0

나중에하지만 내 요구 사항은 rpm을 빌드 한 후 클라이언트 컴퓨터에 설치할 때 설치 명령이 rpm -ivh demo.rpm 인 것으로 가정합니다. 그 대신에 rpm -ivh --test demo.rpm을 사용하면 아무런 종류의 메시지도 표시되지 않습니다 . 가능하지 않은지 확실하지 않습니다. –

+0

왜냐하면'--test'는 트랜잭션이 작동하는지 테스트 할 것이기 때문입니다. 읽기 전용 작업에서 실행되는 스크립트를 실행하지 않습니다. –

1

STDERR으로 인쇄하면 항상 클라이언트에 표시됩니다. 자세한 옵션으로 설치하는 경우 STDOUT이 표시됩니다.

echo 'Something may be wrong!' > /dev/stderr 
+0

파일의 크기는 0입니다. 다른 파일을 링크 /dev/stdout ->/proc/self/fd/1 ->/dev/pts/0 –

+0

@miteshpatel 네,하지만 괜찮습니다. 이것들은 프로세스 IO의 정상적인 처리를위한 시스템 내부 일뿐입니다. '/ dev/pts/0'는 당신이 일하는 (가상) 터미널입니다. 지. 터미널 에뮬레이션 또는 SSH 연결에서 하나의 탭. – glglgl

+0

두 옵션 모두 me.if에 대해 작동하지 않을 때마다 메시지가 출력됩니다 ... –