我有这个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复制文件
我不是很熟悉,您能提供建议以及如何将命令实施到规范文件中吗?
答案 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
部分。