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.
Caio scarichi i file con l'elenco dei pacchetti:
caio@quick:~$mkdir per-tizio-1 ; cd per-tizio-1caio@quick:~/per-tizio-1$wget -O main.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/main/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget -O contrib.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/contrib/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget -O non-free.Packages.gz http://DEBIANMIRROR/debian/dists/RELEASENAME/non-free/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget http://DEBIANMIRROR/debian/dists/RELEASENAME/Releasecaio@quick:~/per-tizio-1$wget -O security.main.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/main/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget -O security.contrib.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/contrib/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget -O security.non-free.Packages.gz http://security.debian.org/dists/RELEASENAME/updates/non-free/binary-i386/Packages.gzcaio@quick:~/per-tizio-1$wget -O security.Release http://security.debian.org/dists/RELEASENAME/updates/Release
e li dia a Tizio
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.gzroot@slow:~#cp main.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_main_binary-i386_Packagesroot@slow:~#cp contrib.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_contrib_binary-i386_Packagesroot@slow:~#cp non-free.Packages /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_non-free_binary-i386_Packagesroot@slow:~#cp Release /var/lib/apt/lists/DEBIANMIRROR_debian_dists_RELEASENAME_Releaseroot@slow:~#cp security.main.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_main_binary-i386_Packagesroot@slow:~#cp security.contrib.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_contrib_binary-i386_Packagesroot@slow:~#cp security.non-free.Packages /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_non-free_binary-i386_Packagesroot@slow:~#cp security.Release /var/lib/apt/lists/security.debian.org_dists_RELEASENAME_updates_Release
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/debianRELEASENAMEmain contrib non-free deb http://security.debian.org/RELEASENAME/updates main contrib non-free
quindi lanci il comando:
root@slow:~#apt-get updateroot@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
con:
dist-upgradeapt-get -y --print-uris
install NOMI_DEI_PACCHETTI
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
Tizio consegna elenco_url.txt a Caio che eseguirà:
caio@quick:~$mkdir per-tizio-2 ; cd per-tizio-2caio@quick:~/per-tizio-2$wget -i elenco_url.txt
e infine copierà su uno o più CD i pacchetti.
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).
Il trucchetto di copiare manualmente i file
Packages in
/var/lib/apt/lists/
funziona con apt-get
(apt-get 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é.update
Aggiornare Debian senza Internet HOWTO
Versione 1.01 ~ 15 novembre 2006