安装RPM后安装init脚本

时间:2015-07-30 19:36:27

标签: rpm rpmbuild rpm-spec

我有这个spec文件,用于将文件提取到目录中:

Version:        1.0
Release:        1%{?dist}
Summary:        Linux Agent installation script
Group:          Utilities
License:        license
Source0:        agent-1.0.tar.gz
BuildArch:      x86_64
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description

%prep
%setup -q -n agent

%build

%install
install -m 0755 -d %{buildroot}/agent
cp -a * %{buildroot}/agent

%clean
rm -rf $RPM_BUILD_ROOT

%files
/agent
%defattr(-,root,root,-)

%doc
%changelog

我想修改RPM包以将init脚本安装到Linux中。

我想在RPM安装后运行这些命令:

ln -s /agent/apache-karaf-4.0.0/bin/karaf-service /etc/init.d /

/etc/init.d/karaf-service start

哪种方法更好: - 提取后复制文件 - 从RPM复制文件

我不是很熟悉,您能提供建议以及如何将命令实施到规范文件中吗?

2 个答案:

答案 0 :(得分:1)

请参阅:

https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Systemd

https://fedoraproject.org/wiki/Packaging:Systemd?#Filesystem_locations

请注意,自动启用服务通常不是一种好方法,因为安装可能在更改根目录,安装程序环境中,或者您不希望自动启动服务的其他情况下。

答案 1 :(得分:0)

不要将文件安装到/下的任何地方,这是不好的做法。如果您需要使用自己的整个层次结构/opt/agent。如果要干净地与系统集成,那么只需使用类似系统包的/usr

如果相关服务文件位于此RPM中,则可以将其安装到%{buildroot}/opt/agent/apache-karaf-4.0.0/bin/karaf-service(或任何地方)并在${buildroot}/etc/init.d/karaf-service期间创建%install链接,然后包含这两个文件在%files部分。