Ce tutoriel vient en complément de la page apt-offline qui est à consulter en priorité. Les méthodes expliquées ici y étaient originellement incluses.
Le but de cette section est de faire un sudo apt-get update
manuel.
Enregistrez le texte de chaque script qui suit dans un fichier texte dans votre Dossier Personnel et rendez-le exécutable.
#!/bin/bash MYSH=myupdate-download MYTB2=myupdate.tar.bz2 cat > $MYSH << EOF #!/bin/bash TMPDIR="\$(mktemp -dt)" || exit 1 trap 'rm -rf "\$TMPDIR"' EXIT OLDDIR="\$PWD" cd "\$TMPDIR" EOF apt-get update -qq --print-uris \ | awk '!/\.bz2/{print "wget",$1,"-O",$2};\ /\.bz2/{sub("\.bz2'\''","",$1);\ printf "(wget %s.bz2'\'' -O- | bunzip2 > %s) \ || (wget %s.gz'\'' -O- | gunzip > %s) \ || wget %s'\'' -O%s\n",$1,$2,$1,$2,$1,$2}' >> $MYSH echo "tar --mode 644 --owner root --group root -cjf \"\$OLDDIR/$MYTB2\" *" >> $MYSH chmod 755 $MYSH
* Script auquel vous donnerez le nom myupdate-copy:
#!/bin/bash MYTB2=my-update.tar.bz2 [ -f "$MYTB2" ] || exit 1; OLDDIR="$PWD" cd /var/lib/apt/lists tar -xjf "$OLDDIR/$MYTB2" touch /var/lib/apt/periodic/update-stamp
sudo bash gen-myupdate-download
Ce script crée un autre script nommé myupdate-download
à emporter sur la machine (linux) reliée à internet.
./myupdate-download
Ce script télécharge les listes dans un fichier nommé myupdate.tar.bz2
qu'il faut ramener sur son ordinateur sans internet,
myupdate.tar.bz2
: sudo bash myupdate-copy
… et vos listes sont à jour :D.
Ce script permet à la fois la mise à jour des listes et le téléchargement des paquets, il télécharge même les clés de sécurité. Il est particulièrement utile dans le cadre des mises à jour du système. Skippy l'avait autrefois développé et avait eu l'obligeance de mettre à la disposition de tous, et même s'il ne s'en sert plus, il a eu la gentillesse de le moderniser et de le débugger jusqu'à ce qu'il atteigne son efficacité actuelle. Voici le lien vers le forum où poster si vous avez un souci.
Le script à enregistrer sous le nom de apt-off
est un peu long pour le poster ici, vous le trouverez ici, en tête du topic.
Pour l'utiliser dans le but de mettre à jour les listes de paquets, il suffit de copier dans un dossier de sauvegarde les listes de paquets déjà présentes dans votre dossier /var/lib/apt/lists/, c'est-à-dire tous les fichiers textes sauf le fichier lock.
#creation du dossier de sauvegarde dans le home mkdir save #sauvegarde des listes cp /var/lib/apt/lists/*_Packages save/ #on se place dans le répertoire cd /var/lib/apt/lists/ #suppression des listes sudo rm -f *_Packages
Si vous n'êtes pas à l'aise avec la console, vous pouvez préalablement naviguer jusqu'à votre répertoire /var/lib/apt/lists/ et sélectionner les fichiers à la souris puis les coller dans le dossier de sauvegarde.
sudo rm -f /var/lib/apt/lists/*_Packages
Je vous le déconseille très vivement. En effet si jamais vous faites des erreurs dans la commande comme par exemple glisser un espace entre le / et le var, il y a de grands risques d'endommager gravement votre système.
Maintenant placez-vous sur votre clé USB, et tapez :
./apt-off -g dist-upgrade
le script se lance puis affiche un avertissement vous invitant à exécuter la commande :
./apt-off -c
sur un ordinateur disposant d'internet. Remarquez qu'un dossier config_files s'est créé. Vous devez l'avoir avec vous sur l'ordinateur relié à internet. Effectuez-y la commande. Normalement, des téléchargements devraient s'afficher dans le terminal. Revenez sur votre ordinateur (toujours avec le script et le dossier config_files qui s'est un peu rempli) et tapez à nouveau:
./apt-off -g dist-upgrade
Ceci devrait mettre à jour vos listes. Remarquez aussi qu'un fichier offline packages s'est créé. C'est ce fichier qui va permettre la mise à jour de votre système.
Que vous ayez exécuté la mise à jour des listes avec apt-off ou non, importe peu du moment qu'elles sont à jour.
Enregistrez apt-off
sur votre clé USB et placez vous dans le répertoire. Puis tapez:
#si vous voulez installer un paquet ./apt-off -g nom_du_paquet #si vous voulez mettre à jour le système ./apt-off -g dist-upgrade
Notez l'apparition du fichier offline.packages
qui va contenir toutes les commandes de téléchargement. Vous pouvez bien sûr demander plusieurs paquets à la fois, ou encore exécuter deux commandes successives, qui vont se concaténer, sauf si à la question du script, vous optez pour l'écrasement. Allez sur l'ordinateur relié à internet et tapez la commande :
./apt-off -d
vous devez avoir suffisamment de place sur votre clé. Surtout si vous mettez à jour le système. Un dossier deb se crée dans le répertoire courant qui contient tous les paquets téléchargés. Revenez sur votre ordinateur personnel et exécutez:
#si vous vouliez installer un paquet ./apt-off -x nom_du_paquet #si vous vouliez mettre à jour le système ./apt-off -x dist-upgrade
fin de la pocédure avec apt-off
.
#pour afficher l'aide de apt-off ./apt-off -h #pour afficher juste les options ./apt-off -o
et appuyez sur <q> pour sortir de ces écrans.
Les listes de paquets contiennent toutes les informations sur les paquets disponibles pour votre distribution, ainsi que leur version. C'est sur ces informations que se base votre gestionnaire de paquet pour décider ce qui peut être installé et ce qui peut être mis à jour. Les listes de paquets sont stockées dans le dossier /var/lib/apt/lists/
. Leurs url de téléchargement sont écrites dans le fichier /etc/apt/sources.list
, et dans les fichiers contenus dans le dossier /etc/apt/sources.list.d
.
Par conséquent la mise à jour des listes de paquets consiste à récupérer toutes ces url, à télécharger les fichiers de listes de paquets correspondants, et à les placer dans leur dossier en écrasant les listes précédentes. C'est en substance ce que font les scripts présentés ici, à quelques limitations près : dans sa version actuelle, le script de Skippy le grand gourou ne regarde que le contenu du fichier /etc/apt/sources.list
, et il faut donc y copier coller manuellement le contenu des sous fragments pour pouvoir les mettre à jour aussi. Par ailleurs, la mise à jour des listes avec ce script ne s'activera que si vous avez vous même vidé manuellement votre dossier /var/lib/apt/lists/
.
L'astuce ici, est d'utiliser des options spéciales de apt-get
pour décomposer en plusieurs étapes ce qui tient d'habitude en une seule ligne de commande, et d'effectuer ces étapes sur des ordinateurs différents.
On utilise la commande suivante pour simuler l'installation des paquets, en affichant juste leurs url.
sudo apt-get -qq --print-uris install NOM_PAQUET
Bien sûr, cela marche comme avec apt-get
, vous pouvez spécifier plusieurs noms de paquets, ou remplacer install NOM_PAQUET
par dist-upgrade
si vous le souhaitez.
On récupère toutes ces urls, et on crée un script de téléchargement qui va utiliser la commande wget sur chacune de ces url.
Cette étape n'a rien de mystérieux, on effectue juste tous les téléchargements de fichiers. C'est pour cela que les droits d'administrations ne sont pas nécessaires.
Ça y est on possède tous les paquets. La dernière étape consiste à dire à apt d'utiliser notre dossier comme source à la place d'internet : C'est la commande
sudo apt-get -o dir::cache::archives=CHEMIN/VERS/LE/DOSSIER install NOM_PAQUET
De même que précédemment, vous pouvez remplacer install NOM_PAQUET
par dist-upgrade
si requis.
Ce que font les divers scripts, c'est simplement l'automatisation de toutes ces étapes, et leur longueur tient à la volonté de leurs développeurs de rajouter des options ou d'automatiser au maximum certaines étapes afin de faciliter son utilisation par l'utilisateur final.
Contributeurs: Aldian.