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.
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.
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
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¶
Falls Ihr System eine Standardveröffentlichung für APT angibt, kann
dies Probleme verursachen, wenn Sie versuchen, einen Bootstrap zu erstellen,
der die Vorgabesuite nicht enthält. Dem setzt "Multistrap"
einen Platzhalter für die Standardveröffentlichung innerhalb des
Bootstraps entgegen. Siehe auch: 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
Dateien, die nicht existieren oder nicht geöffnet werden können,
werden stillschweigend ignoriert. Prüfen Sie die Ergebnisse der
Auswertung, indem Sie die Option "--simulate" von
"Multistrap" verwenden.
Hooks¶
Falls ein Hook-Verzeichnis im Abschnitt [General] der
"Multistrap"-Konfigurationsdatei angegeben wurde, werden die
Hook-Skripte, die ausführbar sind, außerhalb des
Multistrap-Verzeichnisses auf den folgenden Stufen ausgeführt:
- 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-Skripte sind ausführbare Skripte im angegebenen
Hook-Verzeichnis, deren Dateiname mit completion beginnt.
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,
libgcc1:armel libc6:armel