Linux 如何将初始化脚本添加到RPM

Linux 如何将初始化脚本添加到RPM,linux,centos,rpm,rpm-spec,Linux,Centos,Rpm,Rpm Spec,我想在RPM中添加一个init脚本,以便只需键入其名称即可从终端运行程序,还有一件事我很困惑,那就是:- 这些文件位于何处:pre、post、preun、poston,它们是否在添加行%pre等后直接写入规范文件 我浏览了以下链接,但找不到解决方案:- 更新=============================================================== 我正在CentOS 6.8上进行此操作,以下是我迄今为止创建的规范文件:- # RPM package for

我想在RPM中添加一个init脚本,以便只需键入其名称即可从终端运行程序,还有一件事我很困惑,那就是:- 这些文件位于何处:pre、post、preun、poston,它们是否在添加行%pre等后直接写入规范文件

我浏览了以下链接,但找不到解决方案:-

更新=============================================================== 我正在CentOS 6.8上进行此操作,以下是我迄今为止创建的规范文件:-

# RPM package for xyz.
%define   __spec_install_post %{nil}
%define   debug_package %{nil}
%define   __os_install_post %{_dbpath}/brp-compress

Summary: XYZ program.
Name: xyz
Version: 1.0
Release: 1
License: GPL+
Group: Development/Tools

SOURCE0 : %{name}-%{version}.tar.gz
URL: https://wwwDOTxyzDOTcom/

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description
%{summary}
%prep
%setup -q
%build
# Empty section.

%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}
# in builddir
cp -a * %{buildroot}
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*

%changelog
* Mon Mar 6 2017  xyz <noemail@noemail.com> 1.0-1
- First Build
EOF
xyz的RPM包。 %定义uuu spec_uinstall_upost%{nil} %定义调试包%{nil} %定义u os_install_post%{u dbpath}/brp compress 简介:XYZ程序。 姓名:xyz 版本:1.0 发布:1 许可证:GPL+ 小组:开发/工具 SOURCE0:%%{name}-%%{version}.tar.gz 网址:https://wwwDOTxyzDOTcom/ BuildRoot:%%{u tmppath}/%%{name}-%%{version}-%%{release}-root %描述 %{摘要} %准备 %设置-q %建造 #空的部分。 %安装 rm-rf%{buildroot} mkdir-p%{buildroot} #在builddir中 cp-a*%{buildroot} %干净的 rm-rf%{buildroot} %档案 %defattr(-,根,根,-) %config(noreplace)%%{sysconfdir}/%%{name}/%%{name}.conf %{u bindir}/* %变更日志 *2017年3月6日星期一xyz 1.0-1 -第一次建造 EOF
但是我仍然不知道如何通过键入终端名称从终端启动程序。

你是说SYSV init文件?还是系统单位文件?不同的逻辑,但ok-最后它们都是文件。在不同的位置,但只是文件

你必须做到:

%{?systemd_requires}
BuildRequires: systemd

%install
cp -a path/in/your/targz/SOMESERVICE.service %{buildroot}%{_unitdir}/

%post
%systemd_post SOMESERVICE.service

%preun
%systemd_preun SOMESERVICE.service

%postun
%systemd_postun_with_restart SOMESERVICE.service

%files
%{_unitdir}/SOMESERVICE.service

对于SYSV,在%post*和%preun中会有一些不同的路径和不同的代码段。

好的,这是否意味着init.d在debian下使用,而systemD在RHL下使用?我有一个二进制文件,我在eclipse(centos)上编译过,我想创建一个RPM来安装该二进制文件,我想让RPM做的只是,将二进制文件和配置文件放在适当的位置,这做得非常好,但我更需要的是,无论我在哪个目录中,只要输入名称就可以运行该二进制文件。因此,如果应用程序名为xyz,我想在终端的任何位置写入xyz并执行xyz程序。提前谢谢。抱歉,我不知道我需要什么,因为我是linux新手。Centos6和“Debian stable”使用SYSV init,Centos 7和“Debian testing”使用SystemD。我不确定你的目标是哪一个。非常感谢你的帮助。。。