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:
/medium
apt-get update
apt-get
für die Pakete, die zu aktualisieren sind, und Umleitung der Ausgabe in die lokale Datei uris
wget
-Aufrufe aus den zuvor gespeicherten
URLs mittels awk
. Ausgabe auf stdout
und Umleitung der Ausgabe in
die lokale Skriptdatei /medium/wget-script
.
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
Ablauf:
# apt-offline set /tmp/apt-offline.sig
--update
: nur Updates (Einspielen aktualisierter,
fehlerbereinigter Pakete mit der gleichen Versionsnummer)
--upgrade
: nur Upgrades (Einspielen aktualisierter,
fehlerbereinigter Pakete mit einer neueren Version)
ohne Optionen: alles auf den allerneuesten Stand bringen (entspricht
einem dist-upgrade
)
# apt-offline get apt-offline.sig --bug-reports --threads 5
# apt-offline install /media/USB/apt-offline.zip
Möchten Sie nicht mit den Schaltern von tar
, rar
, zip
oder hoz
hantieren, bietet sich hier das Werkzeug dpkg-split
aus dem Paket
dpkg [Debian-Paket-dpkg] an. Es zerlegt eine deb
-Datei in kleinere
Stücke und kann diese Stücke dann auch wieder zusammensetzen. Dieses
Werkzeug ist nützlich, um Binärpakete auf mehrere Medien mit geringer
Kapazität zu verteilen, bspw. wenn Sie gerade nichts anderes zur Hand
haben.
dpkg-split
kommt mit einer ganzen Reihe von nützlichen Schaltern:
-?
(Langform: --help
)
dpkg-split
an.
-a
(Langform: --auto
)
-d
(Langform: --discard
)
-I
(Langform: --info
)
dpkg-split
erzeugt wurde.
-j
(Langform: --join
)
.deb
-Datei. Standardmäßig folgt der Name der Ausgabedatei basierend
auf dem Paketnamen, der Version und der Architektur
(Paket-Version_Architektur.deb).
-l
(Langform: --listq
)
-o
(Langform: --output
)
dpkg-split
eine
Ausgabedatei mit dem Namen basierend auf dem Paketnamen, der Version und
der Architektur (Paket-Version_Architektur.deb).
-Q
(Langform: --npquiet
)
dpkg-split
normalerweise eine
Meldung aus, falls ein übergebener Teil kein Binärpaketteil ist. Dieser
Schalter unterdrückt diese Meldung, um Programmen wie dpkg
zu
erlauben, sowohl mit geteilten als auch ungeteilten Paketen umzugehen,
ohne störende Meldungen zu erzeugen.
-S
(Langform: --partsize
)
-s
(Langform: --split
)
Teilt ein einzelnes Debian-Binärpaket in mehrere Stücke. Die Benennung der Ausgabedateien folgt Paketname.nofm.deb mit n als Stücknummer und m als Anzahl der Stücke.
Geben Sie im Aufruf kein Präfix an, wird der Dateiname vom
Komplettarchiv entnommen, einschließlich Verzeichnis, wobei das
abschließende .deb
entfernt wird.
--depotdir
/var/lib/dpkg
.
--msdos
Erzwingt, dass die von -s
erzeugten Ausgabedateinamen
MSDOS-kompatibel sind.
Dies verstümmelt das Präfix — entweder den voreingestellten aus dem
Eingabedateinamen abgeleiteten oder den als Argument übergebenen. Dabei
werden alphanummerische Zeichen durch Kleinbuchstaben und Pluszeichen
durch x
ersetzt sowie alle anderen Zeichen entfernt. Das Ergebnis wird
dann soweit wie nötig abgeschnitten. Ergebnis ist ein Dateiname der Form
Präfixnofm.deb mit n als Stücknummer und m als Anzahl der Stücke.
--version
dpkg-split
aus.
Nachfolgend erklären wir anhand des Paketes xsnow, wie Sie
dpkg-split
benutzen.
Beispiel 1 ist das Zerlegen des Pakets xsnow in Stücke mit einer
Größe von 10 KB. Zum Einsatz kommen im Aufruf die beiden Schalter -s
(zerlegen) und -S 10
. Letzteres bestimmt die Größe der Ausgabedatei
von maximal 10 KB.
Als Ergebnis erhalten Sie vier Stücke. Diese werden in der Form Paketname.nofm.deb mit n als Stücknummer (im Beispiel die Werte 1 bis 4) und m als Anzahl der Stücke (im Beispiel 4) benannt.
Zerlegen des Debianpakets xsnow in Stücke zu 10 KB.
$ dpkg-split -s -S 10 xsnow_1%3a1.42-9_amd64.deb Paket xsnow wird in 4 Teile aufgeteilt: 1 2 3 4 fertig $ ls -lh insgesamt 136K -rw-r--r-- 1 frank frank 9,2K Jan 7 11:09 xsnow_1%3a1.42-9_amd64.1of4.deb -rw-r--r-- 1 frank frank 9,2K Jan 7 11:09 xsnow_1%3a1.42-9_amd64.2of4.deb -rw-r--r-- 1 frank frank 9,2K Jan 7 11:09 xsnow_1%3a1.42-9_amd64.3of4.deb -rw-r--r-- 1 frank frank 8,2K Jan 7 11:09 xsnow_1%3a1.42-9_amd64.4of4.deb $
In Beispiel 2 zeigen Sie die Informationen zu einem Stück eines
mittels dpkg-split
zerlegten deb-Pakets an. Dazu benutzen Sie den
Schalter -I
gefolgt von einem Dateiname als Parameter, hier:
xsnow_1%3a1.42-9_amd64.3of4.deb
. Die Ausgabe umfasst die
Formatversion, die Paketinformationen, die Nummer des Stücks (hier 3 von
4), die Größe ("Teil-Länge") sowie den Offset im Originalpaket
("Teil-Offset").
Informationen zum Teil xsnow_1%3a1.42-9_amd64.3of4.deb
erhalten.
$ dpkg-split -I xsnow_1%3a1.42-9_amd64.3of4.deb xsnow_1%3a1.42-9_amd64.3of4.deb: Teil-Formatversion: 2.1 Teil des Paketes: xsnow ... Version: 1:1.42-9 ... Architektur: amd64 ... MD5-Prüfsumme: 3ddeabaec77416662e45de36d9960a2a ... Länge: 35836 Byte ... geteilt alle: 9216 Byte Teil-Nummer: 3/4 Teil-Länge: 9216 Byte Teil-Offset: 18432 Byte Teil-Dateigröße (ben. Anteil): 9418 Byte $
Das Beispiel 3 zeigt, wie Sie ein Paket wieder aus einzelnen Stücken
zusammensetzen. Dazu benutzen Sie den Schalter -j
für die Aktion
"Zusammensetzen".
Nun erzeugt dpkg-split
als Ausgabedatei xsnow_1:1.42-9_amd64.deb, da
die Benennung den Angaben zum Paketnamen, der Paketversion sowie der
Architektur (Paket-Version_Architektur.deb) folgt. Am Ende des Aufrufs
geben Sie noch die Dateinamen der Stücke an, die Sie wieder
zusammensetzen möchten.
Einfaches Zusammenfügen der Paketstücke.
$ dpkg-split -j xsnow_1%3a1.42-9_amd64.* Paket xsnow wird aus 4 Teilen zusammengesetzt: 1 2 3 4 fertig $
Um eine Ausgabedatei mit einem spezifischen Dateinamen zu erhalten,
kommt nun noch der Schalter -o
für die Angabe der Ausgabedatei zum
Einsatz. Bitte beachten Sie dabei, dass Sie im Aufruf zuerst den
Schalter -o
und erst danach den Schalter -j
angeben. Nachfolgend
sehen den vollständigen Aufruf, der als Ergebnis die Datei
xsnow_1%3a1.42-9_amd64.deb
liefert.
Zusammenfügen der Paketstücke mit Ausgabedatei.
$ dpkg-split -o xsnow_1%3a1.42-9_amd64.deb -j xsnow_1%3a1.42-9_amd64.* Paket xsnow wird aus 4 Teilen zusammengesetzt: 1 2 3 4 fertig $
Anschließend raten wir Ihnen, zu überprüfen, ober alles beim Zusammenbau
geklappt hat. Mittels md5sum
vergleichen Sie die Hashwerte der beiden
Pakete wie folgt:
Vergleichen zweier Dateien mittels md5sum
.
$ md5sum xsnow_1%3a1.42-9_amd64.deb /var/cache/apt/archives/xsnow_1%3a1.42-9_amd64.deb 3ddeabaec77416662e45de36d9960a2a xsnow_1%3a1.42-9_amd64.deb 3ddeabaec77416662e45de36d9960a2a /var/cache/apt/archives/xsnow_1%3a1.42-9_amd64.deb $
Das Projekt Keryx [Keryx] beschreibt sich als eine freie, plattformunabhängige Softwareanwendung, um Linuxsysteme ohne Internetanbindung zu aktualisieren. Es hat den Fokus auf Benutzer mit Einwahlverbindungen und Systeme, die nur über eine dünne Leitung an das Internet verfügen.
Ursprünglich nur für Ubuntu entwickelt, erlaubt es mittlerweile das Auswählen und Herunterladen von Paketen auf Debian-basierten Systemen und auch anderen Betriebssystemen wie bspw. Microsoft Windows. Die bezogenen Pakete werden auf einem mobilen Speichermedium abgelegt und können von da aus auf dem eigentlichen System eingespielt werden. Geschieht das in einem größeren Rahmen, ist für das Vorgehen der Begriff „Turnschuhnetzwerk“ [Turnschuhnetzwerk] gebräuchlich.
Keryx basiert auf dem Gimp Tool Kit. Die letzte Veröffentlichung als Ubuntu-PPA erfolgte 2011 (Version 1), 2017 wurde die Version 0.92.5 freigegeben. Aktuellere Veröffentlichungen sind nicht bekannt.
Es existiert zudem eine Erweiterung um eine graphische Bedienoberfläche, die auf wxPython (Paket python-wxversion) aufsetzt.