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=lenny
Dies wird zu einem völlig normalen Bootstrap von Debian-Lenny vom
angegebenen Spiegel für Armel in »/opt/multistrap/«
führen. (Diese Konfiguration wurde im Paket als
/usr/share/multistrap/lenny.conf beibehalten.)
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=lenny
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://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
[networking]
packages=netbase ifupdown iproute net-tools samba
source=http://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
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://www.emdebian.org/grip
keyring=emdebian-archive-keyring
suite=lenny
»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 ändern sich von Zeit zu Zeit: (Oldstable, Stable, Testing, Sid).
Der Codename (Etch, Lenny, Squeeze, Sid) ändert sich nicht.
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 diese Unterstützung in Lenny benutzt wird, stellen Sie sicher, dass
in jedem Abschnitt im Konfigurationselement "Suite" die Suite
benutzt wird (Oldstable, Stable, Testing, Sid) und
nicht die Codenamen
(Etch, Lenny, Squeeze, Sid) in dem Konfigurationselement "Suite", da
die Version von Apt in Lenny und früher den Codenamen nicht benutzen
kann.
Für einen Test unter Lenny probieren Sie:
$ sudo apt-get install apt/stable
Vergleichen Sie mit
$ sudo apt-get install apt/lenny
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