// Datei: ./praxis/paketverwaltung-ohne-internet/dpkg-split.adoc

// Baustelle: Rohtext

[[paketverwaltung-offline-dpkg-split]]
==== Pakete mit `dpkg-split` aufteilen ====

// Stichworte für den Index
(((Debianpaket, dpkg)))
(((dpkg-split)))
(((dpkg-split, -?)))
(((dpkg-split, --help)))
(((dpkg-split, -a)))
(((dpkg-split, --auto)))
(((dpkg-split, -d)))
(((dpkg-split, --discard)))
(((dpkg-split, -I)))
(((dpkg-split, --info)))
(((dpkg-split, -j)))
(((dpkg-split, --join)))
(((dpkg-split, -l)))
(((dpkg-split, --listq)))
(((dpkg-split, -o)))
(((dpkg-split, --output)))
(((dpkg-split, -Q)))
(((dpkg-split, --npquiet)))
(((dpkg-split, -S)))
(((dpkg-split, --partsize)))
(((dpkg-split, -s)))
(((dpkg-split, --split)))
(((dpkg-split, --depotdir)))
(((dpkg-split, --msdos)))
(((dpkg-split, --version)))

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`) :: Zeigt die Hilfeseite zu `dpkg-split` an.

`-a` (Langform: `--auto`) :: Reiht die Stücke automatisch in die
Warteschlange und setzt, falls möglich, das Paket wieder zusammen.

`-d` (Langform: `--discard`) :: Löscht Einträge aus der Warteschlange
derer, die auf die verbleibenden Stücke ihrer Pakete warten.

`-I` (Langform: `--info`) :: Gibt Informationen zu einem Stück aus,
welches zuvor von `dpkg-split` erzeugt wurde.

`-j` (Langform: `--join`) :: Vereinigt einzelne Stücke zu einer
`.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`) :: Listet den Inhalt der Warteschlange der wieder zusammenzubauenden Pakete auf.

`-o` (Langform: `--output`) :: Gibt den Ausgabedateinamen für ein
Wiederzusammenbauen an. Ohne diesen Schalter erzeugt `dpkg-split` eine
Ausgabedatei mit dem Namen basierend auf dem Paketnamen, der Version und
der Architektur ('Paket-Version_Architektur.deb').

`-Q` (Langform: `--npquiet`) :: Führen Sie ein automatisches Einreihen
oder Wiederzusammensetzen durch, gibt `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`) :: Legt die Größe der Stücke fest. Die
Angabe erfolgt in Kilobytes zur Basis 1024 Byte. Die Standardgröße
beträgt 450 KB.

`-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` :: Spezifiziert ein alternatives Verzeichnis für die
Warteschlange  von den Stücken, die auf automatisches
Wiederzusammenführen warten. Standardmäßig ist dies das Verzeichnis
`/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` :: Gibt die verwendete Version von `dpkg-split` aus.

// Stichworte für den Index
(((Debianpaket, xsnow)))
(((dpkg-split, -j)))
(((dpkg-split, -o)))
(((dpkg-split, -s)))
(((dpkg-split, -S)))
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
$
----

// Datei (Ende): ./praxis/paketverwaltung-ohne-internet/dpkg-split.adoc
