我创建了自己的 .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