Version 3.1.3
Copyright © 1999 Jason Gunthorpe
Mention de licence
APT, ainsi que ce document, sont libres. Vous pouvez les redistribuer et les modifier en respectant les conditions de la licence publique générale GNU telle que publiée par la Free Software Foundation, en version 2 ou ultérieure. |
Les détails complets de cette licence sont, sur les systèmes Debian, consultables dans le fichier usr/share/common-licenses/GPL. |
Résumé
Ce document décrit la méthode d'utilisation d'APT hors connexion à un réseau, et plus particulièrement une approche « sneaker-net » pour les mises à jour.
Table des matières
Table des matières
Normalement, APT a besoin d'avoir un accès direct à une archive Debian, soit sur un support local, soit via le réseau. Un autre cas intéressant à traiter est celui d'une machine dotée d'une liaison peu rapide (comme un modem) avec une autre possédant une connexion à haut débit mais située à distance. |
Une solution est d'utiliser un support amovible de grande taille tel qu'un disque Zip ou un disque Superdisk (NdT : ce document est daté..:-)). Bien que ces supports ne disposent pas d'assez de place pour héberger une archive Debian complète, ils peuvent toutefois contenir un sous-ensemble de taille suffisante pour les besoins de nombreux utilisateurs. L'idée est alors d'utiliser APT pour créer une liste de paquets nécessaires, puis de les récupérer avec une machine disposant d'une bonne connectivité. Il est même possible d'utiliser soit une autre machine Debian avec APT soit un autre système d'exploitation et un outil de téléchargement tel que wget. Dans ce qui suit, machine distante désignera la machine qui télécharge les paquets et machine cible, celle qui a une connectivité limitée. |
Il est nécessaire de manipuler le fichier de configuration d'APT de manière intelligente. Le préalable est d'indiquer à APT d'examiner le contenu d'un disque pour y trouver les fichiers d'archive. Ce disque doit utiliser un système de fichier autorisant les noms longs, par exemple ext2, fat32 ou vfat. |
Table des matières
Si APT existe sur les deux machines, le cas est relativement simple. L'idée de base est de mettre une copie du fichier d'état sur le disque et d'utiliser la machine distante pour récupérer la dernière liste de paquets et choisir ceux à télécharger. La structure des répertoires du disque devraient ressembler à : |
/disc/
archives/
partial/
lists/
partial/
status
sources.list
apt.conf
|
Le fichier de configuration indique à APT où conserver ses fichiers sur le disque et d'utiliser également les fichiers de configuration du disque. Le fichier sources.list devrait référencer les sites que vous souhaitez utiliser depuis la machine distante et le fichier d'état doit être une copie de /var/lib/dpkg/status de l'ordinateur cible. Veuillez noter que si sous utilisez une archive locale, les URI doivent en être copiés. La syntaxe est la même que celle des URI fichiers. |
apt.conf doit avoir les informations nécessaires pour qu'APT utilise le disque : |
APT
{
/* This is not necessary if the two machines are the same arch, it tells
the remote APT what architecture the target machine is */
Architecture "i386";
Get::Download-Only "true";
};
Dir
{
/* Use the disc for state information and redirect the status file from
the /var/lib/dpkg default */
State "/disc/";
State::status "status";
// Binary caches will be stored locally
Cache::archives "/disc/archives/";
Cache "/tmp/";
// Location of the source list.
Etc "/disc/";
};
|
Plus d'informations peuvent être trouvées dans la page de manuel du fichier apt.conf et dans l'exemple de fichier de configuration que l'on peut trouver dans /usr/share/doc/apt/examples/apt.conf. |
Sur la machine cible, il est d'abord nécessaire de monter le disque et y copier le fichier /var/lib/dpkg/status. Il sera aussi nécessaire de créer les répertoires dans l'aperçu (Overview), archives/partial/ and lists/partial/. Connecter ensuite le disque à la machine distante et configurer le fichier sources.list. Sur la machine distante, exécuter la séquence de commandes suivante : |
# export APT_CONFIG="/disc/apt.conf" # apt-get update [ APT récupère les fichiers des paquets ] # apt-get dist-upgrade [ APT récupère tous les fichiers nécessaires à la mise à jour de la machine distante ] |
La commande dist-upgrade peut être remplacée par toute autre commande usuelle d'APT, notamment dselect-upgrade. Il est même possible d'utiliser une interface comme dselect. Cependant, cela complique la communication des choix vers l'ordinateur local. |
Après cette opération, le disque contiendra tous les fichiers d'index et les archives nécessaires pour mettre à jour la machine cible. Il est alors possible d'y ramener le disque et exécuter : |
# export APT_CONFIG="/disc/apt.conf" # apt-get check [ APT crée la copie locale des fichiers de cache ] # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade [ ou toute autre commande APT ] |
Pour un fonctionnement correct, il est indispensable de réindiquer que le fichier d'état est le fichier local. Cela est très important. |
Si vous utilisez dselect, vous pouvez effectuer l'opération dangereuse consistant à copier disc/status en /var/lib/dpkg/status, afin que les choix effectués sur la machine distante soient mis à jour. Il est recommandé de n'effectuer les choix que sur la machine locale, mais ce n'est pas toujours possible. NE COPIEZ PAS le fichier d'état si dpkg ou APT ont été exécutés dans l'intervalle. |
Table des matières
wget est un outil classique de téléchargement qui peut être exécuté sur à peu près tout type de machine. À la différence de la méthode précédente, cela impose que la machine Debian a déjà une liste des paquets disponibles. |
L'idée de base est de créer un disque qui ne comporte que les fichiers d'archive téléchargés depuis le site distant. Cela peut être effectué avec l'option --print-uris d'apt-get, puis en préparant un script wget pour récupérer réellement les paquets. |
À la différence de la méthode précédente, aucun fichier de configuration spécifique n'est nécessaire. Seules les commandes standard d'APT seront utilisées pour créer la liste de fichiers. |
# apt-get dist-upgrade
[ Répondre négativement à la question, pour être sûr(e) que les actions vous conviennent ]
# apt-get -qq --print-uris dist-upgrade > uris
# awk '{print "wget -O " $2 " " $1}' < uris > /disc/wget-script
|
Toute autre commande que dist-upgrade peut être utilisée, y compris dselect-upgrade. |
Le fichier /disc/wget-script contiendra alors la liste des commandes wget à exécuter afin de récupérer les fichiers nécessaires. Ce script doit être exécuté depuis le point de montage du disque afin que les fichiers soient écrits sur le disque. |
Sur la machine distante, il faudra alors exécuter l'équivalent de : |
# cd /disc # sh -x ./wget-script [ attendre.. ] |
Une fois les fichiers téléchargés et le disque reconnecté à la machine Debian, l'installation peut se poursuivre avec : |
# apt-get -o dir::cache::archives="/disc/" dist-upgrade |
Cette commande utilisera les archives déjà récupérées sur le disque. |