Linux 如何将初始化脚本添加到RPM
我想在RPM中添加一个init脚本,以便只需键入其名称即可从终端运行程序,还有一件事我很困惑,那就是:- 这些文件位于何处:pre、post、preun、poston,它们是否在添加行%pre等后直接写入规范文件 我浏览了以下链接,但找不到解决方案:- 更新=============================================================== 我正在CentOS 6.8上进行此操作,以下是我迄今为止创建的规范文件:-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 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。我不确定你的目标是哪一个。非常感谢你的帮助。。。