Capitolo 6. Gli archivi FTP Debian

Indice

6.1. Quante distribuzioni di Debian ci sono?
6.2. Cosa sono tutti quei nomi come etch, lenny, ecc.?
6.2.1. Quali altri nomi in codice sono stati usati in passato?
6.2.2. Da dove derivano questi nomi in codice?
6.3. Cosa dire a proposito di "sid"?
6.4. Cosa contiene la directory stable?
6.5. Cosa contiene la distribuzione testing?
6.5.1. Cosa dire di "testing"? Come viene "congelata"?
6.6. Cosa contiene la distribuzione unstable?
6.7. Cosa sono tutte quelle directory negli archivi FTP Debian?
6.8. Cosa sono tutte quelle directory dentro a dists/stable/main?
6.9. Dove è il codice sorgente?
6.10. Cosa c'è nella directory pool?
6.11. Cos'è "incoming"?
6.12. Come impostare un proprio repository usabile con apt?

6.1. Quante distribuzioni di Debian ci sono?

Esistono tre distribuzioni principali: la distribuzione "stable" (stabile), la distribuzione "testing" (in test) e la distribuzione "unstable" (instabile). La distribuzione "testing" è a volte congelata, "frozen" (si veda Sezione 6.5.1, «Cosa dire di "testing"? Come viene "congelata"?»). Oltre a queste c'è la distribuzione "oldstable" (che è semplicemente quella che ha preceduto "stable") e quella "experimental".

Experimental è usata per i pacchetti che sono ancora in fase di sviluppo e con un alto rischio di danneggiamento del sistema. Viene usata da sviluppatori che vogliono studiare e testare software recentissimo. Gli utenti non dovrebbero usare pacchetti provenienti da lì perché questi possono essere pericolosi e creare danni anche per le persone più esperte.

Per un aiuto al momento di scegliere una distribuzione Debian, si veda Capitolo 3, Scegliere una distribuzione Debian.

6.2. Cosa sono tutti quei nomi come etch, lenny, ecc.?

Sono solo "nomi in codice". Quando una distribuzione Debian è in fase di sviluppo non ha un numero di versione ma un nome in codice. Lo scopo di questi nomi in codice è di rendere più semplice la creazione di mirror delle distribuzioni Debian (se una directory reale come unstable cambiasse improvvisamente il nome in stable, moltissima roba dovrebbe essere inutilmente scaricata di nuovo).

Attualmente, stable è un collegamento simbolico a buster (ovvero Debian GNU/Linux 10) e testing è un collegamento simbolico a bullseye. Questo significa che buster è la distribuzione stable attuale e che bullseye è la distribuzione testing attuale.

unstable è un collegamento simbolico permanente a sid, dato che sid è sempre la distribuzione unstable (si veda Sezione 6.3, «Cosa dire a proposito di "sid"?»).

6.2.1. Quali altri nomi in codice sono stati usati in passato?

Oltre a buster e bullseye, altri nomi in codice che sono già stati usati sono: buzz per il rilascio 1.1, rex per il rilascio 1.2, bo per il rilascio 1.3.x, hamm per il rilascio 2.0, slink per il rilascio 2.1, potato per il rilascio 2.2, woody per il rilascio 3.0, sarge per il rilascio 3.1, etch per il rilascio 4.0, lenny per il rilascio 5.0 e squeeze per il rilascio 6.0, wheezy per il rilascio 7, jessie per il rilascio 8 e stretch per il rilascio 9.

6.2.2. Da dove derivano questi nomi in codice?

Finora sono stati presi dai nomi dei personaggi del film "Toy Story" della Pixar.

  • buzz (Debian 1.1) was the spaceman Buzz Lightyear,

  • rex (Debian 1.2) was the tyrannosaurus,

  • bo (Debian 1.3) was Bo Peep, the girl who took care of the sheep,

  • hamm (Debian 2.0) was the piggy bank,

  • slink (Debian 2.1) was Slinky Dog, the toy dog,

  • potato (Debian 2.2) was, of course, Mr. Potato,

  • woody (Debian 3.0) was the cowboy,

  • sarge (Debian 3.1) was the sergeant of the Green Plastic Army Men,

  • etch (Debian 4.0) was the toy whiteboard (Etch-a-Sketch),

  • lenny (Debian 5.0) was the toy binoculars,

  • squeeze (Debian 6) was the name of the three-eyed aliens,

  • wheezy (Debian 7) era il pinguino di gomma con un farfallino rosso,

  • jessie (Debian 8) era la cowgirl che faceva lo yodel,

  • stretch (Debian 9) era la piovra giocattolo di gomma con ventose sulle sue otto lunghe braccia,

  • buster (Debian 10) era il cagnolino di Andy,

  • bullseye (Debian 11) era il cavallo di legno di Woody,

  • bookworm (Debian 12) era un verme giocattolo verde con una torcia incorporata che amava leggere libri,

  • sid era il bambino cattivo della casa accanto che distruggeva tutti i giocattoli.

La decisione di usare i nomi in Toy Story è stata presa da Bruce Perens che, all'epoca, era il Debian Project Leader e stava contemporaneamente lavorando alla Pixar, la compagnia che ha prodotto i film.

6.3. Cosa dire a proposito di "sid"?

sid o unstable è il posto in cui la maggior parte dei pacchetti viene inizialmente caricata. Non sarà mai direttamente rilasciata, perché i pacchetti che devono essere rilasciati devono prima essere inclusi in testing, per poter essere rilasciati in stable più tardi. sid contiene pacchetti sia per architetture rilasciate che non.

Anche il nome "sid" proviene dal film d'animazione "Toy Story": Sid era il bambino della porta accanto che distruggeva i giocattoli :-)

[2]

6.4. Cosa contiene la directory stable?

  • stable/main/: questa directory contiene i pacchetti che costituiscono formalmente il rilascio più recente del sistema Debian GNU/Linux.

    Tutti questi pacchetti sono conformi alle DFSG - Linee guida Debian per il software libero e sono tutti liberamente utilizzabili e distribuibili.

  • stable/non-free/: questa directory contiene i pacchetti la cui distribuzione è limitata in modo tale da richiedere che i distributori prendano attentamente in considerazione i loro requisiti specifici relativi al copyright.

    Per esempio, alcuni pacchetti hanno licenze che ne vietano la distribuzione commerciale. Altri possono essere redistribuiti, ma sono di fatto shareware e non software libero. Le licenze di ognuno di questi pacchetti devono essere studiate e possibilmente negoziate prima che tali pacchetti possano essere inclusi in qualsiasi redistribuzione (per esempio, in un CD-ROM).

  • stable/contrib/: questa directory contiene i pacchetti che sono di per sé liberi in base alle DFSG e liberamente distribuibili, ma dipendono in qualche modo da un pacchetto che non è liberamente distribuibile ed è quindi disponibile solo nella sezione non-free.

6.5. Cosa contiene la distribuzione testing?

I pacchetti vengono inseriti nella directory "testing" dopo aver subito un periodo di test in unstable.

Devono essere sincronizzati in tutte le architetture per le quali sono stati compilati e non devono avere dipendenze tali da renderli non installabili; devono inoltre avere meno bug critici per il rilascio delle versioni attualmente in unstable. In questo modo, si auspica che «testing» sia sempre vicina ad essere una candidata al rilascio.

Maggiori informazioni sullo stato di "testing" in generale e dei singoli pacchetti sono disponibili su https://www.debian.org/devel/testing.

6.5.1. Cosa dire di "testing"? Come viene "congelata"?

Quando la distribuzione «testing» è abbastanza matura, il responsabile del rilascio inizia a «congelarla». I normali ritardi di diffusione vengono aumentati per assicurare che entri da «unstable» in «testing» il minor numero di bug possibile.

Dopo un po', la distribuzione "testing" diventa realmente "congelata" (frozen). Ciò significa che tutti i nuovi pacchetti da mettere in "testing" sono trattenuti, a meno che non contengano le soluzioni a bug critici per il rilascio. La distribuzione "testing" può anche rimanere in questo stato di "surgelamento" durante i cosiddetti "cicli di test", quando il rilascio è imminente.

Quando un rilascio diventa "congelato", "unstable" tende a congelarsi parzialmente anch'essa. Ciò avviene perché gli sviluppatori sono restii a caricare software radicalmente nuovo in unstable, nel caso che il software congelato in testing necessiti di aggiornamenti minori e per risolvere bug critici per il rilascio che impediscono a testing di diventare "stable".

Viene tenuto un registro dei bug nella distribuzione "testing" che possono impedire ad un pacchetto di essere rilasciato, o dei bug che possono impedire l'intero rilascio. Per i dettagli si vedano le informazioni sull'attuale rilascio testing.

Una volta che il numero dei bug si abbassa sotto i valori massimi accettabili, la distribuzione "congelata" viene dichiarata "stable" e rilasciata con un proprio numero di versione.

Il conteggio più importante per i bug è quello dei bug critici per il rilascio ("Release Critical"), che può essere seguito nella Pagina dello stato dei bug critici per il rilascio. Un comune obiettivo di rilascio è NoRCBugs che significa che la distribuzione non dovrebbe avere alcun bug di gravità critica, grave o seria. L'elenco completo dei problemi considerati critici può essere trovato nel documento della politica RC.

Ad ogni nuovo rilascio, la precedente distribuzione "stable" diventa obsoleta e viene spostata in archivio. Per maggiori informazioni si veda l'archivio Debian.

6.6. Cosa contiene la distribuzione unstable?

La directory "unstable" contiene un'istantanea del sistema attualmente in via di sviluppo. Gli utenti sono i benvenuti ad usare e testare questi pacchetti, ma sono avvisati riguardo il loro stato di preparazione. Il vantaggio di usare la distribuzione "unstable" è che si è sempre aggiornati con la più recente produzione di software in GNU/Linux, ma se si rompe, i cocci sono vostri :-)

Anche in "unstable" ci sono le sottodirectory main, contrib e non-free, separate con lo stesso criterio adottato in "stable".

6.7. Cosa sono tutte quelle directory negli archivi FTP Debian?

Il software che è stato impacchettato per Debian GNU/Linux è disponibile in uno dei diversi alberi di directory in ogni sito mirror Debian.

La directory dists è l'abbreviazione di "distribuzioni" ed è il percorso canonico per accedere ai rilasci (e pre-rilasci) Debian attualmente disponibili.

La directory pool contiene i pacchetti effettivi, si veda Sezione 6.10, «Cosa c'è nella directory pool.

Ci sono queste directory aggiuntive:

/tools/:

utilità DOS per creare dischi di avvio, partizionare il proprio disco, comprimere/decomprimere file e avviare Linux.

/doc/:

la documentazione di base di Debian, come queste FAQ, le istruzioni del sistema di segnalazione dei bug, ecc.

/indices/:

vari indici del sito (il file Maintainers e i file override).

/project/:

per la maggior parte materiale solo per gli sviluppatori e file vari.

6.8. Cosa sono tutte quelle directory dentro a dists/stable/main?

Within each of the major directory trees[3], there are three sets of subdirectories containing index files.

C'è un gruppo di sottodirectory binary-qualcosa che contengono i file indice per i pacchetti binari di ciascuna architettura disponibile, per esempio binary-i386 per i pacchetti che si possono eseguire su macchine PC Intel x86 o binary-sparc per i pacchetti da eseguire su SPARCStation Sun.

L'elenco completo delle architetture disponibili per ciascun rilascio è disponibile alla pagina web dei rilasci. Per il rilascio attuale, si veda Sezione 4.1, «Su quali architetture o sistemi hardware funziona Debian?».

I file indice in binary-* si chiamano Packages(.gz, .bz2) e contengono un riassunto di ciascun pacchetto binario che è incluso in quella distribuzione. I pacchetti binari effettivi risiedono nella directory pool di livello più alto.

Inoltre esiste una sottodirectory chiamata source/ che contiene i file indice dei pacchetti sorgenti inclusi nella distribuzione. Il file indice si chiama Sources(.gz, .bz2).

Da ultimo, ma non per importanza, c'è un gruppo di sottodirectory pensate per i file indice del sistema di installazione: sono in debian-installer/binary-architettura.

6.9. Dove è il codice sorgente?

Viene fornito il codice sorgente per tutto ciò che è nel sistema Debian. Inoltre, i termini di licenza della maggior parte dei programmi richiedono che il codice venga distribuito insieme ai programmi o che un'offerta di fornire il codice sorgente li accompagni.

Il codice sorgente viene distribuito nella directory pool (si veda Sezione 6.10, «Cosa c'è nella directory pool) insieme con tutte le directory dei binari specifiche per le architetture. Per ottenere il codice sorgente senza la necessità di avere familiarità con la struttura dell'archivio FTP Debian, si provi un comando come apt-get source nomedelmiopacchetto.

A causa di restrizioni nelle licenze, il codice sorgente può essere o meno disponibile per i pacchetti nelle aree «contrib» e «non-free», che non fanno formalmente parte del sistema Debian. In alcuni casi possono essere distribuiti solo dei «frammenti binari» («binary blob») senza sorgenti (vedere ad esempio firmware-misc-nonfree); in altri casi la licenza proibisce la distribuzione di binari precompilati, ma permette quella di pacchetti di codice sorgente che l'utente può compilare localmente (vedere broadcom-sta-dkms).

6.10. Cosa c'è nella directory pool?

I pacchetti vengono tenuti in un grosso "pool", strutturato in base ai nomi dei pacchetti sorgente. Per rendere il tutto usabile, il pool è suddiviso in sezioni ("main", "contrib" e "non-free") e in base alla prima lettera del nome dei pacchetti sorgente. Queste directory contengono diversi file: i pacchetti binari per ciascuna architettura e i pacchetti sorgente da cui sono stati generati i pacchetti binari.

Si può scoprire dove ciascun pacchetto è situato eseguendo un comando come apt-cache showsrc nomedelmiopacchetto e guardando la riga "Directory:". Per esempio, i pacchetti apache sono immagazzinati in pool/main/a/apache/.

Inoltre, poiché ci sono così tanti pacchetti lib*, questi vengono trattati in maniera particolare: per esempio, i pacchetti libpaper sono immagazzinati in pool/main/libp/libpaper/.

[4]

6.11. Cos'è "incoming"?

Dopo che uno sviluppatore carica un pacchetto, questo resta per un po' nella directory "incoming" prima che ne venga controllata la genuinità e che venga accettato nell'archivio.

Normalmente nessuno dovrebbe installare cose da questo posto. Comunque, per alcuni rari casi di emergenza, la directory incoming è disponibile su https://incoming.debian.org/. Si possono scaricare i pacchetti manualmente, controllare la firma GPG e i codici di controllo MD5 nei file .changes e .dsc, e poi installarli.

6.12. Come impostare un proprio repository usabile con apt?

Se si sono compilati alcuni pacchetti Debian privati che si desiderano installare usando gli strumenti standard per la gestione dei pacchetti Debian, si può impostare un proprio archivio di pacchetti usabile con apt. Questo è utile anche se si desiderano condividere i propri pacchetti Debian quando questi non sono distribuiti dal progetto Debian. Le istruzioni per farlo sono contenute nel Wiki Debian.



[2] When the present-day sid did not exist, the FTP site organization had one major flaw: there was an assumption that when an architecture is created in the current unstable, it will be released when that distribution becomes the new stable. For many architectures that isn't the case, with the result that those directories had to be moved at release time. This was impractical because the move would chew up lots of bandwidth.

The archive administrators worked around this problem for several years by placing binaries for unreleased architectures in a special directory called "sid". For those architectures not yet released, the first time they were released there was a link from the current stable to sid, and from then on they were created inside the unstable tree as normal. This layout was somewhat confusing to users.

With the advent of package pools (see Sezione 6.10, «Cosa c'è nella directory pool), binary packages began to be stored in a canonical location in the pool, regardless of the distribution, so releasing a distribution no longer causes large bandwidth consumption on the mirrors (there is, however, a lot of gradual bandwidth consumption throughout the development process).

[3] dists/stable/main, dists/stable/contrib, dists/stable/non-free, and dists/unstable/main/, etc.

[4] Historically, packages were kept in the subdirectory of dists corresponding to which distribution contained them. This turned out to cause various problems, such as large bandwidth consumption on mirrors when major changes were made. This was fixed with the introduction of the package pool.

The dists directories are still used for the index files used by programs like apt.