GLM - 8/8/2020 - 10:12


Classifica dei relatori GLM 2014 (per numero di lezioni svolte)

  1. [9] Samuele Cacchiarelli
  2. [6] Andrea Bianchini
  3. [6] Gianluca Gabrielli
  4. [1] Matteo Ciccioli
  5. [1] Fabio Pagnotta
  6. [1] Alessandro Zampa
  7. [1] Emanuele
  8. [1] Roberto Marozzi
  9. [1] Giampiero Rubini

Vuoi diventare relatore GLM? presenta anche tu una lezione su un argomento che più ti piace relativo a Linux o al mondo dell'OpenSource


Archivio news

server glm
Il nostro Server

bella gnocca freebsd
FreeBSD It's Here!

Come Ottenere un file RPM dai propri sorgenti

2. Il file .spec, fulcro del procedimento

Il file .spec é il cuore del procedimento di costruzione del pacchetto RPM. E' molto simile, come concetto, a quello di un makefile e contiene le informazioni necessarie al comando RPM per compilare il pacchetto. Inoltre, il file .spec ci dice esattamente quali file faranno parte del pacchetto e dove dovranno essere installati all'interno del sistema. Ovviamente, a causa del fatto che tutto il processo di costruzione ruota attorno a questo file, esso non é proprio semplice da scrivere. Comunque, tutte le sue funzionalità sono separate in sezioni, e questo ci permette di lavorare in maniera più agevole. Esistono otto sezioni disitinte :

Il preambolo
Il preambolo contiene le informazioni che verranno visualizzate quando gli utenti le richiedono con il comando "rpm -q......". Dovrà contenere una descrizione delle funzionalità messe a disposizione dal pacchetto, il numero di versione del programma, ed altre informazioni che si ritengono necessarie visualizzare. Inoltre, il preambolo potrà contenere informazioni sulle sorgenti, sulle patch al programma, e addirittura l'icona da utilizzare se il pacchetto viene manipolato attraverso un' interfaccia grafica.

La sezione Prep
Nella sezione Prep inizia il processo vero e proprio di costruzione del pacchetto. Come si può intuire dal nome, in questa sezione si indicano tutte le azioni da effettuare per "preparare" in maniera consona la compilazione del pacchetto. In generale, se si necessita di fare modifice o cambiamenti alle sorgenti del programma, questo deve essere fatto in questa sezione. Questo normalmente implica di dover scompattare il file .tar.gz delle sorgenti.
Il contenuto della sezione, comunque, consta di uno script di shell, ed in ogni caso, l'RPM mette a disposizione due MACRO per renderci la vita più semplice. La prima scompatta il .tar.gz e si posiziona dentro la directory delle sorgenti, mentre la seconda serve per applicare in maniera veloce (ed indolore), le patch alle sorgenti appena scompattate.

La sezione Build
Come la sezione Prep anche quella Build consiste in uno script di shell. E' usata per eseguire tutti quei comandi necessari per compilare le sorgenti del nostro programma. Questa sezione, in molti casi potrebbe consistere di un unica istruzione "make", in altri potrebbe essere un vero e proprio script; inoltre, poiché la maggior parte del software viene compilato usando il comando "make", non sono previste macro per questa sezione.

La sezione Install
Anche questa sezione contiene un script di shell. Viene usata per eseguire i comandi necessari ad installare il programma. Se il programmatore ha aggiunto una sezione install nel suo makefile, la sezione potrebbe consistere solamente del comando "make install". Altrimenti, è necessario scrivere uno script (con comandi tipo cp,mv,etc..) che faccia il lavoro desiderato.
A questo proposito vi invito a rivedere il Makefile mostrato nel capitolo 1 del tutorial.
Gli script di Install e Uninstall
Mentre le sezioni precedenti contenevano informazioni per costruire il pacchetto, questa sezione è leggermente diversa. Consiste di script che verranno eseguiti, sul sitema, quando il pacchetto viene installato o rimosso. RPM può eseguire uno script in questi casi :

  • Prima che il pacchetto venga installato.
  • Dopo che il pacchetto è stato installato.
  • Prima che il pacchetto venga cancellato.
  • Dopo la cancellazione del pacchetto.

Un caso in cui è necessario usare questa sezione, è quando il pacchetto contiene delle librerie condivise. In questo caso, bisognerà far eseguire il comando "ldconfig" dopo aver installato o cancellato il pacchetto. Come altro esempio , se il pacchetto contenesse una shell, bisognerebbe aggiornare il file "/etc/shells" in maniera adeguata dopo aver installato o rimosso il pacchetto.

Lo script di verifica
Consiste di un altro script da eseguire sul sistema quando RPM verifica l'installazione del pacchetto. In generale RPM fa quasi tutto il lavoro da solo ma, nel caso in cui ci siano da verificare degli aspetti dell'installazione del pacchetto che vadano oltre le funzionalità dell' RPM, lo si potrà fare in questa sezione.

La sezione di Clean
Questa sezione serve per pulire le directory di appoggio usate per installare il pacchetto ed in genere è usata raramente poiché, in genere, RPM riesce a fare un ottimo lavoro di pulizia nella maggior parte degli ambienti di sviluppo.

La sezione della Lista dei file
Consiste in una lista di file che sono compresi nel pacchetto. In più, in questa sezione si possono usare tutta una serie di macro per controllare gli attriuti dei file una volta installati, e per denotare quali sono i file di documentazione e quali quelli di informazione.

Attenzione !! Questa sezione è molto importante! Se manca, il pacchetto non verrà costruito.


Cosa Otterremo alla fine del processo

Il prodotto finale di tutto il processo consisterà in due pacchetti : quello delle sorgenti e quello degli eseguibili.

Il pacchetto delle sorgenti è un archivio speciale contenente :

Poiché il pacchetto delle sorgenti contiene tutto quello che è necessario per costruire il pacchetto degli eseguibili (e sè stesso ovviamente), rappresenta un ottimo modo per distribuire le proprie sorgenti in giro per il mondo.

Il pacchetto degli eseguibili, dal canto suo, contiene , oltre ai file che compongono l'applicazione, tutte le informazioni addizionali necessarie per installarla e cancellarla dal sistema.

Dove li troveremo ??? Nelle directory contenute in "/usr/src/RPM/" (siate un po' intrapendenti da cercarli da soli).

Precede il capitolo 1

Segue il capitolo 3