( 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.
Pingback: 15 esempi pratici del comando RPM - prometheusproject