Il Red Hat Package Manager (abbr. RPM) indica, in informatica,
uno dei primi, se non il primo [NdE 1995], sistema di gestione dei pacchetti mai creati per Linux
(cfr. Opera citata).
In questa paginetta vediamo come costruire un nostro file .rpm
che contenga i nostri script, utility o altro.
Un pacchetto software viene presentato come un singolo file con il suffisso .rpm che contiene il programma,
i file di configurazione ed di supporto e gli eventuali script da eseguire per l'installazione.
Con un singolo comando (eg. rpm -i myProgram.rpm) e' possibile installare un pacchetto.
Analoghe opzioni consentono di elencare i programmi installati (eg. rpm -qa),
cancellare programmi (rpm -e myProgram), ...
A differenza di un classico TARBALL un RPM contiene direttamente i binari.
L'installazione di un pacchetto risulta cosi' piu' semplice e veloce perche' non e' necessario compilare nulla.
Il formato RPM e' riconosciuto da molte delle piu' diffuse distribuzioni Linux:
Red Hat,
CentOS, Fedora,
Oracle Linux,
...
Anche se l'acronimo e' preciso... il termine RPM viene usato anche per indicare un singolo pacchetto. Quindi, bando alle ciance, facciamoci un RPM!
Ecco i passi necessari:
%packager mypackage %_topdir %(echo $HOME)/rpmbuild %_smp_mflags %( \ [ -z "$RPM_BUILD_NCPUS" ] \\\ && RPM_BUILD_NCPUS="`/usr/bin/nproc 2>/dev/null || \\\ /usr/bin/getconf _NPROCESSORS_ONLN`"; \\\ if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then \\\ echo "-j16"; \\\ elif [ "$RPM_BUILD_NCPUS" -gt 3 ]; then \\\ echo "-j$RPM_BUILD_NCPUS"; \\\ else \\\ echo "-j3"; \\\ fi ) %__arch_install_post \ [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \ case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \ /usr/lib/rpm/check-buildroot
cd ~/rpmbuild/SOURCES ls -l mypackage-1 -rw-r--r-- 1 root root 13 Dec 25 08:32 README.md -rw-r--r-- 1 root root 75 Dec 25 08:32 hello.txt
Name: mypackage Version: 1 Release: 0 Summary: A sample Hello World package Group: TecAdmin BuildArch: noarch License: GPL URL: https://www.md-c.it/meo/index.htm Source0: mypackage-1.0.tar.gz %description Sample fake package %prep %setup -q %build %install install -m 0755 -d $RPM_BUILD_ROOT/tmp/mypackage install -m 0600 hello.txt $RPM_BUILD_ROOT/tmp/mypackage/hello.txt install -m 0644 README.md $RPM_BUILD_ROOT/tmp/mypackage/README.md %files /tmp/mypackage /tmp/mypackage/hello.txt /tmp/mypackage/README.md %changelog * Mon Dec 25 2017 Meo Bogliolo 1.0.0 - Initial rpm release
cd ~/rpmbuild $ rpmbuild -ba SPECS/mypackage.spec
Abbiamo gia' finito... basta provare ad installare il pacchetto con:
Il comando yum effettua la ricerca/installazione dei pacchetti RPM
basandosi su repository configurati.
E' una potente estensione all'RPM che consente di mantenere aggiornato un sistema
verificando tutte le dipendenze tra i pacchetti.
C'e' qualche trucco per usarlo...
Titolo: Facciamoci un RPM!
Livello: Avanzato
Data:
25 Dicembre 2017
Versione: 1.0.0 - 25 Dicembre 2017
Autore: mail [AT] meo.bogliolo.name