In questa guida spieghiamo come creare pacchetti RPM per Redhat contenenti un solo file. Questo è uno dei requisiti fondamentali per poter superare l’esame RHCE.
Per poter procedere alla creazione, bisogna capire cosa sia un pacchetto SRPM. Avendo la maggior parte dei programmi per Linux una licenza che permette la pubblicazione del codice sorgente, Redhat mette a disposizione, attraverso i suoi repository, la possibilità di visualizzare il codice sorgente di ogni singolo programma attraverso dei pacchetti SRPM (Source RPM). Quando i pacchetti SRPMs vengono installati utilizzando yum in realtà viene copiato il codice sorgente in una subdirectory situata sotto la home dell’utente (non è necessario essere root). Per l’esattezza vengono create due subdirectory denominate rpmbuild/SPECS e rpmbuild/SOURCES. Come suggerisce il nome, all’interno della directory SOURCES vengono copiati i sorgenti del programma, all’interno invece della directory SPECS viene copiato il file che viene utilizzato dal comando rpmbuild per poter creare il vero e proprio pacchetto RPM.
Supponiamo ad esempio di aver installato il pacchetto sRPM del programma vsfptd. Per poter creare il relativo RPM eseguiremo il comando
$ rpmbuild -ba rpmbuild/SPECS/vsftpd.spec
In questa maniera, se le relative dipendenze sono installate, verrà creato il pacchetto RPM sotto la directory rpmbuild/RPMS/x86_64 (o x86 a seconda dell’architettura).
Detto questo, procediamo a creare un pacchetto RPM che installerà (copierà) il file test.pdf sotto la directory /opt/pdf.
Innanzitutto bisogna creare la directory che all’interno conterrà il file interessato, il file configure vuoto (da rendere eseguibile) e comprimere il tutto in un archivio .tar.gz
$ mkdir pdf-1.0
$ cd pdf-1.0
$ touch configure
$ chmod u+x configure
$ cp /home/user/test.pdf ./
$ cd ..
$ tar czvf pdf-1.0.tar.gz pdf-1.0
Ora, se non esiste già, bisogna provvedere alla creazione della struttura della directory rpmbuild, copiare il file .tar.gz all’interno di rpmbuild/SOURCES, e generare un template di file .spec all’interno di rpmbuild/SPECS
$ rpmdev-setuptree
$ mv pdf-1.0.tar.gz rpmbuild/SOURCES
$ cd rpmbuild/SPECS
$ rpmdev-newspec
In questa maniera viene generato un file newspec.spec, template per il file .spec che andremo a creare.
Copiamolo in testpdf.spec e apriamolo tramite un editor di testo, andando a modificare i seguenti parametri:
Name: pdf
Version: 1.0
Summary: file pdf di test
Group: (questa riga è da commentare)
License: gpl
Url: (questa riga è da commentare)
Source0: pdf-1.0.tar.gz
BuildRequires: (questa riga è da commentare)
Requires: (questa riga è da commentare)
Description: Installazione del file test.pdf sotto la directory /opt/pdf
Sezione %build
%configure: (questa riga è da commentare)
%make: (questa riga è da commentare)
Sezione %install
make: (questa riga è da commentare)
Aggiungere:
install -d -m 0755 $RPM_BUILD_ROOT/directory
install –m 0644 test.pdf $RPM_BUILD_ROOT/opt/pdf/test.pdf
Sezione %files
%doc (questa riga è da commentare)
Aggiungere:
%dir /opt/pdf
%defattr (-,root,root,-) (in realtà questa riga dovrebbe già essere presente)
/opt/pdf/test.pdf
Creare quindi il file .rpm
$ rpmbuild -ba testpdf.spec
Il file .rpm verrà creato all’interno di rpmbuild/RPMS/x86_64 (se 64 bit).
Si tratta quindi di una procedura semplice.