Creare pacchetti RPM su CentOS/RHEL

By | ottobre 15, 2016

RPM ( Red Hat Package Manager) è uno dei primi gestori di pacchetti venuti al mondo! In questa guida vedremo come relizzare un proprio pacchetto RPM per poterlo distribuire e installare sui sistemi CentOS e/o Red Hat. Questo può farci comodo per creare un unico file .rpm di un pacchetto compilato “a mano” e successivamente ridistribuirlo sui vari sistemi o averene uno per la reinstallazione facilitata. Pensate quante ore di compilazione possiamo evitare facendo un pacchetto con tutte le varie configurazioni all’intero! Inoltre vi ricordo che è un punto fondamentale della certificazione RHCE! Bene.. detto ciò vi lascio al tutorial.

Il primo passo da fare è installare i pacchetti necessari con il comando:

# yum install rpmdevtools rpm-build

completata l’installazione creiamo il tar.gz del pacchetto che dovremmo creare.

Supponiamo di dover creare un pacchetto che installarà uno script in bash (mioscript.sh) in /opt/myscript.

creiamo la directory che conterrà il nostro script, ed entramo all’interno della stessa:

# mkdir myscript-1.0
# cd myscript-1.0

copiamo il nostro script nella directory attuale:

# cp /path/del/mio/script/mioscript.sh .

creiamo il file configure (vuoto in questo esempio) con relativi permessi di esecuzione:

# touch configure 
# chmod u+x configure

torniamo nel parent della directory e creiamo il tar.gz

# cd ..
# tar cvfz myscript-1.0.tar.gz myscript-1.0/

una volta creato il tar.gz è possibile eliminare la directory appena creata:

# rm -rf myscript-1.0

a questo punto creiamo l’albero delle directory necessarie per la creazione dell’RPM, questo semplicemente con il comando:

# rpmdev-setuptree

noteremo che verrà creata una directory con relative sottodirectory come SPEC, SOURCES, BUILD ecc.

Copiamo il sorgente (tar.gz creato precedentemente) nella directory rpmbuild/SOURCES con il comando:

# cp myscript-1.0.tar.gz rpmbuild/SOURCES/myscript-1.0.tar.gz

ora entriamo nella directory rpmbuild/SPEC e creiamo un file .spec di esempio:

# cd rpmbuild/SPEC
# rpmdev-newspec

vedremo che verrà creato un file “newpackage.spec” che potremmo prendere di esempio per generare quello che ci serve.

rinominiamolo con il nome del nostro pacchetto:

# mv newpackage.spec myscript.spec

A questo punto editiamolo in questo modo:

Name: myscript
Version: 1.0
Release: 1%{?dist}
Summary: script in bash test
Group: Miscellaneus
License: ipv1001
URL: http://www.ipv1001.it
Source0: myscript-1.0.tar.gz
BuildArch: noarch

%description
Il mio primo pacchetto rpm per la copia di uno script in bash

%prep
%setup -q

%build
#%configure
#make %{?_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT
install -d -m 0755 $RPM_BUILD_ROOT/opt/myscript
install -m 0644 mioscript.sh $RPM_BUILD_ROOT/opt/myscript/mioscript.sh

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
/opt/myscript/mioscript.sh

%changelog

a questo punto salviamo il file .spec e creiamo l’RPM con il comando:

# rpmbuild -ba myscript.spec

troveremo il nostro RPM in rpmbuild/RPMS/noarch.

a questo punto possiamo procedere con l’installazione e la distribuzione del pacchetto:

# rmp -ivh rpmbuild/RPMS/noarch/myscript-1.0-1.el6.noarch.rpm

ora entriamo nella directory /opt/myscript e controlliamo che esista il nostro script in bash.

Ovviamnete questo è un esempio molto banale, ma ultile per prendere un pò di dimestichezza su come procedere.

One thought on “Creare pacchetti RPM su CentOS/RHEL

  1. Pingback: 15 esempi pratici del comando RPM - prometheusproject

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *