I pacchetti RPM , acronimo di REDHAT PACKAGE MANAGER, sono quelli che comunemente installiamo nella nostra distro e non solo.Da premettere che realizzarli da sorgenti già pronti si perde pochissimo tempo, mentre se dobbiamo creare anche il file .spec le cose cambiano.
Iniziamo, prima di tutti ci serve un pacchetto sorgente per la nostra distro che andiamo a prendere dai repo SRPM, il pacchetto di esempio è wicd che sfortunatamente non si trovano nei mirror ufficiali, ma nel MIB si.
Installiamo il pacchetto sorgente da user normale senza password di root da terminale:
rpm -ivh wicd-xxx-.src.rpm
L'dentificativo xxx è il numero di release del pacchetto, che al momento a noi non ci interessa.
Fatto cio entriamo nella cartella /home/utente/rpmbuild/SPECS
da terminale eseguiamo il seguente comando:
rpmbuild -bs wicd.spec
L'output che ci restituirà il terminale sarà questo:
[specialworld83@localhost SPECS] $ rpmbuild -bs wicd.spec Scritto: /home/specialworld83/rpmbuild/SRPMS/wicd-1.7.0-69mdv2010.2.src.rpm [specialworld83@localhost SPECS]$ cd .. [specialworld83@localhost rpmbuild]$ ls BUILD/ BUILDROOT/ RPMS/ SOURCES/ SPECS/ SRPMS/ [calogero@localhost rpmbuild]$
Ora la fase più importante, ottenere il pacchetto rpm, eseguite questo comando:
rpmbuild --rebuild /home/utente/rpmbuild/SRPM/wicd-1.7.0-69mdv2010.2.src.rpm
Ecco che parte la compilazione del programma, e vi restiurà alla fine se tutto è corretto questo output:
Elaborazione file in corso: wicd-1.7.0-69mdv2010.2 Esecuzione(%doc) in corso: /bin/sh -e /var/tmp/rpm-tmp.0JfFtV + umask 022 + cd /home/specialworld83/rpmbuild/BUILD + cd wicd-1.7.0 + DOCDIR=/home/specialworld83/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386/usr/share/doc/wicd + export DOCDIR + /bin/mkdir -p /home/specialworld83/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386/usr/share/doc/wicd + cp -pr AUTHORS README /home/specialworld83/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386/usr/share/doc/wicd + exit 0 Ricerca di Provides in corso: /usr/lib/rpm/mandriva/filter.sh ' ' ' ' '/home/calogero/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386' /usr/lib/rpm/mandriva/find-provides Ricerca di Requires in corso: /usr/lib/rpm/mandriva/filter.sh ' ' ' ' '/home/calogero/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386' /usr/lib/rpm/mandriva/find-requires /home/calogero/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386 i586 Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(pre): /bin/sh Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: python >= 2.6 bash coreutils Controllo per file scompattato/i in corso: /usr/lib/rpm/check-files /home/calogero/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386 Scritto: /home/calogero/rpmbuild/RPMS/i586/wicd-1.7.0-69mdv2010.2.i586.rpm Esecuzione(%clean) in corso: /bin/sh -e /var/tmp/rpm-tmp.XUl2dt + umask 022 + cd /home/calogero/rpmbuild/BUILD + cd wicd-1.7.0 + rm -rf /home/calogero/rpmbuild/BUILDROOT/wicd-1.7.0-69mdv2010.2.i386 + exit 0 Esecuzione(--clean) in corso: /bin/sh -e /var/tmp/rpm-tmp.fVrkzL + umask 022 + cd /home/calogero/rpmbuild/BUILD + rm -rf wicd-1.7.0 + exit 0
Il file viene salvato nella cartella rpmbuild/RPMS/i586
Da precisare che non tutti i pacchetti rpm si realizzano con estrema facilità, ma ho preso un src da me stesso realizzato e ho creato il pacchetto, per evitare confusioni varie.
La guida spero possa esservi di aiuto a chi vuole cimentarsi nella pacchetizzazione. Preciso che per controllare meglio i file spec vi è rpmlint che trova se ci sono errori oppure.
Commenti
Inviato da Stefano il Mer, 19/01/2011 - 02:49.
Re: Crea il tuo pacchetto rpm
Grazie del contributo, guida molto interessante ed utile
Stefano
Stefano Mainardi - Founder of ILDN & CEO of Twinbit
Inviato da paolo il Mer, 19/01/2011 - 02:55.
Re: Crea il tuo pacchetto rpm
Ottimo contributo, grazie.
Paolo Mainardi - ILDN Founder - CTO Twinbit
http://www.paolomainardi.com
http://www.twinbit.it
Inviato da Nick78 il Mer, 19/01/2011 - 11:56.
Re: Crea il tuo pacchetto rpm
Woow bella guida!! ora ci provo anche io!
Ciao ciao!!
Nicola
NiCk on Mandriva 2011 - Asus K61IC - P8700 - 4Gb Ram - KDE SC 4.6.5 - Kernel 3.0.1 - Nvidia GT_220M 1Gb - Linux registered user #496729 - www.nickworlds.it - Samsung Galaxy S3 Android 4.0.3