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

関連情報