multistrap(1) Bootstraps für mehrere Depots

ÜBERSICHT


multistrap [-a ARCH] [-d VERZ] -f KONFIGURATIONSDATEI
multistrap [--simulate] -f KONFIGURATIONSDATEI
multistrap -?|-h|--help|--version

OPTIONEN

-?|-h|--help|--version - den Hilfetext ausgeben und erfolgreich beenden

--dry-run - alle Konfigurationseinstellungen zusammenstellen und eine Kurzfassung ausgeben

--simulate - entspricht --dry-run

(Die folgenden Optionen können auch in der Konfigurationsdatei gesetzt werden.)

a|--arch - Architektur der Pakete, die in den Multistrap hineinkommen

-d|--dir - Verzeichnis in das der Bootstrap installiert wird

-f|--file - Konfigurationsdatei für Multistrap [erforderlich]

-s|--shortcut - verkürzte Version von -f für Dateien an bekannten Orten

--tidy-up - die Apt-Zwischenspeicherdaten, heruntergeladene Paketdateien und den Apt-Paketzwischenspeicher entfernen. Entspricht cleanup=true.

--no-auth - die Benutzung von nicht authentifizierten Depots erlauben. Entspricht noauth=true

--source-dir VERZ - verschiebt die Inhalte von var/cache/apt/archives/ aus der Chroot in das angegebene externe Verzeichnis und fügt dann die Debian-Quellpakete für jedes benutzte Programm hinzu. Entspricht retainsources=VERZ. Falls das angegebene Verzeichnis nicht existiert, passiert nichts. Benötigt --tidy-up, um die vollständige Liste der Quellpakete einschließlich Abhängigkeiten zu berechnen.

BESCHREIBUNG

Multistrap stellt mehrere Debootstrap ähnliche Methoden bereit, die auf APT basieren, erweitert um die Unterstützung für mehrere Depots; dabei wird eine Konfigurationsdatei verwendet, um relevante Suites, Architekturen, zusätzliche Pakete und den Spiegel anzugeben, die für jeden Bootstrap benutzt werden.

Das Ziel ist es, ein komplettes Bootstrap-/Wurzeldateisystem mit allen installierten und konfigurierten Paketen zu erstellen, statt nur eines Basissystems.

In den meisten Fällen möchten Anwender die Konfigurationsdatei für jede unterschiedliche Multistrap-Benutzung erstellen.

Beispielkonfiguration:

 [General]
 arch=armel
 directory=/opt/multistrap/
 # entspricht der Option --tidy-up, falls auf »true« gesetzt
 cleanup=true
 # entspricht der Option --no-auth, falls auf »true« gesetzt
 # pro Bootstrap aufgeführte Keyring-Pakete werden trotzdem installiert
 noauth=false
 # alle heruntergeladenen Pakete extrahieren (Vorgabe ist »true«).
 unpack=true
 # ob die »/suite« hinzugefügt wird, um explizit festzulegen, wo APT
 # nach Paketen suchen muss. (Vorgabe ist »false«)
 explicitsuite=false
 # aktiviert Multiarch für die angegebenen Architekturen
 # Vorgabe ist leer
 multiarch=
 # »aptsources« ist eine Liste von Abschnitten, die die 
 # /etc/apt/sources.list.d/multistrap.sources.list des Ziels benutzen.
 # Die Reihenfolge spielt keine Rolle.
 aptsources=Debian
 # Die Bootstrap-Option legt fest, welches Depot zur Berechnung der
 # Prioritätsliste benutzt wird: Benötigte Pakete und welche Pakete in das
 # Wurzeldateisystem wandern.
 # Die Reihenfolge der Abschnitte spielt keine Rolle.
 bootstrap=Debian
 
 [Debian]
 packages=
 source=http://ftp.uk.debian.org/debian
 keyring=debian-archive-keyring
 suite=jessie

This will result in a completely normal bootstrap of Debian Jessie from the specified mirror, for armel in '/opt/multistrap/'. (This configuration is retained in the package as /usr/share/multistrap/jessie.conf)

Geben Sie ein Paket zur Erweiterung von Multistrap an, um das Paket und alle Abhängigkeiten des Pakets einzufügen.

Geben Sie weitere Depots für den Bootstrap an, indem Sie neue Abschnitte hinzufügen. Abschnittsnamen müssen für die Pakete in der »Bootstrap«-Option unter [General] aufgelistet sein, um in den Bootstrap eingefügt zu werden.

Geben Sie durch Auflisten der Abschnittsnamen in der «aptsources«-Option unter [General] an, welche Depots im fertigen System beim Start verfügbar sein sollen, z.B. um einige interne Quellen auszuschließen oder wenn ein lokaler Spiegel beim Erstellen des Wurzeldateisystems benutzt wird.

Abschnittsnamen sind von Groß- und Kleinschreibung unabhängig

Alle Abhängigkeiten werden nur durch Apt unter Benutzung aller Bootstrap-Depots aufgelöst, um nur die neusten und tauglichsten Abhängigkeiten zu benutzen. Beachten Sie, dass Multistrap Installationsempfehlungen ignoriert, so dass ein Paket, das von Multistrap benötigt wird und das nur eine empfohlene Abhängigkeit hat, explizit in der Paketzeile angegeben werden muss. Lesen Sie "Explizite Angabe der Suite", um weitere Informationen über den Erhalt spezieller Pakete von speziellen Suites zu bekommen.

»architecture« und »directory« können auf der Befehlszeile überschrieben werden. Einige andere allgemeine Optionen besitzen auch Befehlszeilenoptionen.

Online examples and documentation

"multistrap" supports a range of permutations, see the wiki and the emdebian website for more information and example configurations:

http://wiki.debian.org/Multistrap

http://www.emdebian.org/multistrap/

"multistrap" includes an example configuration file with a full list of all supported config file options: /usr/share/doc/multistrap/examples/full.conf

Kürzel

Auf eine ähnliche Weise wie "Debootstrap" unterstützt "Multistrap" auf Konfigurationsdateien an bekannten Orten über Kürzel Bezug zu nehmen. Wenn die Option "--shortcut" benutzt wird, wird Multistrap in /usr/share/multistrap und dann in /etc/multistrap.d/ nach Dateien suchen. Dabei wird eine ».conf«-Erweiterung an das angegebene Kürzel angehängt.

Diese beiden Befehle sind gleichwertig:

 $ sudo multistrap -s sid
 $ sudo multistrap -f /usr/share/multistrap/sid.conf

Beachten Sie, dass "Multistrap" auch weiterhin scheitern wird, wenn die Konfigurationsdatei nicht das Verzeichnis oder die Architektur setzt.

Depots

"aptsources" listet die Abschnitte auf, die benutzt werden sollen, um die /etc/apt/sources.list.d/multistrap.list-Apt-Quellen im fertigen System zu erstellen. Nicht alle "aptsources" müssen im Abschnitt "Bootstrap" erscheinen, falls Sie interne oder lokale Quellen haben, die für das installierte Wurzel-Dateisystem nicht verfügbar sind.

"aptsources" listet die Abschnitte auf, die benutzt werden sollen, um Multistrap selbst zu erstellen. Nur Pakete, die in "Bootstrap" aufgelistet sind, werden durch den Multistrap heruntergeladen und entpackt.

Stellen Sie sicher, dass "Bootstrap" alle Abschnitte auflistet, die Sie für Apt benötigen, um in der Lage zu sein alle Pakete zu finden, die für den Multistrap entpackt werden.

(Ältere Versionen von Multistrap unterstützen die gleiche Option unter dem "Debootstrap"-Namen – diese Schreibweise wird immer noch unterstützt, aber neuere Versionen sollten stattdessen "Bootstrap" benutzen.

Allgemeine Einstellungen:

»arch« kann auf der Befehlszeile mit der Option "--arch" überschrieben werden.

»directory« gibt das Verzeichnis auf der obersten Ebene an, auf der der Bootstrap erstellt wird – es wird nicht in ein .tgz gepackt, sobald es vollständig ist.

»bootstrap« listet die Abschnitte auf, die zur Angabe der Pakete benutzt werden, die in den Bootstrap heruntergeladen (und optional entpackt) werden.

»aptsources« listet die Abschnitte auf, die zur Angabe der Apt-Quellen im fertigen System benutzt werden, z.B. falls Sie ein lokales Depot benutzen müssen, um das Wurzeldateisystem zu generieren, das dem Gerät zur Laufzeit nicht zur Verfügung stehen wird, führen Sie den Abschnitt in "bootstrap" auf, aber nicht in "aptsources".

Wenn Sie ein Paket im Wurzel-Dateisystem haben möchten, muss es in der "Bootstrap"-Liste unter »General« aufgelistet sein.

Die Reihenfolge der Abschnittsnamen in beiden Listen ist unwichtig.

If "markauto" is set to true, "multistrap" will request apt to mark all packages specified in the combined "packages" list as manually installed and all dependencies not explicitly listed as automatically installed in the APT extended state database. "markauto" can be used independently of "unpack".

Wie auch Debootstrap wird Multistrap nach Fehlern so lange fortfahren, wie die Konfigurationsdatei korrekt ausgewertet werden kann.

Multistrap implementiert außerdem die Unterstützung für »machine:variant«, die ursprünglich in Emdebian-Crush benutzt wurde, wenngleich in einer anderen Implementierung. Bei Benutzung der stufenförmigen Konfigurationsunterstützung können bestimmte »machine:variant«-Kombinationen durch einfache Änderungen auf der Befehlszeile unterstützt werden.

Wenn "tarballname" auf »true« gesetzt wird, wird das fertige Dateisystem zusätzlich in einen Tarball gepackt.

Beachten Sie, dass Multistrap unbekannte Optionen in der Konfigurationsdatei ignoriert – dies erlaubt sowohl rückwärtskompatibles Verhalten als auch Überladen der Multistrap-Konfigurationsdateien, um andere Werkzeuge zu unterstützen (wie »pbuilder«). Benutzen Sie die Option "--simulate", um die kombinierten Konfigurationseinstellungen zu sehen.

Falls jedoch die Konfigurationsdatei selbst nicht ausgewertet werden kann, wird Multistrap abgebrochen. Prüfen Sie, ob die Konfigurationsdatei in jeder Zeile außer in Kommentaren einen Schlüssel und einen Wert hat. Alle Werte müssen in der gleichen Zeile wie ihr Schlüssel stehen.

Abschnittseinstellungen

 [Debian]
 packages=
 source=http://ftp.uk.debian.org/debian
 keyring=debian-archive-keyring
 suite=jessie

Der Abschnittsname (in »[]«-Klammern) muss in dieser Konfigurationsdatei und in allen Konfigurationsdateien, die in dieser enthalten sind, einmalig sein. Abschnittsnamen sind nicht von Groß- und Kleinschreibung abhängig (alle Vergleiche finden nach der Umwandlung in Kleinschreibung statt).

»packages« ist die Liste der Pakete, die hinzugefügt werden, wenn dieser Abschnitt in "Bootstrap" aufgelistet ist – alle Paketnamen müssen in einer einzigen Zeile aufgeführt sein, sonst scheitert die Auswertung der Datei. Alternativ können Sie Ihre Paketliste in Form mehrerer Gruppen mit Paketen, die auf funktionaler Basis oder Abhängigkeitsbasis unterteilt werden, definieren z.B. base, Xorg, networking etc. und jede Gruppe unter »bootstrap« aufführen.

 bootstrap=base networking
 [base]
 packages=udev mtd-utils
 source=http://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie
 [networking]
 packages=netbase ifupdown iproute net-tools samba
 source=http://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie

Als Sonderfall unterstützt "Multistrap" auch Paketschlüssel pro Abschnitt, einen je Zeile. Andere Schlüssel können nicht auf diese Art wiederholt werden.

 [Emdebian]
 packages=udev mtd-utils netbase ifupdown iproute
 packages=busybox net-tools samba
 source=http://http.debian.net/debian
 keyring=debian-archive-keyring
 suite=jessie

»source« ist die APT-Quelle, die für diesen Abschnitt benutzt wird. Um eine lokale Quelle auf der gleichen Maschine zu benutzen, stellen Sie sicher, dass Sie "copy://" und nicht "file://" benutzen, so dass Apt mitgeteilt wird, dass die Pakete in das Wurzel-Dateisystem kopiert werden müssen, anstatt davon auszugehen, dass sie später herunterladen werden müssen – weil dieses »später« tatsächlich nie stattfinden wird.

»keyring« listet die Pakete auf, die den Schlüssel enthalten, die von den Quellen in diesem Abschnitt benutzt werden. Falls »keyring« nicht angegeben ist, muss die Option "noauth" auf »true« gesetzt sein. Siehe »Secure-Apt«.

»suite« ist die Suite, die von dieser Quelle benutzt wird. Beachten Sie, dass dies die Suite sein sollte, nicht der Codename.

Suites change from time to time: (oldstable, stable, testing, sid) The codename (squeeze, wheezy, jessie, sid) does not change.

Secure-Apt

Um authentifizierte Apt-Depots zu benutzen, muss Multistrap entweder in der Lage sein, ein geeignetes »keyring«-Paket aus den existierenden Apt-Quellen außerhalb der Multistrap-Umgebung in das Zielsystem zu installieren. Leider können keyring«-Pakete nicht aus den in der Multistrap-Konfiguration angegebenen Depots heruntergeladen werden – dies rührt daher, dass "Apt" den »keyring« zur Aktualisierung benötigt bevor Depots benutzt werden können, die vorher unbekannt waren.

Falls relevante Pakete existieren, geben Sie diese in der »keyring«-Option für jedes Depot an. Multistrap wird dann prüfen, ob Apt dieses Paket bereits installiert hat, so dass das Depot authentifiziert wird, bevor Pakete daraus heruntergeladen werden.

Beachten Sie, dass alle Depots, die mit Multistrap benutzt werden, authentifiziert sein müssen, sonst schlägt Apt fehl. Gleichermaßen kann Apt-Secure nur für alle Depots ausgeschaltet werden (durch Benutzen der Befehlszeilenoption --no-auth oder Setzen der Option »noauth« unter [General] in der Konfigurationsdatei), auch wenn nur ein Depot über keinen geeigneten »keyring« verfügt.

Die »keyring«-Pakete werden außerdem innerhalb der Multistrap-Umgebung installiert, um für die installierten Apt-Quellen für Multistrap passend zu sein.

Status

Multistrap ist zustandslos – falls das Verzeichnis existiert, wird es einfach normal weitermachen und Apt wird nicht versuchen fortzufahren, wo es aufgehört hat.

Konfiguration des Wurzel-Dateisystems

Multistrap entpackt die heruntergeladenen Pakete, aber andere Stufen der Systemkonfiguration werden nicht durchgeführt. Enthaltene Beispiele:

 /etc/inittab
 /etc/fstab
 /etc/hosts
 /etc/securetty
 /etc/modules
 /etc/hostname
 /etc/network/interfaces
 /etc/init.d
 /etc/dhcp3

Jegliche gerätespezifischen Geräteknoten müssen außerdem unter Benutzung von MAKEDEV oder "device-table.pl" erstellt werden – einem Hilfsskript, das mit MAKEDEV-Problemen umgehen kann. device-table.pl benötigt eine Gerätetabellendatei nach dem Vorbild derjenigen im Quellpaket »mtd-utils«. Siehe /usr/share/doc/multistrap/examples/device_table.txt

Sobald Multistrap die das grundsätzliche Datei- und das Verzeichnislayout erfolgreich erstellt hat, werden andere gerätespezifische Skripte benötigt, bevor das Dateisystem entpackt und auf dem Zielgerät installiert werden kann.

Sobald sie installiert sind, müssen die Pakete selbst unter Benutzung der Paketbetreuerskripte und "dpkg --configure -a" konfiguriert werden, außer wenn dies ein nativer Multistrap ist.

Damit "Dpkg" funktioniert, müssen /proc und /sysfs eingehängt (oder einhängbar) sein, /dev/pts wird ebenfalls empfohlen.

Siehe auch: http://wiki.debian.org/Multistrap

Umgebung

Um die entpackten Pakete (ob im nativen oder Kreuzmodus) zu konfigurieren, werden bestimmte Umgebungsvariablen benötigt:

Debconf muss mitgeteilt werden, dass eine Interaktion mit dem Benutzer nicht erwünscht ist:

 DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true

Perl muss mitgeteilt werden, dass es ohne Beschwerde akzeptieren soll, dass innerhalb der Chroot keine Locales verfügbar sind.

 LC_ALL=C LANGUAGE=C LANG=C

Dann können die Pakete von Dpkg konfiguriert werden:

Chroot-Methode (PFAD = Oberstes Verzeichnis der Chroot):

 DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
 LC_ALL=C LANGUAGE=C LANG=C chroot /PATH/ dpkg --configure -a

in einer Anmelde-Shell:

 # export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
 # export LC_ALL=C LANGUAGE=C LANG=C 
 # dpkg --configure -a

(Wie oben bereits erwähnt erfordert Dpkg, dass /proc und /sysfs zuerst eingehängt werden.)

Nativer Modus – Multistrap

Multistrap war nicht für native Unterstützung gedacht, es wurde entwickelt für Unterstützung über Architekturgrenzen hinweg. Um mehrere Depots benutzen zu können, entpackt Multistrap lediglich die von Apt ausgewählten Pakete.

Im nativen Modus werden wahrscheinlich verschiedene Operationen benötigt, die Multistrap vorausgehen müssen; dies würde Debootstrap alles für Sie erledigen:

 1. Kopieren von /etc/hosts in den Chroot
 2. Bereinigen der Umgebung, so dass LANGUAGE, LC_ALL und LANG geleert
    werden, um störende Perl-Warnungen unterdrücken, die andere Fehler
    verschleiern könnten.

(Eine Alternative zum Leeren der Lokalisierungsvariablen ist es, Locales zu Ihrer Multistrap-Konfigurationsdatei in der »packages«-Option hinzuzufügen.

Ein natives Multistrap kann direkt mit Chroot benutzt werden, so dass "Multistrap" am Ende des Multistrap-Prozesses "dpkg --configure -a" ausführt, falls die Option ignorenativearch nicht im Abschnitt General der Konfigurationsdatei auf »true« gesetzt ist.

Daemons in Chroots

Abhängig davon, welches System Sie benutzen, um Pakete für "Multistrap" bereitzustellen, sollten native Chroots Daemons nicht erlauben innerhalb des Chroots zu starten. Benutzen Sie als Ihr "Einrichtungsskript" /usr/share/multistrap/chroot.sh oder fügen Sie dieses Skript in Ihr eigenes Einrichtungsskript ein.

 setupscript=/usr/share/multistrap/chroot.sh

chroot.sh meistert Systeme, die sysvinit and upstart benutzen.

Siehe auch

 http://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt

Stufenförmige Konfiguration

Damit Multistrap mehrere Varianten der (üblichen) Basiskonfiguration unterstützt, erlauben es die Konfigurationsdateien von "Multistrap", andere (allgemeinere) Konfigurationsdateien einzuschließen, z.B. wird die ausführlichere/speziellere Konfigurationsdatei auf der Befehlszeile angegeben und diese Datei enthält eine andere Datei, die sie sich mit anderen Konfigurationen teilt.

Basisdatei:

 /usr/share/multistrap/crosschroot.conf

Variationen:

 /usr/share/multistrap/armel.conf

Wenn Sie nur die Datei »armel.conf« angeben, wird der Rest der Einstellungen von »crosschroot.conf« abgefragt, so dass übliche Änderungen nur in einer einzelnen Datei vorgenommen werden müssen.

Es wird dringend empfohlen, dass jegliche Änderungen an den beteiligten Konfigurationsdateien in jeder Stufe mit der Option "--simulate" für Multistrap getestet werden, was eine Zusammenfassung der Optionen ausgibt, die gesetzt werden, wenn die Kaskade komplett ist. Beachten Sie, dass Multistrap Sie nicht warnt, falls eine Konfigurationsdatei eine unbekannte Option enthält (für zukünftige Konfigurationen mit Backport-Konfigurationen), so dass ein einfacher Tippfehler dazu führen kann, dass Optionen nicht gesetzt werden.

»Machine:variant«-Unterstützung

Die alten »packages.conf«-Variablen von Emsandbox können alle in Multistrap-Konfigurationsvariablen umgewandelt werden. Die »Machine:variant«-Unterstützung in "Multistrap" konzentriert sich auf die Skripte config.sh und setup.sh

Anmerkung: Die Unterstützung für »machine:variant« wird wahrscheinlich durch die nachfolgend beschriebene Hook-Funktionalität ersetzt

Sobald "Multistrap" die heruntergeladenen Pakete entpackt hat, kann "setup.sh" unter der Angabe des Ortes und der Architektur aufgerufen werden, so dass andere Feineinstellungen ihren Platz einnehmen können. In diesem Schritt dürfen keine Operationen innerhalb des Wurzeldateisystems einer fremden Architektur versuchen, irgendwelche Programme innerhalb des Wurzeldateisystems auszuführen. Als letzter Schritt des Multistrap-Prozesses wird "config.sh" in das Wurzelverzeichnis des Wurzeldateisystems kopiert.

Ein Vorteil bei der Benutzung der »Machine:variant«-Unterstützung ist es, dass das vollständige Wurzeldateisystem mit einem einzigen Aufruf von Multistrap verwaltet werden kann – dies ist nützlich, wenn Wurzeldateisysteme im Bereich des Anwenders (»Userspace«) erstellt werden.

Um »Machine:variant«-Unterstützung zu aktivieren, geben Sie den Pfad zu den Skripten, die ausgeführt werden sollen, in der Variant-Konfigurationsdatei (Abschnitt »General«) an:

 [General]
 include=/path/to/general.conf
 setupscript=/path/to/setup.sh
 configscript=/path/to/config.sh

Ensure that both the setupscript and the configscript are executable or "multistrap" will ignore the script.

Example configscript.sh
 #!/bin/sh
 
 set -e
 
 export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
 export LC_ALL=C LANGUAGE=C LANG=C
 /var/lib/dpkg/info/dash.preinst install
 dpkg --configure -a
 mount proc -t proc /proc
 dpkg --configure -a
 umount /proc

For more information, see the Wiki: http://wiki.debian.org/Multistrap

Mounting /dev and /proc for chroot configuration
/proc can be mounted inside the chroot, as above:

 mount proc -t proc /proc

However, /dev should be mounted from outside the chroot, before running any "configscript.sh" in the chroot:

 cd /path/chroot/
 sudo tar -xzf /path/multistrap.tgz
 sudo mount /dev -o bind ./dev/
 sudo chroot . ./configscript.sh || true

Paketauswahl einschränken

"Multistrap" schließt standardmäßig benötigte Pakete ein, die aktuelle Liste der Pakete auf Ihrer eigenen Maschine kann angesehen werden unter Benutzung von:

 grep-available  -FPriority 'required' -sPackage

(Die aktuelle Liste wird aus der heruntergeladenen Datei Packages berechnet und kann sich von der Ausgabe von "grep-available" unterscheiden.)

Falls die Option OmitRequired auf »true« gesetzt ist, werden diese Pakete nicht hinzugefügt – obwohl diese Option nützlich ist, kann sie zu einem unbrauchbaren Wurzeldateisystem führen. Nur manuell in den Konfigurationsdateien angegebenen Pakete werden in den Berechnungen benutzt – Abhängigkeiten dieser Pakete werden hinzugefügt, aber keine anderen.

Pakete mit »Priority: important« hinzufügen

"Multistrap" kann "Debootstrap" imitieren, indem es automatisch alle Pakete aus allen Abschnitten hinzufügt, bei denen die heruntergeladene Datei Packages das Paket mit »Priority: important« auflistet. Standardmäßig werden solche Pakete nicht hinzugefügt, sofern sie nicht einzeln in einer "packages="-Option eingefügt werden, die in einem angegebenen Abschnitt in der "Bootstrap"-Option [General] angegeben ist. Um all diese Pakete hinzuzufügen, setzen Sie die Option »addimportant« im Abschnitt [General] auf »true«.

 addimportant=true

»Priority: important« kann nur für alle Abschnitte funktionieren, die in der Option "bootstrap" aufgelistet sind. Dies kann Verwirrung stiften, wenn Suites gemixt werden.

Es ist nicht möglich »addimportant« und »omitrequired« in der gleichen Konfiguration einzuschalten. "Multistrap" wird mit Fehlercode 7 beendet, falls sowohl irgendwelche Konfigurationsergebnisse in »addimportant« als auch in »omitrequired« auf »true« gesetzt sind. (Dies beinhaltet die Auswirkungen vom Einschluß anderer Konfigurationsdateien.)

Empfohlenes Verhalten

Das Debian-Standardverhalten nach der Veröffentlichung von Lenny war es, empfohlene Pakete als zusätzliche Pakete zu berücksichtigen, die installiert werden, wenn irgendein Paket ausgewählt ist. Empfohlene Pakete sind solche, von denen der Paketbetreuer annimmt, dass dieses Paket auf den "meisten" Installationen vorhanden wäre und erlauben von Empfehlungen bedeutet erlaubte Empfehlungen empfohlener Pakete usw.

Standardmäßig sind Empfehlungen in Multistrap AUSgeschaltet.

Setzen Sie die Option »allowrecommends« ist im Abschnitt »General« »true«, um typisches Debian-Verhalten zu bekommen.

Standardveröffentlichung

"multistrap" supports an option to explicitly set the default release to use with apt: "aptdefaultrelease". This determines which release apt will use for the base system packages and is not the same as pinning (which relates to the use of apt after installation). Multistrap sets the default-release to the wildcard * unless a release is named in the "aptdefaultrelease" field. Any release specified here must also be defined in a stanza referenced in the bootstrap list or apt will fail.

To install a specific version of a package from a newer release than the one specified as default, "explicitsuite" must also be set to true if the package exists at any version in the default release. Also, any packages upon which that package has a strict dependency (i.e. = rather than >=) must also be explicitly added to the packages line in the stanza for the desired version, even though that package does not need to be listed to get it from the default release. This is typical apt behaviour and is not a bug in multistrap.

The combination of default release, explicit suite and apt preferences can quickly become complex and bugs can be very hard to identify. "multistrap" always outputs the complete apt command line, so test this command yourself (using the files written out by "multistrap") to see what is going on. Remember that all dependency resolution and all the logic to determine which version of a specific package gets installed in your "multistrap" chroot is entirely down to apt and all "multistrap" can do is pass files and command line options to apt.

See also: apt preferences.

Explizite Angabe der Suite

Manchmal soll Apt mitgeteilt werden, dass ein bestimmtes Paket aus einer bestimmten Suite empfangen werden soll, während dabei eine aktuellere Version in einer anderen Suite derselben Quellenzusammenstellung ignoriert wird.

"Multistrap" kann mit oder ohne expliziter Suite-Option arbeiten, standardmäßig wird Apt die aktuellste Version aus der Sammlung angegebener Bootstrap-Quellen benutzen.

Die explizite Angabe der Suite hat keine Auswirkung auf das fertig installierte System – falls Ihre »aptsources« ein Depot enthalten, das wiederum eine neuere Version des/der angegebenen Paket(s) explizit enthält, wird das nächste "apt-get upgrade" auf dem Gerät zu einer neueren Version führen.

Außerdem wird Apt, wenn Pakete von einer speziellen Suite angegeben sind, auch versuchen und sicherstellen, dass die Abhängigkeiten für dieses Paket von der gleichen Suite stammen und dies kann der Grund sein, dass die Abhängigkeiten für dieses Paket von der gleichen Suite stammen; dies kann jedoch auch der Grund sein, warum apt nicht die komplette Zusammenstellung von Abhängigkeiten auflösen kann. In einer solchen Situation könnte es erforderlich sein, wenn Sie explizit ein Paket auswählen, dass Sie auch bei den abhängigen Paketen (nicht notwendigerweise allen) eine explizite Auswahl treffen müssen.

Wenn Sie »explicitsuite« benutzen, müssen Sie beim Gebrauch von »stable-proposed-updates« oder anderen temporären Orten achtsam sein – falls das Paket in eine andere Suite migriert und aus der temporären Suite entfernt wird (wie mit *-proposed-updates), wird Multistrap das Paket nicht mehr finden.

Es kann sehr schwierig sein, die explizite Behandlung der Suite richtig hinzukriegen. Im Allgemeinen ist es das Beste, eine kleine Bootstrap-Chroot Ihrer ursprünglichen Architektur zu erstellen, dann ein Chroot dort hinein vorzunehmen, die nötigen APT-Quellen hinzuzufügen und herauszufinden, welche Befehle nötig sind, um den korrekten Mix von Programmen zu bekommen. Vermeiden Sie die explizite Angabe von Versionen, um Probleme aus der Welt zu schaffen, die nur mit Suites funktionieren. Hier könnten APT-Preferences und Pinning nützlich sein, siehe APT-Preferences.

APT-Preferences

Falls eine geeignete Datei in der Option aptpreferences des Abschnitts General in der Konfigurationsdatei aufgeführt ist, wird diese Datei vor der ersten Verwendung in das APT-Preferences-Verzeichnis des Bootstraps kopiert.

Wenn eine APT-Preferences-Datei bereitgestellt ist, wird das "Vorgabeveröffentlichungs"verhalten von "multistrap" deaktiviert.

Wie auch bei anderen externen Skripten und Dateien liegt der Inhalt der APT-References-Datei jenseits des Geltungsbereichs dieser Handbuchseite. "Multistrap" versucht nicht, die bereitgestellte Datei zu überprüfen, außer, das esnsicherstellt, dass sie gelesen werden kann.

»deb-src«-Auflistungen werden ausgelassen

Einige Multistrap-Umgebungen benötigen keinen Zugriff auf die Debian-Quellen installierter Pakete, normalerweise ist dies nötig, wenn die Erstellung (oder Kreuzerstellung »cross build«) eines Chroot unter Benutzung von Multistrap vorbereitet wird.

Um diese zusätzliche Quelle auszuschalten (und sowohl Zeit zum Herunterladen als auch »Apt-Cache«-Größe zu sparen), benutzen Sie das Feld »omitdebsrc« in jedem Abschnitt.

 [Baked]
 packages=
 source=http://www.emdebian.org/baked
 keyring=emdebian-archive-keyring
 suite=testing
 omitdebsrc=true

»omitdebsrc« ist nötig, wenn Pakete von Debian-Portierungen benutzt werden, bei denen Pakete keine Quellen außer »unreleased« haben.

fakeroot

Bootstraps für fremde Architekturen können unter "Fakeroot" arbeiten ("Multistrap" wurde entworfen, um soviel wie möglich in einem einzigen Aufruf zu erledigen, um dies einfacher zu machen), aber die bei einem nativen Architektur-Bootstrap verwendete Konfigurationsstufe erfordert "Chroot", und "Chroot" seinerseits funktioniert nicht unter "Fakeroot".

Daher wird die Konfiguration im nativen Modus mit einer Warnmeldung übersprungen, falls "Multistrap" feststellt, dass "Fakeroot" gerade benutzt wird.

Das gleiche Problem betrifft "apt-get install" und daher wird die Installation des Pakets »keyring« auf dem Host-System ebenfalls übersprungen, falls Fakeroot erkannt wird.

Handhabung problematischer Pakete

Manchmal schlägt sogar das korrekte Entpacken eines bestimmten Paketes fehl, falls ein anderes Paket nicht bereits entpackt wurde. Dies kann vorkommen, falls Dpkg-Umlenkungen nicht korrekt eingerichtet sind oder wenn das Paket vorher von einer ausführbaren Datei in einem anderen Paket abhängt.

Multistrap bietet zwei Möglichkeiten diese Probleme zu handhaben. Ein Paket kann als "reinstall" oder "additional" aufgeführt werden. Jeder Abschnitt in der Konfigurationsdatei von "Multistrap" kann eine einzelne "reinstall"- oder "additional"-Auflistung haben oder beide.

»reinstall« bedeutet, dass das Paket wie üblich heruntergeladen und entpackt wird – zusammen mit allen anderen Paketen, aber es wird dann am Ende durch Ausführen des Betreuerskripts "preinst" mit dem Argument "upgrade" neu installiert. "Dpkg" wird dann mit dem Rest der Konfiguration des Pakets fortfahren.

»Additional« fügt dem Multistrap-Prozess eine zweite Runde von "apt-get install" hinzu – nach dem Entpacken am Anfang. Das zusätzliche Paket wird dann heruntergeladen und entpackt. Falls es im ursprünglichen Zustand ausgeführt wird, wird das zusätzliche Paket heruntergeladen, entpackt und konfiguriert, nachdem alle anderen Pakete heruntergeladen, entpackt und konfiguriert wurden.

Weder "reinstall" noch "additional" sollten als mehr als nur Notlösungen betrachtet werden und es sollten in Debian »wishlist«-Fehler an Pakete gesandt werden, die diesen Mechanismus nutzen (oder die Pakete, die das spezielle Paket am normalen Funktionieren hindern würden).

Debconf-Voreinstellungen

Das Hinzufügen einer Debconf-Voreinstellung kann bei der Konfiguration von Paketen für eine bestimmte Einstellung an Stelle der Paketvorgaben helfen, wenn die Konfiguration nicht interaktiv abläuft. Informationen wie Voreinstellungsdateien erstellt werden, finden Sie unter http://www.debian-administration.org/articles/394.

Sie können mehrere Voreinstellungsdateien über das Feld »debconfseed« im Abschnitt [General], getrennt durch Leerzeichen angeben:

 debconfseed=seed1 seed2

Files which do not exist or which cannot be opened will be silently ignored. Check the results of the parsing using the "--simulate" option to "multistrap". The preseeding files will be copied to a preseed directory in /tmp inside the rootfs.

To use the preseeding, add a section to the configscript.sh, prior to any calls to dpkg --configure -a. e.g. :

 #!/bin/sh
 
 set -e
 
 export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
 export LC_ALL=C LANGUAGE=C LANG=C
 if [ -d /tmp/preseeds/ ]; then
    for file in `ls -1 /tmp/preseeds/*`; do
    debconf-set-selections $file
    done
 fi
 dpkg --configure -a

Hooks

If a hook directory (hookdir=) is specified in the General section of the "multistrap" configuration file, the hook scripts which are executable will be run from outside the multistrap directory at the following stages:
Download-Hooks
wird vor dem Entpacken durchgeführt, sofort nachdem die Pakete heruntergeladen wurden. Download-Hooks sind ausführbare Skripte im angegebenen Hook-Verzeichnis, deren Dateiname mit download beginnt.
native hooks
Native Hook-Skripte werden nur im nativen Modus ausgeführt, unmittelbar bevor die Konfiguration der heruntergeladenen Pakete beginnt und erneut nach der Fertigstellung der Paket-Konfiguration. Native Hooks werden den absoluten Pfad, den derzeitigen Prozessstatus, Start oder Ende abfragen.

Native Skripte sind ausführbare Skripte im angegebenen Hook-Verzeichnis, deren Dateiname mit native beginnt.

Completion-Hooks
werden unmittelbar vor der Erstellung des Tarballs ausgeführt oder wenn "Multistrap" beendet wird, falls die Erstellung keines Tarballs konfiguriert wurde.

Completion scripts are executable scripts in the specified hook directory with a filename beginning with completion.

Hooks wird der absolute Pfad zum Verzeichnis übergeben, das das Wurzelverzeichnis des Chroot oder Multistrap-Systems sein wird. Hooks, die nicht mittels Realpath aufgelöst werden können oder die nicht ausführbar sind, werden ignoriert.

Alle Hooks eines Typs werden vor dem Ausführen alphabetisch sortiert.

Beachten Sie, dass "Multistrap" im Fehlerfall die Auswirkungen von Hooks nicht ungeschehen machen kann. "Multistrap" wird jedoch die angesammelten Fehler als Warnungen ausgeben. Falls ein Hook mit einem Fehlercode ungleich Null beendet wird, wird der Exit-Wert in eine positive Zahl umgewandelt, zur Anzahl der gesamten Warnungen hinzuaddiert und am Ende der Operation ausgegeben.

Ausgabe

"Multistrap" kann viele Ausgaben erzeugen – informative Nachrichten erscheinen auf der Standardausgabe, Fehler und Warnungen auf der Standardfehlerausgabe. Aufrufe von "Apt" und "Dpkg" folgen dem gleichen Muster, daher ist es einfach, falls gewünscht, die kombinierte Ausgabe von "Multistrap" auf reine Fehler zu kürzen.

"Multistrap" sammelt Fehlerstati von nicht fatalen Prozessen innerhalb der Operation und gibt diese Warnungen sowohl auf der Standardfehlerausgabe als auch am Ende als kumulierte Fehleranzahl aus. Dies schließt Hooks ein, die Exit-Werte ungleich Null ausgeben.

Fehler

Da "Multistrap" immer komplexer wird, werden sich Fehler in das Paket einschleichen. Bitte berichten Sie alle Fehler mit der Werkzeug "Reportbug" an die Debian-Fehlerdatenbank. Hängen Sie bitte alle Konfigurationsdateien an. Falls Ihre Konfiguration Zugriff auf lokale oder private Apt-Depots erfordert, überprüfen Sie Ihre Konfiguration mit der letzten Version von "Multistrap" in Debian. Benutzen Sie die Option "--simulate" und fügen Sie deren Bericht in Ihren Fehlerbericht ein.

Die Ausgabe der Option "--simulate" wird regelmäßig expandiert, um Anwendern bei der Fehlersuche in Konfigurationsdateien zu helfen.

Bitte prüfen (und aktualisieren) Sie das Multistrap-Wiki unter http://wiki.debian.org/Multistrap und den Inhalt der Web-Seite unter http://www.emdebian.org/multistrap/ bevor Sie Fehlerberichte einreichen. Außerdem können mehrere Leute auf der Mailingliste [email protected] und dem IRC-Kanal #emdebian auf irc.oftc.net helfen, falls Ihre Konfigurationsdatei nicht korrekt ausgewertet wird. Würden Sie die Ausgabe von "--simulate" auf eine Pastebin-Website ablegen und in Ihrer Nachricht die URL angeben.

Multiarch-Unterstützung

Multiarch-Unterstützung ist experimentell – bitte melden Sie Probleme und Dateifehler mit vollständigen Einzelheiten Ihrer Einrichtung, der vollständigen Konfigurationsdatei und gemeldeten Fehlern.

"Multistrap" setzt die existierende Multiarch-Unterstützung des externen Systems außer Kraft, so dass ein System, das Multiarch kennt, immer noch eine Nicht-Multiarch-Chroot aus Depots erstellen kann, die nicht alle durch das externe Dpkg unterstützten Architekturen unterstützen.

Falls Multiarch innerhalb der Multiarch-Chroot aktiviert ist, fertigt "Multistrap" die Liste in /var/lib/dpkg/arch innerhalb der Chroot aus.

Geben Sie die Option für mehrere Architekturen einmal an und benutzen Sie eine durch Kommas getrennte Liste für die Architekturen. Stellen Sie sicher, dass Sie diejenige einbeziehen, die die Host-Architektur der Chroot sein wird.

Siehe auch: http://wiki.debian.org/Multiarch/

 [General]
 ...
 multiarch=i386 armel armhf

Jeder Abschnitt wird Pakete von der Basisarchitektur installieren, es sei denn, für spezielle Abschnitte ist die Option "Architecture" angegeben.

 [Foreign]
 packages=libgcc1 libc6
 architecture=armel
 source=http://ftp.uk.debian.org/debian
 keyring=debian-archive-keyring
 suite=sid

In der Ausgabe von "--simulate" werden die in der Option MultiArch angegebenen Architekturen unter der Auflistung »Fremde Architekturen« aufgeführt. Pakete für eine besondere Architektur werden als der Paketname, gefolgt von einem Doppelpunkt, gefolgt von der Architektur aufgelistet.

 libgcc1:armel libc6:armel