2017-02-28 13 views
0

터미널에서 프로그램을 실행하기 위해 이름을 입력하여 init 스크립트를 RPM에 추가하고 싶습니다. 혼란스럽고 또 다른 점이 하나 있습니다. : - 이 파일의 위치는 pre, post, preun, postun입니다. % pre 등을 추가하면 spec 파일에 직접 쓰여집니다.RPM에 init 스크립트를 추가하는 방법

다음 링크를 통과했지만 해결책을 찾기 : -

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

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

업데이트 ================================ 어떻게에 관해서는 여전히

# 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 <[email protected]> 1.0-1 
- First Build 
EOF 

하지만 혼란 - : ================= 여기 내가 지금까지 만든 사양 파일을 것에 CentOS 6.8에 그 일을하고 있어요 나는 그 이름을 타이핑함으로써 터미널에서 프로그램을 시작한다.

+0

도움을 주시면 감사하겠습니다 ... – shahenshah

답변

0

당신은 SYSV 초기화 파일을 의미합니까? 또는 systemD 단위 파일? 다른 논리이지만 괜찮습니다. 결국 두 파일입니다. 다른 위치에 있지만 파일 만 있습니다.

당신은 할 필요가 : SYSV를 들어

%{?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 

는 조금 다른 경로 및 % 포스트 *와 % preun 실행에 다른 조각이있을 것입니다.

+0

Ok, init.d는 RHL에서 debian 및 systemD 하에서 사용됩니까? – shahenshah

+0

이클립스 (centos)에서 컴파일 한 바이너리가 있는데,이 바이너리를 설치하기 위해 RPM을 만들고 싶습니다. RPM이 필요로하는 바이너리 및 구성 파일을 배치해야합니다. 무엇보다 필요한 것은, 내가 속한 디렉토리에 관계없이 이름을 입력하여 이진 파일을 실행할 수있는 기능입니다. 따라서 앱 이름이 xyz이면 터미널에 xyz를 쓰고 xyz 프로그램. 미리 감사드립니다. 미안해, 내가 리눅스에 익숙하지 않아서 내가 필요한 것을 정말로 모른다. – shahenshah

+0

CentOS6와 "Debian stable"은 SYSV init을 사용하고, Centos 7과 "Debian testing"은 SystemD를 사용합니다. 나는 당신이 어떤 대상인지 확신하지 못합니다. – msuchy