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-1
caio@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.gz
root@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
/debianRELEASENAME
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
con:
dist-upgrade
apt-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-2
caio@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