I repository ed il loro utilizzo: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (→‎Introduzione: corretto link, tolti <br>)
Riga 1: Riga 1:
==Stable, Testing e Unstable==
==Introduzione==
Il repository è a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema debian i repository utilizzati vengono indicati nel file <tt>/etc/apt/sources.list</tt>.


Debian ha un sistema di sviluppo particolare quanto unico: � infatti la sola ad avere tre rami diversi divisi in base alle caratteristiche di stabilit�: Stable, Testing, Unstable ed un repository Experimental.
===La Struttura===
Un repository è suddivisibile, grossomodo, in due sezioni:
* '''dists''' in questo ramo sono contenuti i file di controllo, che permettono il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i file che descrivono i pacchetti presenti nell'archivio (divisi per la release di appartenenza);
* '''doc''' raccoglie la documentazione di base per Debian (segnalazioni di Bug, Faq, il Contratto Sociale ed altro)
* '''indices''' contiene l'indice di tutti i file contenuti in tutti i pacchetti. Queste informazioni sono usate da [[Apt-file: ricerca all'interno dei pacchetti|<tt>apt-file</tt>]].
* '''non-US''' a causa di problemi legali dovuti al divieto di esportazione di matariale per la difesa (tra cui materiale crittografici, utilizzati anche in PGP e SSH). Per ovviare a questi problemi, i pacchetti sono stati posti in una sezione a parte, la cui distribuzione è legata a server non Statunitensi.
* '''pool''' questo è l'archivio vero e proprio, dove sono contenuti i pacchetti, raggruppati per lettera iniziale;
* '''project''' contiene materiale per sviluppatori. Degne di nota la direcotory experimetal, che contiene i pacchetti in fase di sviluppo e perfezionamento;<br/>
* '''tools''' contiene degli strumenti Dos per la creazione di dischetti di boot, partizionamento e lancio di Linux.


==Stable ==
===La Suddivisione del repository===
Stable � la release '''stabile''' di Debian. Nello sviluppo Debian, una release viene dichiarata stabile quando i bug ad essa associati prima del rilascio sono quasi inesistenti.
Navigando un po' tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in '''main''', '''contrib''', '''non-free''' e '''non-US''', nel modo seguente:<br/>
* '''main''' è la sezione principale, che contiene il 90% dei pacchetti presenti in Debian<br/>
Una volta rilasciata, viene aperto un repository speciale: '''security''', che ha lo scopo di raccogliere gli aggiornamenti dei pacchetti presenti nella Stable corrente, per quanto riguarda il fattore sicurezza. Questi aggiornamenti, per�, non riguardano la versione del pacchetto: infatti non ci saranno nuove versioni dei programmi disponibili, ma solo aggiornamenti di sicurezza (quindi applicazioni di patch, in linea di massima).
* '''contrib''' raccoglie i pacchetti coerenti con la DFSG5.6, ma che dipendono da pacchetti che non la rispettano<br/>
* '''non-free''' contiene dei pacchetti che possiedono delle limitazioni nella distribuzione (ad esempio perchè non utilizzabili in ambito commerciale o perchè dipendenti da applicazioni o pacchetti che non rispettano la Debian Free Software Guideline)<br/>


Anche se la cosa pu� sembrare inutile, non lo �: supponiamo di avere un sistema produttivo, basato su l'ultima Stable... L'aggiornamento di un programma alla versione successiva potrebbe comportare un po' di problemi: <br/>
==Sources.list==
* la struttura e/o la sintassi dei file di configurazione potrebbe subire dei cambiamenti, creando delle incompatibilit� con le configurazioni valide per versioni precedenti;<br/>
===Il ruolo fondamentale===
* potrebbero essere presenti dei cambiamenti sostanziali alla struttura del pacchetto o del programma;
Il file '''/etc/apt/sources.list''' è forse il più importante file di configurazione del sistema di gestione dei pacchetti Debian. Esso, infatti, contiene l'elenco e gli indirizzi dei repository a cui apt accede.
* potrebbero presentarsi dei bug non segnalati, a causa della 'giovane et�' del pacchetto. <br/>


Anche se i punti sopra citati sembrano banali, non � cos�: una macchina di produzione deve essere solida e stabile, e visto che molto spesso � una ottima pratica avere in cron le operazioni di aggiornamento, la probabilit� che un aggiornamento automatico possa creare situazioni di instabilit� o non funzionamento di un servizio non pu� essere accettato.
===Ordine di Inserimento===
Questo � un motivo per cui, nella release Stable, ci sono solo aggiornamenti riguardantii bugfix.
È importante inserire i repository con un giusto ordine: i primi in elenco, infatti, sono i più importanti (o favoriti). Per migliorare le performance, è consigliabile ordinarli per velocità (Es. prima il cdrom, poi la rete locale, poi internet, ...).
===I Nomi delle Release===
Una domanda diffusa tra gli utenti alle prime armi con Debian riguarda i nomi delle release; a prima vista, infatti, possono sembrare strani, ma la spiegazione � molto semplice: sono tutti nomi dei personaggi del film [http://www.pixar.com/feature/toystory/toystory.html ToyStory].<br>
Questa simpatica tradizione � stata iniziata da [http://perens.com/ Bruce Perens] con il rilascio di Debian 1.1 nel 1996. Perens, all' epoca [http://www.debian.org/devel/leader Debian Project Leader], lavorava anche per [http://www.pixar.com Pixar].
Ecco l'elenco dei nomi delle Stable fino ad ora rilasciate:


<br/>
===Sintassi===
<div align="center">
Ogni riga che descrive un repository ha una ben determinata sintassi:
<table border="1" cellpadding="3" cellspacing="0">
<pre>
<tr><td align="center">Versione</td>
deb uri distribution [component..]
<td align="center">Nome</td>
</pre>
<td align="center">Anno</td>
<td align="center">Significato</td>
</tr>
<tr><td align="center">1.1</td>
<td align="center">Buzz</td>
<td align="center">1996/06/17</td>
<td align="center">(Buzz Lightyear) l'astronauta</td>
</tr>
<tr><td align="center">1.2</td>
<td align="center">Rex</td>
<td align="center">1996/12/12</td>
<td align="center">Il tirannosauro</td>
</tr>
<tr><td align="center">1.3</td>
<td align="center">Bo</td>
<td align="center">1997/06/05</td>
<td align="center">(Bo Peep) la bambina che si prese cura della
pecorella</td>
</tr>
<tr><td align="center">2.0</td>
<td align="center">Hamm</td>
<td align="center">1998/07/23</td>
<td align="center">il porcellino salvadanaio</td>
</tr>
<tr><td align="center">2.1</td>
<td align="center">Slink</td>
<td align="center">1999/03/09</td>
<td align="center">(Slinky Dog) il cane giocattolo</td>
</tr>
<tr><td align="center">2.2</td>
<td align="center">Potato</td>
<td align="center">2000/08/15</td>
<td align="center">Mr. Potato</td>
</tr>
<tr><td align="center">3.0</td>
<td align="center">Woody</td>
<td align="center">2002/07/19</td>
<td align="center">il cowboy</td>
</tr>
<tr><td align="center">3.1</td>
<td align="center">Sarge</td>
<td align="center">testing</td>
<td align="center">il
"leader of The Green Plastic Army Men"</td>
</tr>
<tr><td align="center">??</td>
<td align="center">Etch</td>
<td align="center">testing</td>
<td align="center">(Etch-a-Sketch) la lavagna</td>
</tr>
<tr><td align="center">N.D.</td>
<td align="center">Sid</td>
<td align="center">unstable</td>
<td align="center">il bambino della porta accanto che rompeva i giocattoli.</td>
</tr>
</table>
</div>


==Testing ==
Analizziamo i singoli componenti:
La release Testing � quella pi� utilizzata in ambito Desktop, visto che rappresenta il miglior compromesso tra stabilit� � aggiornamento di pacchetti.  
* '''deb o deb-src''' serve ad indicare se il repository indicato contiene pacchetti binari o pacchetti sorgenti (se li contiene entrambi, è necessario specificarlo usando due righe diverse).<br/>
** '''uri''' indica l'indirizzo a cui è possibile trovare il repository; è possibile specificare uno schema da utilizzare per il download:<br/>
** '''file''' permette di inserire un repository presente sull'Hard Disk del computer;<br/>
** '''cdrom''' permette di inserire un repository persnte su un cd-rom;<br/>
** '''http''' permette di accedere ad un repository tramite il protocollo http (se è impostata una variabile di ambiente '''http_proxy''' col formato '''http://server:port/''' verranno usate queste opzioni per accedere al repository; in caso di necessità di autenticazione, è possibile specificare l'inidirizzo del proxy, nella variabile d'ambiente '''http_proxy''', nel seguente modo: '''http://user:pass@server:port/''', anche se risulta non essere un modo sicuro di autenticazione);<br/>
** '''ftp''' permette di eccedere ad un repository tramite il protocollo ftp; è possibile specificare un proxy nell stesso modo indicato per http al punto precedente, sostuendo alla variabile '''http_proxy''' '''ftp_proxy''';<br/>
** '''copy''' è idendico a file, ma i file utilizzati vengono salvati nella cache di apt; utile nel caso di supporti removibili quali Usb-drive, Floppy, Zip, ...;<br/>
** '''rsh, ssh''' permette di accedere ad un repository tramite il protocollo ssh. Non è possibile, però, effettuare alcuna autenticazione interativa, ma solo tramite lo scambio di chiavi RSA.<br/>
* '''distribution''' indica la distribuzione (o release) utilizzata... è possibile usare il nome in codice (woody, sarge, sid) o il nome generico (stable, testing, unstable);<br/>
*'''component''' indica la sezione (non-free, main, contrib...) del repository da inserire; sono possibili scelte multiple.<br/>


===Il percorso dei pacchetti===
===Alcuni esempi===
I pacchetti, prima di entrare nella release di Testing compiono un tragitto per raggiungere un buon grado di maturit�. Quando vengono creati, possono essere inseriti in Experimental, se hanno bisogno di test approfonditi e non sono considerati completamente stabili dall'autore, oppure possono essere inseriti in Unstable, pronti per essere testati dagli sviluppatori4.7. Il pacchetto viene incluso in Testing (sostituendo eventualmente quello pi� vecchio) se: <br/>
Non c'è niente di meglio, per capire la sintassi del file sources.list, si un po' di esempi:
* Deve essere stato in unstable per 10, 5 o 2 giorni, in funzione dell'urgenza dell'upload; <br/>
<pre>
* Deve essere stato compilato e deve essere aggiornato su tutte le architetture su cui sia stato compilato in unstable; <br/>
deb http://ftp.it.debian.org/debian/ stable main non-free contrib
* Deve avere meno bug release-critical, o lo stesso numero, della versione corrente in "testing" (si veda sotto per maggiori informazioni); <br/>
deb-src http://ftp.it.debian.org/debian/ stable main non-free contrib
* Tutte le sue dipendenze devono o essere soddisfatte dai pacchetti gi� in "testing", o essere soddisfatte dall'insieme di pacchetti che verranno installati nel contempo; <br/>
</pre>
* L'operazione di installazione del pacchetto in "testing" non dovr� danneggiare alcun pacchetto che sia gi� in "testing". <br/>
I repository ufficiali (binari e sorgenti) presi da un mirror italiano.


===Da Testing a Stable===
<pre>
Quando la versione di Testing raggiunge un buon grado di maturit�, avviene il passaggio da Testing a Stable. Prima di tutto viene dicharata una situazione di freeze, in cui non � pi� possibile inserire nuove versioni di un pacchetto (a meno che non sia fondamentale per la correzione di qualche bug) ma solo correggere i bug riscontrati. Quando la versione di Testing verr� valutata come sufficientemente stabile, verr� rilasciata come Stable. Dopo il rilascio della Stable, la nuova Testing verr� ricreata secondo le normali regole a partire da Unstable.
deb file:/var/cache/apt-build/repository apt-build main
</pre>
Il repository di apt-build (Rif. 7.1 Pag. [*])


==Unstable==
<pre>
Unstable � la distribuzione per gli sviluppatori, come indicato sul sito ufficiale Debian, e l'uso di questa release in ambito lavorativo (o comunque produttivo) pu� portare a degli inconvenienti o instabilit�. � possibile, infatti, che a causa di qualche aggiornamento vengano introdotti dei bug che possano compromettere il normale funzionamento di qualche applicazione.
deb http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
</pre>
I repository ufficiali del repository non-US; interessante l'indicazione della directory non-US presente nella directory dists/sid/


E' inoltre possibile che, a causa dell'aggiornamento di alcune librerie o set di programmi, si possano creare delle situazioni di dipendenze non risolte che potrebbero rendere impossibile l'aggiornamento e/o l'instalazione di alcuni pacchetti. Il mio consiglio � di non utilizzarla, a meno di non avere una certa dimestichezza e familiarit� con il sistema Debian.<br>
<pre>
deb http://repos.debianizzati.org ./
</pre>
Un repository 'artigianale' accessibile tramite un webserver


E' divertente notare che la versione '''unstable''' di Debian mantiene sempre il medesimo nome e cio� Sid, il ragazzaccio!
<pre>
 
deb file:/home/maxer/repos ./
==Experimental==
</pre>
Experimental � un repository (e non una release) che contiene i pacchetti che in fase di testing da parte dei Debian Developer e che necessitano di lavoro prima di essere pronti per entrare in Unstable.
Un repository situato nella home dell'utente maxer, creato con dpkg-scanpackages.




---- [[User:MaXeR|MaXeR]]
---- [[User:MaXeR|MaXeR]]
[[Categoria:Apt]]
[[Categoria:Repository]]

Versione delle 12:51, 13 apr 2006

Introduzione

Il repository è a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema debian i repository utilizzati vengono indicati nel file /etc/apt/sources.list.

La Struttura

Un repository è suddivisibile, grossomodo, in due sezioni:

  • dists in questo ramo sono contenuti i file di controllo, che permettono il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i file che descrivono i pacchetti presenti nell'archivio (divisi per la release di appartenenza);
  • doc raccoglie la documentazione di base per Debian (segnalazioni di Bug, Faq, il Contratto Sociale ed altro)
  • indices contiene l'indice di tutti i file contenuti in tutti i pacchetti. Queste informazioni sono usate da apt-file.
  • non-US a causa di problemi legali dovuti al divieto di esportazione di matariale per la difesa (tra cui materiale crittografici, utilizzati anche in PGP e SSH). Per ovviare a questi problemi, i pacchetti sono stati posti in una sezione a parte, la cui distribuzione è legata a server non Statunitensi.
  • pool questo è l'archivio vero e proprio, dove sono contenuti i pacchetti, raggruppati per lettera iniziale;
  • project contiene materiale per sviluppatori. Degne di nota la direcotory experimetal, che contiene i pacchetti in fase di sviluppo e perfezionamento;
  • tools contiene degli strumenti Dos per la creazione di dischetti di boot, partizionamento e lancio di Linux.

La Suddivisione del repository

Navigando un po' tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in main, contrib, non-free e non-US, nel modo seguente:

  • main è la sezione principale, che contiene il 90% dei pacchetti presenti in Debian
  • contrib raccoglie i pacchetti coerenti con la DFSG5.6, ma che dipendono da pacchetti che non la rispettano
  • non-free contiene dei pacchetti che possiedono delle limitazioni nella distribuzione (ad esempio perchè non utilizzabili in ambito commerciale o perchè dipendenti da applicazioni o pacchetti che non rispettano la Debian Free Software Guideline)

Sources.list

Il ruolo fondamentale

Il file /etc/apt/sources.list è forse il più importante file di configurazione del sistema di gestione dei pacchetti Debian. Esso, infatti, contiene l'elenco e gli indirizzi dei repository a cui apt accede.

Ordine di Inserimento

È importante inserire i repository con un giusto ordine: i primi in elenco, infatti, sono i più importanti (o favoriti). Per migliorare le performance, è consigliabile ordinarli per velocità (Es. prima il cdrom, poi la rete locale, poi internet, ...).

Sintassi

Ogni riga che descrive un repository ha una ben determinata sintassi:

deb uri distribution [component..]

Analizziamo i singoli componenti:

  • deb o deb-src serve ad indicare se il repository indicato contiene pacchetti binari o pacchetti sorgenti (se li contiene entrambi, è necessario specificarlo usando due righe diverse).
    • uri indica l'indirizzo a cui è possibile trovare il repository; è possibile specificare uno schema da utilizzare per il download:
    • file permette di inserire un repository presente sull'Hard Disk del computer;
    • cdrom permette di inserire un repository persnte su un cd-rom;
    • http permette di accedere ad un repository tramite il protocollo http (se è impostata una variabile di ambiente http_proxy col formato http://server:port/ verranno usate queste opzioni per accedere al repository; in caso di necessità di autenticazione, è possibile specificare l'inidirizzo del proxy, nella variabile d'ambiente http_proxy, nel seguente modo: http://user:pass@server:port/, anche se risulta non essere un modo sicuro di autenticazione);
    • ftp permette di eccedere ad un repository tramite il protocollo ftp; è possibile specificare un proxy nell stesso modo indicato per http al punto precedente, sostuendo alla variabile http_proxy ftp_proxy;
    • copy è idendico a file, ma i file utilizzati vengono salvati nella cache di apt; utile nel caso di supporti removibili quali Usb-drive, Floppy, Zip, ...;
    • rsh, ssh permette di accedere ad un repository tramite il protocollo ssh. Non è possibile, però, effettuare alcuna autenticazione interativa, ma solo tramite lo scambio di chiavi RSA.
  • distribution indica la distribuzione (o release) utilizzata... è possibile usare il nome in codice (woody, sarge, sid) o il nome generico (stable, testing, unstable);
  • component indica la sezione (non-free, main, contrib...) del repository da inserire; sono possibili scelte multiple.

Alcuni esempi

Non c'è niente di meglio, per capire la sintassi del file sources.list, si un po' di esempi:

deb http://ftp.it.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.it.debian.org/debian/ stable main non-free contrib

I repository ufficiali (binari e sorgenti) presi da un mirror italiano.

deb file:/var/cache/apt-build/repository apt-build main

Il repository di apt-build (Rif. 7.1 Pag. [*])

deb http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free

I repository ufficiali del repository non-US; interessante l'indicazione della directory non-US presente nella directory dists/sid/

deb http://repos.debianizzati.org ./

Un repository 'artigianale' accessibile tramite un webserver

deb file:/home/maxer/repos ./

Un repository situato nella home dell'utente maxer, creato con dpkg-scanpackages.



MaXeR