Corso di C con Linux

Creiamo un RPM

 

Supponete ora di aver finito la vostra applicazione, e volete che oltre al tarball, sia disponibile in formato RPM, ad uso e consumo degli utenti Linux, che usino il Red Hat Package Manager, cosa fareste? In questo paragrafo vediamo come creare un file RPM contenente i vostri eseguibili, e un RPM contenente i sorgenti.
Supponiamo di aver creato il nostro programma di elaborazioni di matrici, che chiameremo matrix, e questo programma abbia una man page e un file di configurazione, chiamato matrix.cfg, che va posto nella directory /etc.
Per poter creare un rpm, contenente tali file é necessario :
Assicurarsi che il file /etc/rpmrc sia impostato in maniera corretta
Creare un file di specifiche sul pacchetto
Creare il pacchetto mediante tale file di specifiche.

Esempio di /etc/rpmrc.
Vediamo come può essere settato il file di configurazione di RPM:

       require_vendor: 1
         distribution: Red Hat
         require_distribution: 1
         topdir: /usr/src/packs
         vendor: NerSoft
         packager: NerSoft Gestione Software <nrsof@soft.it>

         optflags: i386 -O2 -m486
         optflags: alpha -O2
         optflags: sparc -O2

         signature: pgp
         pgp_name:
         pgp_path: /home/packages/.pgp

         tmppath: /tmp


La linea 1, obbliga RPM a trovare una linea vendor, dove si specifica di solito il produttore del pacchetto. Le linee:

        distribution: Red Hat
         require_distribution: 1


Sono direttamente collegate poiché se la seconda é settata a 0, nella prima non é necessario specificare per quale distribuzione debba essere creato il pacchetto. Tralasciamo le due linee successive, che sembrano abbastanza chiare e passiamo ad optflags, li vengono specificati i flag da passare al compilatore per rendere il programma ottimizzato per la data piattaforma; l'ottimizzazione viene fatta durante la compilazione del pacchetto stesso. Le restanti linee servono per l'autenticazione del pacchetto. Oltre a queste opzioni per il file /etc/rpmrc, ne esistono altre che potete scoprire con il comando : rpm --showrc.

Creiamo il file di specifiche.
Dopo aver settato a modo l'rpm, creiamo il nostro file di specifiche, matrix-1.0.SPEC:

       Summary:Pacchetto di elaborazione matematica matrix
       Name: matrix
       Version: 1.0
       Release: 1
       Copyright: GPL
       Group: Utility
       Source: ftp://ftp.techno.it/matrix.tar.gz

       %description
Progetto di Laboratorio. Parser per le elaborazioni di matrici.
       %files
       %config /etc/matrix.cfg
       /usr/bin/matrix
       /usr/man/man4/matrix.4


Cerchiamo di descrivere a modo questo file, e i suoi campi:
Summary. Contiene una descrizione riassuntiva del pacchetto
Name. É la label che verrà assegnata al pacchetto all'interno del database dopo l'installazione.
Version. Versione del software.
Release. Numero di versione indicante il numero di volte che il pacchetto é stato impacchettato per questa versione.
Copyright. Indica chi detiene il copyright su quel determinato pacchetto.
Group. Indica a quale gruppo deve appartenere il pacchetto.
Source. Serve per indicare l'URL in cui é possibile reperire il pacchetto.
Description Da una generale panoramica sull'utilizzo del pacchetto.
Files Indica quali siano i file che fanno parte del pacchetto. Ogni file di configurazione é necessario farlo precedere dal %config.

Creiamo il pacchetto RPM
Ora copiamo i file nelle posizioni specificate dal file .SPEC nel nostro sistema (tanto per intenderci l'eseguibile matrix va in /usr/bin,la man page in /usr/man/man4, il file di configurazione matrix.cfg in /etc). A questo punto possiamo fare la creazione del pacchetto con il comando:

       cyberspace.org:~# rpm -bb matrix-0.1.SPEC
       Processing files: matrix
       Finding provides...
       Finding requires...
       Requires: ld-linux.so.2 libc.so.6 libc.so.6(GLIBC_2.0)
       Wrote: /usr/src/rpm/RPMS/i386/matrix-0.1-1.i386.rpm

Abbiamo ora ottenuto il nostro pacchetto, installiamolo:

cyberspace.org:/usr/src/rpm/RPMS/i386 # rpm -i matrix-0.1-1.i386.rpm

E interroghiamolo:

cyberspace.org:~# rpm -qi matrix
Name        : matrix                     Relocations: (not relocateable)
Version     : 0.1                        Vendor: NerSoft
Release     : 1                          Build Date: Thu Feb 10 20:41:11 2000
Install date: Fri Feb 11 11:54:55 2000   Build Host: liz.cyberspace.org
Group       : Utility                    Source RPM: matrix-0.1-1.src.rpm
Size        : 25168                      License: GPL
Summary     : Pacchetto di elaborazione matrici matrix
Description : Pacchetto di elaborazioni di semplici matrici

 

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