2017-02-28 8 views
0

端末からプログラムを実行するために、自分のRPMにinitスクリプトを追加したいのですが、その名前を入力するだけで、もう混乱していることがあります。 : これらのファイルはpre、post、preun、postunのいずれにありますか?%preなどの行を追加した後、specファイルに直接書き込まれますか?私のRPMにinitスクリプトを追加するには

私は以下のリンクを通過しました。解決策を見つける: -

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

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

更新された================================ ================= 私はCentOSの6.8でそれをやって、ここで私がこれまでに作成したspecファイルです午前: -

# 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 

が、まだやる方法として混乱して私は端末からその名前を入力するだけでプログラムを開始します。

+0

助けていただければ幸いです... – shahenshah

答えて

0

あなたはSYSV初期化ファイルを意味しますか?またはsystemDユニットファイル?異なるロジックですが、大丈夫です。最後には両方のファイルです。別の場所ではなく、ファイルだけです。

あなたは何をする必要があります。%ポスト*と%preunで少し異なるパスと異なるスニペットが存在することになる

%{?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ため。

+0

これは、init.dがRHLの下でdebianとsystemDで使用されているということですか? – shahenshah

+0

私はeclipse(centos)でコンパイルしたバイナリを持っています。バイナリをインストールするためにRPMを作成したいのですが、RPMにはバイナリと設定ファイルを置いてください。私が必要とするのは、私が入っているディレクトリに関係なく名前を入力するだけでバイナリファイルを実行できるということです。そのため、アプリケーション名がxyzの場合は、xyzを端末のどこにでも書きたいと思いますxyzプログラム。前もって感謝します。申し訳ありませんが、私はLinuxに慣れていないので、私が必要としていることを本当に知りません。 – shahenshah

+0

CentOS6と "Debian stable"はSYSV initを使用し、Centos 7と "Debian testing"はSystemDを使用します。私はあなたがどれをターゲットにしているか分からない。 – msuchy

関連する問題