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 访问权限,并且root%post将无法找到 DISPLAY。导出 DISPLAY 环境变量应该可以解决这个问题。例如

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

最后用它 rpmlint -i sample_rpm.spec 来检查是否有错误。如果没有错误,请使用以下命令构建包rpmbuild -ba sample_rpm.spec

相关内容