RPM 설치 %post 매크로는 터미널에서는 작동하지만 GUI에서는 작동하지 않습니다.

RPM 설치 %post 매크로는 터미널에서는 작동하지만 GUI에서는 작동하지 않습니다.

나만의 .rpm 파일을 만들었습니다. 명령줄에서는 설치가 제대로 작동하지만 GUI에서 설치하면 그렇지 않습니다.

GUI에서 작동하지 않는 유일한 것은 %post 스크립트입니다. 설치 후 브라우저를 호출해 보았지만 명령줄을 통해 실행하면 작동하지만 GUI를 통해서는 작동하지 않습니다.

rpm 빌드용 .spec 파일입니다.

Name:sample_rpm
Version:1.0
Release:1%{?dist}
Summary:Sample RPM package for testing post install script

Group:Development/Tools
License:GPL
URL:None
Source0:sample_rpm.tar.gz

%description
Sample rpm for testing post install script

%prep
%setup -n sample_rpm

%install
rm -rf $RPM_BUILD_ROOT
mkdir -p "$RPM_BUILD_ROOT/opt/sample_rpm"
cp -R * "$RPM_BUILD_ROOT/opt/sample_rpm"

%post
exec "/usr/bin/firefox" "http://www.google.com" &

%clean
rm -rf $RPM_BUILD_ROOT

%files
/opt/sample_rpm/
%defattr(-,root,root,-)
%doc

%changelog

미리 감사드립니다!

답변1

먼저 다음과 같은 매크로를 정의하십시오.

%define runcommand() ( /usr/bin/firefox http://google.com ) 

그런 다음 해당 섹션 %post에서 실행하십시오 %runcommand. 패키지에 루트 액세스가 필요하므로 root매크로는 %postDISPLAY를 찾을 수 없습니다. DISPLAY 환경 변수를 내보내면 이 문제가 해결됩니다. 예를 들어

......
%post
export DISPLAY=":0.0"
%runcommand
.........

마지막으로 이를 사용하여 rpmlint -i sample_rpm.spec 오류를 확인합니다. 오류가 없으면 다음 명령을 사용하여 패키지를 빌드하십시오.rpmbuild -ba sample_rpm.spec

관련 정보