GLM - 2/3/2021 - 22:58


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

3. Il file Ciao_Mondo.spec passo per passo

Di seguito spiegherò in maniera abbastanza approfondita come è fatto il file Ciao_Mondo.spec del nostro esempio. Chiaramente, mi limiterò a commentare le opzioni usate nel suddetto file, ma tenete conto che il mondo dei pacchetti RPM è molto più ampio e complicato. Se volete un riferimento, io ho trovato un aiuto prezioso nel documento Red Hat "Maximun RPM : Taking the Red Hat Package Manager to the Limit" che è in inglese (non si può avere tutto dalla vita! ) , ma probabilmente, ad oggi, potrebbe esistere anche la versione in italiano. Comunque, tenete conto che chi si avvicina a Linux, deve necessariamente saper leggere l'inglese scritto.

NOTATE che Il codice del file è scritto in nero mentre i miei commenti (che non sono da inserire nel file) sono scritti in bianco.

Innanzi tutto, non sono presenti le sezioni di "Script di install/uninstall" e di "Verifica" , in quanto non necessarie per i miei scopi.
Poi, in generale, non è necessario usarle, a meno che non scriviate programmi molto complicati o dobbiate installare anche delle librerie.

Preambolo

Sotto mi sono defino alcune variabili che mi faranno comodo in seguito.
notate la sintassi che è diversa da tutto quello che si può conoscere
(C,FORTRAN,Pascal,Shell,...) questo lo dico anche per sottolineare
il fatto che l'anarchia informatica a volte sarebbe da evitare.
Chiaramente è diveso anche il modo di riferire le variabili.

%define name Ciao_Mondo
%define version 0.1
%define release 1
%define instdir /usr/bin

Di seguito ci sono (più o meno) tutti i parametri che bisogna usare per
compilare la sezione del preambolo.
Il nome del programma, un piccolo riassunto della descrizione, la versione,
la release (per le distribuzioni), il nome del pacchetto delle sorgenti,
L'URL dello sviluppatore, il gruppo (o tipo) del programma, la licenza.
A parte è il parametro Buildroot che indica all' rpm la directory da
usare durante il processo di compilazione e costruzione del pacchetto.

Name: %{name}
Summary: Utility that prints a message to the stdout.
Version: %{version}
Release: %{release}
Source: %{name}-%{version}.tar.gz

Notate come mi sono costruito il nome del file .tar.gz (nome-versione).

URL: none
Group: Applications
BuildRoot: %{_tmppath}/%{name}-buildroot

Questo parametro è importante se volete permettere a qualsiasi utente di
compilare un pacchetto rpm (basta, come ho fatto io, aggiungere il path per
la directory temporanea e poi completarlo con le stringhe necessarie).

License: GPL

Chi sviluppa sotto Linux dovrebbe distribuire le sorgenti sotto licenza GPL.

%description
A utility that prints the message "Ciao Mondo !!!!" to the stdout.

La descrizione vera e propria è una variabile da definire.
Dovrebbe essere più dettagliata e completa possibile (non come questa sopra).


Sezione Prep

%prep
rm -rf $RPM_BUILD_ROOT
%setup

Qui prima cancello e pulisco la directory di lavoro e poi chiamo la MACRO
"setup" che si occupa da sola di scompattare il file delle sorgenti nella
nuova directory di lavoro.


Sezione Build

%build
%make

Qui basta chiamare il comando "make" per compilare le sorgenti.
Questo perché ci siamo definiti a modo il makefile.


Sezione Install

%install
%make install

Qui basta chiamare il comando "make install" per far partire la simulazione
di installazione delle sorgenti. Questo perché ci siamo definiti
a modo il makefile. Vedi anche il capitolo 1 dove è listato il makefile.


Sezione Clean

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf /usr/src/RPM/BUILD/%{name}-%{version}

Alla fine di tutto il processo cancello la directory di lavoro ed anche
il pacchetto temporaneo di build.


File List

Qui Oltre alla lista dei file bisogna notare alcune direttive interessanti:
la direttiva "attr" con cui diciamo all'rpm come settare gli attributi
dei file contenuti nel pacchetto (diritti,utente,gruppo); la direttiva "doc"
con cui si specifica quali sono i file di documentazione;
la direttiva "Changelog" che serve per aggiungere altre informazioni
sul pacchetto.

%files
%attr(0755,patton,patton)


Lista dei file vera e propria

%{instdir}/%{name}


Fine lista dei file

%doc README NEWS COPYING AUTHORS ChangeLog
%changelog
*Sat Oct 19 2002 Andrea Paternesi <paternes@cli.di.unipi.it>
*Alpha version 0.1 of Ciao_mondo

Fate attenzione alla data che DEVE essere scritta in questo modo.
Se non volete problemi in compilazione limitatevi a copiare i Changelog
come sono mantenedo invariata la formattazione e alterandone solo i
contenuti.

Conclusioni finali

Il modo migliore per IMPARARE qualcosa è quella di studiarci sopra e sbatterci più volte il muso.
Se vi siete scaricati il pacchetto (lo trovate nel capitolo 1) contente tutti i file necessari (e funzionanti), avete una base interessante su cui lavorare per costruire i vostri pacchetti RPM. Io, non ho avuto modo di testare il processo di compilazione su distribuzioni Debian e Slackware; comunque, se qualcuno di voi ci prova e mi manda gli eventuali BUG ne sarei molto grato. Sicuramente il processo funziona senza errori su distribuzioni Red-Hat, Suse e Mandrake Linux.
Ho evitato di parlare dei Makefile per la compilazione del programma in C perché non sono argomento di questo Tutorial e perché li considero facenti parte dei pre-requisiti del Tutorial.
Appena posso metterò in linea anche il capitolo 4 che spiega a fondo il log del processo di costruzione del pacchetto.

Chiunque ne voglia sapere di più mi può trovare senza problemi all' indirizzo e-mail a fondo pagina.

Precede il capitolo 2


Andrea Paternesi
Last Update 30/03/2003
mail