LinuxLudus: Nuova Guida Instllazione programmi

linuxludus@lists.linux.it linuxludus@lists.linux.it
Ven 17 Nov 2006 14:55:19 CET


valerio
-------
Ciao a tutti, sto creando una guida da mettere sul sito che spiega "i
concetti" per l'installazione dei programmi. Praticamente una cosa un
po' più prolissa e completa della slide usata al Linux day.
La guida si divide in 3 blocchi: pacchetti, sorgenti, altri.
Non è completa e vi saranno correzione da fare. Per cortesia giratemi
i vostri consigli e aggiungte che piano piano le metto insieme.

---------------
GUIDA

Lo scopo di questa guida è passare quei concetti fondamentali che
riguardano l'installazione dei programmi senza fare riferimento ad una
specifica distribuzione.

E' indispensabile sapere che i due principali modi per distribuire un
programma sono:
1-pacchetti precompilati
2-codice sorgente

Brevemente: il codice sorgente è il codice che ha scritto il
programmatore, cioè un file di testo scritto con un linguaggio di
programmazione, in altre parole una qualcosa di simile all'inglese.
Il linguaggio di programmazione è comprensibile ad un essere umano ma
non ad un computer.

Il codice deve subire un processo di compilazione nel quale il file di
testo viene tradotto in un file binario (una sequenza di 1 e 0) che
può essere eseguito dalla macchina ma non è comprensibile ad un essere
umano.
Tale file è chiamato anche "eseguibile".

Comprese queste due cose possiamo capire bene come vengono gestiti i
programmi in un sistema GNU/Linux.







1°METODO: PACCHETTI PRECOMPILATI


L'ABITUDINE: i programmi non si scaricano dai siti e non si installano
con doppio clic (non è la via migliore).

I PACCHETTI: i programmi sono una serie di files contenuti in un
"archivio" o meglio pacchetto (.deb .rpm .tgz) che oltre ai files del
rpogramma contiene informazioni su di essi.

LE DIPENDENZE: un programma dipende da altri programmi e/o librerie.
Ad esempio, K3b (un programma grafico per masterizzare) è l'interaccia
grafica ci cdrecord e altri programmi a linea di comando. Se non si
installano prima cdrecord e gli altri programmi, non ha senso
installare k3b, non funzionerebbe.

I GESTORI DI PACCHETTI: risolvere a mano le dipendenze è ... da
esaurimento. Esistono diversi programmi che gestiscono le dipendenze
sia durante l'installazione che la rimozione del software. Esempi:
urpmi (mandrinva .rpm) apt-get (debian e derivate .deb) swaret
(slackware .tgz).
Facciamo l'esempio inverso: immaginiamo di aver già installato k3b e
cdrecord. Se rimuovo k3b non riceverò messaggi "strani", se provo a
rimuovere cdrecord il gestore di pacchetti mi avviserà che andrà a
disisntallare anche k3b (altrimenti inutilizzabile).

REPOSITORY (ARCHIVI DI PACCHETTI): i programmi si scaricano dai server
della propria distribuzione. Tali server, contengono degli archivi di
software, detti repository solitamente divisi secondo una certa logica
(ad esempio i programmi liberi sono separati da quelli non liberi o da
quelli aggiunti dalla comunità).

GESTIONE LISTA SOFTWARE: il gestore di pacchetti scarica la LISTA dei
pacchetti presenti sui repository ma NON i pacchetti veri e propri,
dovrebbe altrimenti scaricare giga e giga. Quando ha la lista in
locale permette di selezionare il nuovo software da installare ed
aggiornare, anche senza essere connessi. Poi quando sì da l'ok, la
connessione deve essere attiva ed il gestore di pacchetti scaricherà
tutte le dipendenze per noi : )
Dato che i pacchetti vengono aggiornati sui repository, la lista
presente sul nostro pc diventa obsoleta, per questo è sempre meglio
rinfrescarla prima di installare software e per scaricare gli
aggiornamenti.
Si rischia altrimenti che il gestore di pacchetti cerchi un programma
o libreria che non esiste (ma esiste la versione superiore).

COMPATIBILITA': purtroppo un pacchetto precompilato per una
distribuzione generalmente non è installabile su un'altra. I motivi
sono molteplici ma la situazione è questa: ogni distribuzione può
installare dei pacchetti compilati per lei e non per altre.


PER COMODITA RIPORTIAMO I LINK DELLE PAGINE IN CUI è POSSIBILE TROVARE
LA LISTA DEI REPOSITORI PER ALCUNE DISTRIBUZIONI.

	<a href="http://easyurpmi.zarb.org/" target="_blank">MANDRIVA</a> <br />

	<a href="https://help.ubuntu.com/ubuntu/desktopguide/C/extra-repositories.html"
target="_blank">UBUBTU</a><

	<a href="http://www.debian.org/mirror/mirrors_full#IT"
target="_blank">Debian</a>
	
	<!--AGIUNGETE IL LINL CON UNA LISTA DEI REPOSITORY UFFICIALI PER LA
VOSTRA DISTRIBUZIONE -->


	
	
	
	
	


2° METOFO: COMPILAZIONE DEI SORGETI

La compilazione di un programma generalmente è un operazione
relativamente semplice. La cosa veramente problematica del processo di
compilazione è la risoluzione delle dipendenze. Per compilare un
programma, è necessario

1-avere i sorgenti del programma
(di solito un pacchetto tar.bz2 o tar.gz o anche pacchetti src.rpm, src.deb);
2-avere il compilatore e altri strumenti installati (facilmente
installabili usando i pacchetti precompilati).

Molti programmi sono scritti con i linguaggi c e c++, per i quali si
usa il compilatore gcc. Altri programmi possono essere scritti con
altri linguaggi di programmazione, per i quali servono altri
compilatori.

Una volta ottenute queste due cose si può passare al processo di compilazione
1-decomprimere il file con i sorgenti
2-leggere i files README ed INSTALL che danno informazioni sul
programma e cosa serve per compilarlo.
3-eseguire
./configure
"configure" è uno script che configura tutta una serie di variabili
prima del processo di compilazione vero e proprio. Questo è necessario
perché molte cose cambiano da un sistema all'altro, sia dal punto di
vista hardware che softwre. "configure" controlla anche che siano
presenti tutti i files necessari alla compilazione.
4-make
con il comando make si lancia il vero e proprio processo di
compilazione che trasforma i files di testo in files eseguibili.

5-make install
questo comando muove i files binari ottenuti nelle specifiche
posizioni all'interno del filesystem:
gli eseguibili in /bin, i file di confiruazione in /etc gli eseguibili
di root in /sbin e via dicendo.

Una volta lanciato make install, non è possibile rimuovere il
programma. Rimuovere il programma significa cancellare tutti i file
sparsi nel filesystem.
Molti programmi (ma non tutti) prevedono l'uso del comando "make
uninstall" che esegue tale operazione. Questo limite può essere
superato usando il programma
<a href="http://checkinstall.izto.org/" target="_blank">checkinstall</a>.

Il passaggio più difficile è sicuramente il ./configure. Non sarà
sufficiente passare alcune eventuali opzioni richieste nel file
INSTALL per completare la configurazione, dovremo prima installare
tutte le librerie necessarie al programma.
Oltre alle "normali" librerie sono quasi sempre richieste le librerie
di sviluppo ( libdev_NOME ) che sono il codice sorgente della libreria
stessa, richiesto dal compilatore per completare la compilazione del
programma.

Non c'è un processo automatico per questo passaggio e difficilmente si
ha una lista delle librerie necessarie.




FUORI DAGLI SCHEMI

gentoo

Portage è il sistema di gestione dei pacchetti tipico di Gentoo Linux.
La sua caratteristica principale è l'installazione delle applicazioni
a partire dalla compilazione del loro codice sorgente.
Portage scarica automaticametne il codice sorgente dai repository
gentoo e lo compila risolvendo automaticamente le dipendenze che
vengono a loro volta scaricate e compilate.
Questo metodo di installazione dei programmi permette di ottimizzare
al massimo il sistema.
Per contro, i tempi di installazione/compilazione di un programma,
sono molto superiori a quelli per l'installazione di pacchetti
precompilati.


autopackage
E'un gestore di pacchetti che ha le caratteristiche di:
1-essere indipendente dalla distribuzione
(permette di installare lo stesso pacchetto su molte distribuzioni);
2-può essere usato da linea di comando o con diverse interfaccie grafiche;
3-è un po' più lento degli altri gestori di pacchetti;
4-non controlla i pacchetti installati leggendo un database ma cerca i
files nel filesystem;
5-un file .package contiene tutti i file necessari al programma.


c'è un altro gestore di pacchetti che funziona più o meno come
autopackage ma che permette di installare lo stesso pacchetto su più
sistemi unix like. L'avevo letto su qualche rivista ma non riesco a
trovare l'articolo e non ricordo il nome.


AUTOINSTALLANTI
alcuni programmi vengono distribuiti in pacchetti autoinstallanti
contenenti tutte le dipendenze.
Solitamente questi programmi si installano per intero in una
directory. I loro files NON si spargono nel filesystem. Il gestore di
pacchetti della propria distribuzione non saprà della sua esistenza.
Questi pacchetti autoinstallanti hanno estenzione .run

ALTRI ?


Maggiori informazioni sulla lista linuxludus