38.3. Werkzeuge

38.3.1. Offline-Verwaltung mit apt-get und wget

In diesem Szenario kombinieren wir aus APT das Werkzeug apt-get mit awk und wget. Diese wunderbare Idee und Beschreibung ist entlehnt aus Frank Ronneburgs Debian-Anwenderhandbuch [Debian-Anwenderhandbuch-apt-offline] sowie dem Beitrag von Samuel Suter [Suter-apt-offline], hier jedoch nur für ausgewählte Pakete.

awk ist ein Analyse- und Filterprogramm für Textdaten [Debian-Paket-gawk]. wget ist hingegen ein Kommandozeilenprogramm, um Dateien über das Netzwerk zu beziehen [Debian-Paket-wget]. Während gawk zu den essentiellen Paketen zählt, ist wget optional und daher ihrerseits vor dessen Verwendung gegebenenfalls noch zu installieren.

Der Ablauf ist wie folgt:

  1. Einhängen („mounten“) eines externen, mobilen Datenträgers im Verzeichnis /medium
  2. Aktualisieren der lokalen Paketdatenbank mittels apt-get update
  3. Erzeugen der URLs mittels apt-get für die Pakete, die zu aktualisieren sind, und Umleitung der Ausgabe in die lokale Datei uris
  4. Generieren der passenden wget-Aufrufe aus den zuvor gespeicherten URLs mittels awk. Ausgabe auf stdout und Umleitung der Ausgabe in die lokale Skriptdatei /medium/wget-script.
  5. Ausführung der der Skriptdatei zum Bezug der bezeichneten Pakete vom Spiegelserver und der Speicherung der bezogenen Pakete im lokalen Verzeichnis.

Aufrufreihenfolge mittels apt-get, awk und wget

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

Als Ergebnis dieser Aufrufe finden Sie auf dem mobilen Datenträger alle deb-Pakete, die zur Aktualisierung mittels apt-get dist-upgrade erforderlich sind. Unmounten Sie den mobilen Datenträger auf dem ersten System und mounten Sie diesen auf dem Zielsystem. Als finalen Schritt erfolgt auf dem Zielsystem ein Aufruf von apt-get dist-upgrade mit dem Paketcache auf dem mobilen Medium. Dazu verwenden Sie den Schalter -o mit der APT-Direktive dir::cache::archives und dem passenden Pfad zum Paketcache. Der Einfachheit halber heißt dieser hier ebenfalls /medium.

Eine Distributionsaktualisierung mit einem externen Paketcache. 

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

38.3.2. Das Projekt apt-offline

  • Ablauf:

    • Signatur für die Maschine erzeugen, die aktualisierte Paketinformationen und Pakete bekommen soll (auf der Maschine, die offline ist)
# apt-offline set /tmp/apt-offline.sig
  • Option --update: nur Updates (Einspielen aktualisierter, fehlerbereinigter Pakete mit der gleichen Versionsnummer)
  • Option --upgrade: nur Upgrades (Einspielen aktualisierter, fehlerbereinigter Pakete mit einer neueren Version)
  • ohne Optionen: alles auf den allerneuesten Stand bringen (entspricht einem dist-upgrade)

    • Paketinfo für die offline-Maschine holen, inkl. Bug-Reports und Ausführung als parallele 5 Threads (auf einer Maschine, die über eine Netzanbindung verfügt)
# apt-offline get apt-offline.sig --bug-reports --threads 5
  • bezogene Paketinformationen auf der offline-Maschine einspielen, hier beispielhaft als Datei von einem Speichermedium, welches über USB eingehängt ist (USB-Stick oder USB-Festplatte)
# apt-offline install /media/USB/apt-offline.zip
  • aktualisiert den APT-Cache, sodaß alles daher kommt und nichts von extern bezogen werden muß

38.3.3. Pakete mit dpkg-split aufteilen

  • Werkzeug dpkg-split aus dem Paket dpkg [Debian-Paket-dpkg]
  • zerlegt eine deb-Datei in kleinere Stücke und kann diese Stücke wieder zusammensetzen
  • nützlich, um Binärpakete auf mehrere Medien mit geringer Kapazität zu verteilen (wenn man grade nichts anderes zur Hand hat …)
  • Schalter (Auswahl):

    • -s (Langform: --split)
    • -j (Langform: --join)

38.3.4. aptoncd

  • aptoncd [Debian-Paket-aptoncd]
  • Erstellt Installations-CDs von Paketen

    • die vorher explizit mittels APT heruntergeladenen wurden
    • über den aktuellen Paketbestand (eine Art Schnappschuß) und baut daraus ein ISO-Image bzw. Repository mit allen aktuell genutzten Paketen
    • beschreibt sich selbst als Debian Packages Backup Tool
    • nutzbar als Installationsimage
    • setzt auf GNOME/GTK und Python 2.6 auf

      • seit längerem keine neuere Version verfügbar
      • letzte Release von 2007

Abbildung 38.1. aptoncd im Einsatz

praxis/paketverwaltung-ohne-internet/aptoncd.png

  • Modi

    • Installations-CD erstellen
    • Dateien von der CD wieder herstellen
  • Arbeitsweise

    • liest Paketdatenbank aus (Taste: F5)
    • erstellt Übersicht aus den verfügbaren und den installierten Paketen

      • Darstellung: 3 Spalten (Paketname+Version+Kurzbeschreibung, Version, Größe)
    • Darstellung der Gesamtmenge bzw. ausgewählt am unteren Fensterrand
    • erstellt Image daraus (Knopf: Brennen)
  • Optionen und Parameter

-c (Langform --packages-list=FILE)
aptoncd liest die Pakete aus der angegebenen Datei ein

-l (Langform --cache-dir=PATH)
Verwendet den angegebenen Pfad zum Paketcache anstatt dem Standardpfad /var/cache/apt/archives

-r (Langform --temp-dir=PATH)
verwendet den angegebenen Pfad als temporäres Verzeichnis, um Dateien zu kopieren und Images zu mounten

Keryx

  • Projekt: [Keryx]
  • „Keryx is a free, open source application for updating Linux. The Keryx Project started as a way for users with dialup, or low-bandwidth internet to be able to download and update packages on their debian based distribution of linux. Mainly built for Ubuntu, Keryx allows users to select packages to install, check for updates, and download these packages onto a USB portable storage device. The packages are saved onto the device and are then taken back to the Linux box that it originated from and are then installed.“
  • „a portable, cross platform offline package manager for Debian based Linux distributions (Ubuntu and derivatives).“
  • „Download software on computer connected to internet (it may be on Linux or Windows) and then install them to offline PC.“
  • basiert auf dem Gimp Tool Kit
  • letzte Veröffentlichung als Ubuntu PPA: 2011 (Version 1)
  • (Stichwort Turnschuhnetzwerk, Sneakernet: https://de.wikipedia.org/wiki/Turnschuhnetzwerk)