Provided by: multistrap_2.2.10_all 

NAME
multistrap - 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 debian-embedded@lists.debian.org 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
perl v5.28.0 2018-11-21 MULTISTRAP(1)