2. HOWTO

Nota Bene!

Negli esempi:

RELEASENAME

Va sostituito con una delle seguenti stringhe:

  • stable

  • testing

  • unstable

Si ricordi che gli aggiornamenti di sicurezza sono disponibili solo per stable e testing

DEBIANMIRROR

Va sostituito con il nome del mirror Debian più veloce per Caio (p.e. ftp.it.debian.org).

In questo esempio Tizio è un utente Debian che vorrebbe aggiornare la sua distribuzione ma non ha un accesso ad Internet (oppure ha un accesso lento e/o costoso). Caio invece è un suo amico che ha un accesso ad Internet veloce e «flat», ma utilizza un'altra distribuzione Linux o un altro sistema operativo (l'unico programma che dovrà utilizzare è GNU Wget).

Tizio non vuole abusare della gentilezza di Caio (e dalla banda dei mirror) facendogli scaricare le immagini complete dei CD contenenti dei programmi che non userà mai.

Tizio dovrà dare i comandi come root.

Se Tizio non ha un accesso ad Internet si eseguano tutti i passi elencati, se invece ha un accesso ad Internet lento si passi direttamente al punto 3.

  1. Caio scarichi i file con l'elenco dei pacchetti:

    caio@quick:~$ mkdir per-tizio-1 ; cd per-tizio-1
    
    caio@quick:~/per-tizio-1$ wget -O main.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/main/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget -O contrib.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/contrib/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget -O non-free.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/non-free/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget http://DEBIANMIRROR/debian/dists/RELEASENAME/Release
    
    caio@quick:~/per-tizio-1$ wget -O security.main.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/main/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget -O security.contrib.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/contrib/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget -O security.non-free.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/non-free/binary-i386/Packages.gz
    
    caio@quick:~/per-tizio-1$ wget -O security.Release http://security.debian.org/dists/RELEASENAME/updates/Release
    
    

    e li dia a Tizio

  2. Tizio a casa decomprima i file *Packages.gz e copi tutti i file in /var/lib/apt/lists/ con i nomi giusti:

    root@slow:~# gunzip *.Packages.gz
    
    root@slow:~# cp main.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_main_binary-i386_Packages
    
    root@slow:~# cp contrib.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_contrib_binary-i386_Packages
    
    root@slow:~# cp non-free.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_non-free_binary-i386_Packages
    
    root@slow:~# cp Release /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_Release
    
    root@slow:~# cp security.main.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_main_binary-i386_Packages
    
    root@slow:~# cp security.contrib.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_contrib_binary-i386_Packages
    
    root@slow:~# cp security.non-free.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_non-free_binary-i386_Packages
    
    root@slow:~# cp security.Release /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_Release
    

  3. Tizio aggiunga (se non le ha già) le seguenti righe al file /etc/apt/sources.list assicurandosi che siano poste dopo le eventuali righe relative a CD-ROM in suo possesso:

    deb http://DEBIANMIRROR/debian RELEASENAME main contrib non-free
    deb http://security.debian.org/ RELEASENAME/updates main contrib non-free
    

    quindi lanci il comando:

    root@slow:~# apt-get update
    
    root@slow:~# apt-get -y --print-uris dist-upgrade > elenco_pacchetti.txt
    

    Se lo scopo fosse installare/aggiornare dei pacchetti sostituire: apt-get -y --print-uris dist-upgrade con: apt-get -y --print-uris install NOMI_DEI_PACCHETTI

  4. Il file elenco_pacchetti.txt conterrà alcuni messaggi di apt (riportati nell'esempio solo parzialmente), e le URI di tutti i pacchetti da installare:

    Lettura della lista dei pacchetti in corso...
    Generazione dell'albero delle dipendenze in corso...
    I seguenti pacchetti NUOVI (NEW) saranno installati:
    apt-index-watcher [...]
    I seguenti pacchetti sono stati mantenuti alla versione attuale:
    gdk-imlib1 [...]
    I seguenti pacchetti saranno aggiornati:
    alsa-base [...]
    173 aggiornati, 4 installati, e 1 non aggiornati.
    È necessario prendere 299MB/299MB di archivi.
    Dopo l'estrazione, verranno occupati 11,9MB di spazio su disco.
    'cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot i386 Binary-2 (20060918)]/pool/main/r/root-tail/root-tail_1.2-2_i386.deb' root-tail_1.2-2_i386.deb 20952 8403dcbcf6ccdd43decf44ffe13
    1b5b9
    'http://ftp.it.debian.org/debian/pool/main/a/alsa-driver/alsa-base_1.0.12-1_all.deb' alsa-base_1.0.12-1_all.deb 166330 d07527f4d209e4887d0bcb907d135891
    [...]

    il formato delle righe relative ai pacchetti è il seguente: 'URI' NOME_FILE DIMENSIONE_FILE MD5_HASH_FILE

    Tizio dovrà eliminare le righe con i messaggi di apt, quelle relative ai pacchetti che dovesse già avere su CD-ROM e conservare solo le URI dei pacchetti da scaricare:

    root@slow:~# cat elenco_pacchetti.txt | egrep "^'http:" | sed "s/'//" | sed "s/'.*//" > elenco_url.txt
    
  5. Tizio consegna elenco_url.txt a Caio che eseguirà:

    caio@quick:~$ mkdir per-tizio-2 ; cd per-tizio-2
    
    caio@quick:~/per-tizio-2$ wget -i elenco_url.txt
    

    e infine copierà su uno o più CD i pacchetti.

  6. Tizio riceve da Caio il/i CD. Non sono CD Debian quindi non li potrà utilizzare direttamente, ma gli basterà copiare i pacchetti in /var/cache/apt/archives/ per poterli installare direttamente (o per crearsi un mirror locale personale con apt-move).

Importante

Il trucchetto di copiare manualmente i file Packages in /var/lib/apt/lists/ funziona con apt-get (apt-get update dà un messaggio di errore ma aggiorna l'elenco dei pacchetti) ma non con dselect (il messaggio di errore dell'update è identico ma l'elenco dei pacchetti non viene aggiornato), non so perché.

Aggiornare Debian senza Internet HOWTO

Versione 1.01 ~ 15 novembre 2006