2017-02-28 2 views
0

Je veux ajouter un script d'initialisation à mon RPM afin d'exécuter le programme à partir d'un terminal en tapant simplement son nom, il y a une chose que je suis confus au sujet et qui est : - où sont ces fichiers situés: pré, post, preun, postun, sont-ils écrits directement dans le fichier spec après l'ajout d'une ligne% pre etc.Comment puis-je ajouter un script d'initialisation à mon RPM

J'ai traversé les liens suivants mais je ne pouvais pas trouver une solution: -

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

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

Mise à jour ============================================== ================= que je fais sur CentOS 6.8 et voici le fichier spé créé jusqu'à présent: -

# 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 

mais encore confus quant à la façon faire Je démarre le programme à partir d'un terminal en tapant simplement son nom.

+0

apprécieront toute l'aide ... – shahenshah

Répondre

0

Vous voulez dire SYSV fichiers init? Ou des fichiers d'unité systemD? Logique différente, mais ok - à la fin ce sont les deux fichiers. Dans un endroit différent, mais seulement des fichiers.

Vous devez faire:

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

Pour SYSV il y aurait peu différents chemins et des extraits différents en% après * et% preun.

+0

Ok, ça veut dire init.d est utilisé sous debian et systemd sous RHL? – shahenshah

+0

J'ai un binaire que j'ai compilé sur Eclipse (CentOS), je veux créer un RPM pour installer ce binaire, tout ce que je veux que mon RPM à faire est, placer les fichiers binaires et de configuration en place, qu'il est fait absolument bien, mais ce dont j'ai besoin, c'est de pouvoir exécuter ce fichier binaire en tapant simplement le nom quel que soit le répertoire dans lequel je suis. Donc, si le nom de l'application est xyz, je veux écrire xyz n'importe où dans le terminal et exécuter le programme xyz. Merci d'avance. Désolé je ne sais pas vraiment ce dont j'ai besoin car je suis nouveau à linux. – shahenshah

+0

Centos6 et "stable Debian" utilisent SYSV init, Centos 7 et "Test Debian" utilisent SystemD. Je ne suis pas sûr de savoir qui vous ciblez. – msuchy