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