
                        Utilisation d'APT hors ligne


-----------------------------------------------------------------------------
                                      
                               Jason Gunthorpe

                              <jgg@debian.org>

                                Version 3.2.0

-----------------------------------------------------------------------------

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

1. Introduction
    1.1. Aperçu
2. Utilisation d'APT sur les deux machines
    2.1. Aperçu
    2.2. Le fichier de configuration
3. Utilisation d'APT et wget
    3.1. Aperçu
    3.2. Fonctionnement

Chapitre 1. Introduction

Table des matières

1.1. Aperçu

1.1. Aperçu

    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.

Chapitre 2. Utilisation d'APT sur les deux machines

Table des matières

2.1. Aperçu
2.2. Le fichier de configuration

2.1. Aperçu

    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

2.2. Le fichier de configuration

    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.

Chapitre 3. Utilisation d'APT et wget

Table des matières

3.1. Aperçu
3.2. Fonctionnement

3.1. Aperçu

    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.

3.2. Fonctionnement

    À 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.

