Kapitel 5. Paketmanagement
Zurück | 5.16 `apt` - Offline nutzen | Weiter

## 5.16 `apt` - Offline nutzen

Normalerweise wird `apt` mit einem direkten Zugriff zu einem Archiv benutzt, sei es dass die Daten auf einer lokalen Festplatte liegen oder von einer CD-ROM kommen oder über ein Netzwerk installiert werden sollen. Trotzdem kann es sinnvoll sein, wenn Sie keine aktuellen CDs zur Hand haben oder Ihnen der Download der Dateien zu langwierig ist, die Daten von einem Rechner mit den aktuellen Paketen auf ein anderes Medium, zum Beispiel ein ZIP, zu kopieren und zu installieren.

Problematisch ist dabei, dass ein solches Medium nicht ausreicht, um eine komplette Debian-Distribution aufzunehmen. Aber es reicht ja auch aus, nur die benötigten Pakete zu kopieren. Sie müssen also mit `apt` eine Liste der benötigten Pakete erstellen und diese auf dem Rechner mit einer schnellen Anbindung ans Netz herunterladen. Hierzu ist das Programm `wget` gut geeignet.

Weiterhin müssen Sie `apt` dazu bringen, die Paketdateien von dem neuen Medium zu lesen. Dieses sollte mit einem Dateisystem formatiert sein, das mit langen Dateinamen umgehen kann; dies wären zum Beispiel: `ext2`, `vfat` oder `fat32`.

### 5.16.1 `apt` auf beiden Rechnern

Wenn `apt` auf beiden Rechnern installiert ist, können Sie über die Statusdatei (`status`) feststellen lassen, welche Pakete auf dem Zielrechner fehlen. Die Verzeichnisstruktur auf dem Medium sollte wie folgt aussehen:

    /medium/
      archives/
         partial/
      lists/
         partial/
      status
      sources.list
      apt.conf

### 5.16.2 Anpassungen der Datei `apt.conf`

In der Konfigurationsdatei teilen Sie `apt` mit, dass die Debian-Pakete auf dem Medium gespeichert werden sollen und dass dort auch die Konfigurationsdateien zu finden sind. Die Datei `sources.list` sollte den Server enthalten, von dem die Pakete geholt werden sollen. Die Datei `status` ist eine Kopie der Datei `/var/lib/dpkg/status` von Ihrem Zielrechner.

Die Datei `apt.conf` enthält die nötigen Informationen, um das Medium zu benutzen:

          APT
          {
            /* nur notwendig, wenn die beiden Rechner
               nicht die gleiche Architektur haben */
            Architecture "i386";

            Get::Download-Only "true";
          };

          Dir
          {
            /* die status-Datei auf dem Medium nutzen. */
            State "/medium/";
            State::status "status";

            /* auf dem Medium cachen */
            Cache::archives "/medium/archives/";

            /* da ist auch die Datei sources.list */
            Etc "/medium/";
          };

Auf Ihrem Zielrechner mounten Sie zuerst das Medium und kopieren die Datei `/var/lib/dpkg/status` dorthin. Erzeugen Sie dann die Verzeichnisse, die oben in der Struktur gezeigt sind (`archives/partial/` und `lists/partial/`).

Die weiteren Schritte können Sie auf dem zweiten Rechner durchführen. Passen Sie die Datei `sources.list` an. Dann führen Sie Folgendes auf diesem Rechner aus:

    export APT_CONFIG="/medium/apt.conf"
    apt-get update
    apt-get dist-upgrade

Sie können auch alle anderen `apt`-Optionen oder auch `gnome-apt` benutzen.

Wenn alle Dateien auf das Medium übertragen worden sind, können Sie diese zu Ihrem Zielrechner transportieren und die Pakete wie folgt installieren:

    export APT_CONFIG="/medium/apt.conf"
    apt-get check
    apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status dist-upgrade

Bitte beachten Sie, dass hierbei wieder die lokale `status`-Datei benutzt wird!

### 5.16.3 Kopieren der Dateien mit `wget`

Wenn Sie nicht die Möglichkeit haben, die Dateien auf einem Rechner mit `apt` aus dem Netz zu kopieren, können Sie alternativ auch das Programm `wget` benutzen. Dieses ist nicht Teil der Debian GNU/Linux-Basisinstallation, Sie müssen also zunächst das Paket installieren.

`wget` dient zum Kopieren von Webseiten inklusive der dazugehörigen Grafiken und eventueller weiterer mit dieser Seite verlinkten Seiten. Wir werden `wget` aber zum gezielten Kopieren der benötigten Debian-Pakete von einem Server benutzen.

Sie können die Pakete mittels `wget` kopieren, indem Sie `apt-get` mit der Option `--print-uris` dazu benutzen, eine Liste der benötigten Pakete mit der kompletten URL für `wget` zu erzeugen.

Entgegen dem eben vorgestellten Beispiel brauchen Sie hier keine extra Konfigurationsdateien (außer natürlich der Datei `/etc/apt/sources.list`, die von `apt` benötigt wird). Führen Sie die folgenden Kommandos auf dem Rechner aus, auf dem die Pakete später installiert werden sollen.

    apt-get update
    apt-get -qq --print-uris dist-upgrade > uris
    awk '{print "wget -O " $2 " " $1}' < uris > /medium/wget-script

Drücken Sie „n“ nach dem ersten Kommando, und prüfen Sie, dass die Auswahl korrekt ist. Die benötigten Pakete wurden nun zur späteren Installation markiert. In der zweiten Zeile wird mit `apt-get` und den entsprechenden Optionen eine Liste der zu installierenden Pakete erzeugt und in die Datei `uris` geschrieben. Das letzte Kommando ergänzt die Liste der Pakete um die nötigen Aufrufe des Kommandos `wget`.

Die Datei `/medium/wget-script` enthält nun eine Liste mit Kommandos, die die benötigten Pakete aus dem Netz holen. Sie können dieses jetzt auf dem Medium ausführen:

            cd /medium
            sh -x ./wget-script

Hierbei ist es unerheblich, ob das Transportmedium sich noch in dem Rechner befindet, auf dem die Pakete installiert werden sollen (was keinen Sinn machen würde, Sie könnten sich den Umweg über `wget` dann sparen), oder ob Sie das Medium in einem Rechner mit einer besseren Netzanbindung anmelden und dort das Skript ausführen. Die Pakete werden lediglich auf das Medium übertragen und nicht installiert.

Wenn alle Dateien übertragen wurden, können Sie das Medium zu Ihrem Zielrechner transportieren und die Pakete mit folgendem Kommando installieren:

            apt-get -o dir::cache::archives="/medium/" dist-upgrade

Zurück | Nach oben | Weiter
5.15 `apt-get` | Zum Anfang | 5.17 `apt-rdepends`

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).