Come creare il primo RPM su CentOS 7

In questo tutorial andremo a descrivere nel dettaglio come poter realizzare il primo RPM su CentOS 7.

Partiamo da una macchina virtuale CentOS aggiornata alla versione 7.5 (seguire l’ articolo sull’ installazione),

yum update

cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

installiamo i pacchetti di sviluppo del gestore dei pacchetti RPM

yum install rpm-build rpmdevtools

inoltre installiamo qualche strumento utile durante la fase di creazione

yum install vim

Consideriamo di creare una cartella nella home nel nostro caso di root (per semplicità)

cd

rpmdev-setuptree

questo comando ci permette di creare l’ alberatura per la costruzione del nostro RPM

cd rpmbuild

ls

BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

sono le cartelle che ci serviranno per tutte le fasi di creazione del pacchetto.

Creiamo un semplice script, che in seguito verrà installato con il gestore dei pacchetti RPM

vim /root/primo_rpm.sh

cat /root/primo_rpm.sh

#!/bin/sh
echo ‘ciao’

copiamo lo script nella cartella SOURCES, creiamo la seguente alberatura

cd /root/rpmbuild/SOURCES

mkdir -p primo_rpm-1

cp /root/primo_rpm.sh primo_rpm-1/

chmod +x primo_rpm-1/primo_rpm.sh

creiamo il pacchetto sorgente in formato tar (servirà per la fase di distribuzione dello script)

tar -cvzf primo_rpm-1.tar.gz primo_rpm-1/

creiamo adesso il file .spec, il file guida per la creazione del pacchetto RPM

cd /root/rpmbuild

rpmdev-newspec SPECS/primo_rpm.spec

ci viene fornito un template, effettuiamo le modifiche in base al nostro esempio

salviamo il tutto e compiliamo il pacchetto

rpmbuild -v -bb SPECS/primo_rpm.spec

avremo il seguente risultato

Esecuzione(%prep) in corso: /bin/sh -e /var/tmp/rpm-tmp.OpgrE0
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf primo_rpm-1
+ /usr/bin/tar -xf –
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/primo_rpm-1.tar.gz
+ STATUS=0
+ ‘[‘ 0 -ne 0 ‘]’
+ cd primo_rpm-1
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Esecuzione(%install) in corso: /bin/sh -e /var/tmp/rpm-tmp.jbUf3u
+ umask 022
+ cd /root/rpmbuild/BUILD
+ ‘[‘ /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64 ‘!=’ / ‘]’
+ rm -rf /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64
++ dirname /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64
+ cd primo_rpm-1
+ mkdir -p /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64/opt
+ cp -R primo_rpm.sh /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64/opt
+ ‘[‘ noarch = noarch ‘]’
+ case “${QA_CHECK_RPATHS:-}” in
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Elaborazione file: primo_rpm-1-0.noarch
Provides: primo_rpm = 1-0
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/sh
Controllo per file non pacchettizzati in corso: /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64
Scritto: /root/rpmbuild/RPMS/noarch/primo_rpm-1-0.noarch.rpm
Esecuzione(%clean) in corso: /bin/sh -e /var/tmp/rpm-tmp.2p8fgC
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd primo_rpm-1
+ rm -rf /root/rpmbuild/BUILDROOT/primo_rpm-1-0.x86_64
+ exit 0

installiamo a questo punto il pacchetto

rpm -ivh /root/rpmbuild/RPMS/noarch/primo_rpm-1-0.noarch.rpm

Preparazione in corso… ################################# [100%]
Aggiornamento / installazinone…
1:primo_rpm-1-0 ################################# [100%]

adesso se andiamo sulla cartella

cd /opt

avremo

ls -ltr

-rwxr-xr-x. 1 root root 22 24 mag 20.16 primo_rpm.sh

Potrebbero interessarti anche...

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi