Corso di C con Linux

Un pacchetto contenente i sorgenti

 

Creare un pacchetto, che contenga solo binari, é abbastanza riduttivo per le caratteristiche che l'RPM stesso fornisce. Editiamo allora in maniera opportuna il nostro file matrix-0.2.SPEC:

       Summary: Pacchetto di elaborazione matrici matrix
       Name: matrix
       Version: 0.2
       Release: 2
       Copyright: GPL
       Group: Utility
       Source: ftp://ftp.techoz.it/matrix-0.2/matrix-0.2.tar.gz

       %description
       Pacchetto di elaborazioni di semplici matrici
       %prep
       %setup
       %build
       configure --prefix=/usr/bin
       make
       %install
       make install
       %clean
       rm -fr matrix-0.2
       %files
       %config /etc/matrix.cfg
       /usr/bin/matrix
       /usr/man/man4/matrix.4
       %doc NEWS
       %doc README
       %doc AUTHORS
       %doc INSTALL
       %doc ChangeLog

Il file matrix-0.2.SPEC,che deve essere posto nella directory /usr/src/rpm/SPECS, é composto da differenti sezioni, che analizziamo:
%prep. Forse in cui il file deve essere decomposto e preparato per la compilazione. Di solito é composta semplicemente da una sottosezione %setup, che vediamo sotto e che ha come compito principale di scompattare il sorgente, eseguendo il tar sul file, il cui nome é ricavato dal tag Source, posto all'interno del file matrix-0.2.SPEC stesso.
%build. Qui l'RPM, configura e compila il pacchetto, dopo averlo scompattato. Nel nostro esempio abbiamo supposto di aver creato il tarball via autoconf. La directory di lavoro, dove RPM compila e configura é:/usr/src/redhat/BUILD.
%install. Dopo la compilazione i file vanno copiati nelle posizioni adeguate, e per far ciò basta fare il comando make install. Si noti che anche qui non avessimo usato i Makefile, si sarebbe dovuto usare il comando install o un semplice cp. La directory di lavoro é anche qui /usr/src/redhat/BUILD.

%clean. Vengono eliminati i vecchi dati della directory /usr/src/rpm/BUILD, e per far ciò :rm -fr nomepacchetto.
%files. Dopo aver svolto le sessioni precedenti, i files sono posizionati sul disco rigido, ma non sono posti come dovrebbero. Bisogna dire all'RPM dove trovare i file, siccome durante l'esecuzione delle sezioni precedenti l'RPM non ne ha tenuto traccia. E questa operazione viene svolta mediante la sezione %files. I file di configurazione vanno specificati nella direttiva %config e quelli di documentazione con la direttiva %doc. L'RPM copia automaticamente questi ultimi nella directory /usr/doc/nome-pacchetto, ovvero nel nostro caso /usr/doc/matrix-0.2.
Da notare che la struttura del tarball, che andrà poi posto nella directory /usr/src/rpm/SOURCES deve essere il tarball di una directory contenete il pacchetto avente come nome, quello indicato nel .SPEC, alla direttiva Source. Sia matrix-0.2 il nome del pacchetto, la directory che contiene i file del pacchetto deve essere matrix-0.2. Procediamo quindi nel seguente modo:

       mkdir matrix-0.2
       tar cfvz matrix.tar.gz matrix-0.2
       mv matrix.tar.gz /usr/src/rpm/SOURCES

       A questo punto per compilare e ottenere il tutto basta fare:
       cd /usr/src/rpm/SPECS
       rpm -bb matrix-0.2.SPEC

Nell'esempio presentato sopra abbiamo tralasciato alcune sezioni, che possono essere utili nella creazione di un pacchetto. Presentiamole nella tabella sottostante seguendo l'ordine in cui vanno poste.

Tabella 2-12. Sezione dei file di specifica RPM

Sezione

Descrizione

Summary: testo

Panoramica sul pacchetto.

Nome: pacchetto

Nome del pacchetto.

Versione: versione

Versione del pacchetto.

Release: release

Release del pacchetto

Source: file

File sorgente.

Patch: file

Patch di applicare.

Copyright: Testo

Tipo di licenza

BuildRoot: directory

Directory temporanea di installazione.

%define nomevalore

Definizione di una macro.

%description

Segue descrizione

%prep

Segue fase di preparazione.

%setup

Scompatta il pacchetto.

%patch

Applica la patch indicata.

%build

Segue istruzioni per la compilazione.

%install

Segue istruzioni per l'installazione.

%clean

Segue fase rimozione fine lavoro

%pre

Segue script di pre-installazione.

%post

Segue script di post-installazione.

%preun

Segue script di pre-disintallazione.

%postun

Segue script di post-disinstallazione.

%files

Segue elenco files.

%config

Segue file di configurazione.

%doc

Segue file di documentazione.

Sezione

Descrizione

 

Torna all'indice Generale del corso di Corso di C con Linux di Software Planet