4.16 apt - Offline nutzen

Normalerweise wird apt mit direktem Zugriff zu einem Archiv benutzt, sei es, dass die Daten auf einer lokalen Festplatte liegen, 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.

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

4.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 gpk-application 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!

4.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 verlinkter 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, ob 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

 Impressum