Provided by: schroot_1.6.13-2_amd64 bug

BEZEICHNUNG

       schroot - häufig gestellte Fragen

BESCHREIBUNG

       Diese   Handbuchseite   deckt   viele   verschiedene  häufig  gestellte  Fragen  über  die
       Konfiguration und Benutzung von Schroot ab.

KONFIGURATION

   Warum überschreibt Schroot Konfigurationsdateien in der Chroot?
       Standardmäßig  kopiert  Schroot  die  NSS-Datenbanken  des  Systems  (»passwd«,  »shadow«,
       »group«,  »gshadow«,  »services«, »protocols«, »networks« und »hosts«, etc.) in die Chroot
       hinein. Der Grund dafür ist, dass die Chroot-Umgebung kein  vollständig  separates  System
       ist  und  es  durch  das  Kopieren  synchron  gehalten  wird.  Dies ist jedoch nicht immer
       erwünscht, insbesondere, wenn ein Paket in die Chroot installiert wird, das Systembenutzer
       und  Gruppen  erzeugt, die auf dem Wirtsystem nicht vorhanden sind, da diese beim nächsten
       Herüberkopieren der Datenbanken verschwinden werden.

       Die hier vorgeschlagene Behelfslösung besteht darin, das Kopieren zu  deaktivieren,  indem
       der   Schlüssel   setup.nssdatabases   in   schroot.conf   geleert   wird.   In   früheren
       Veröffentlichungen von Schroot wurde dies durch Auskommentieren der Datei NSSDATABASES für
       die  Chroot  erreicht (standardmäßig /etc/schroot/default/config). Die Datenbankliste kann
       ebenfalls durch Bearbeiten der Datei angepasst  werden,  die  die  Datenbankliste  enthält
       (standardmäßig /etc/schroot/default/nssdatabases.

       In   Zukunft   wird   an   einem   besseren   Schema   gearbeitet,  um  die  Rechner-  und
       Chroot-Datenbanken synchron zu halten. Es kann Einträge zusammenführen, anstatt die  ganze
       Datenbank zu überschreiben, wodurch Chroot-spezifische Änderungen erhalten bleiben.

   Soll ich einen einfachen oder einen Verzeichnis-Chroot-typ verwenden?
       Diese  beiden  Chroot-Typen  sind  im  Grunde identisch, da sie beide nur Verzeichnisse im
       Dateisystem sind. »plain« ist sehr einfach und führt keine Einrichtungsaufgaben durch. Der
       einzige  Grund,  aus dem Sie es möglicherweise verwenden würden, ist, wenn Sie ein Upgrade
       eines Programms wie dchroot(1) oder chroot(8) durchführen, das  nichts  anderes  tut,  als
       einen  Befehl  oder  eine  Shell  in  einem  Verzeichnis  ausführen.  Demgegenüber  führen
       Verzeichnis-Chroots Einrichtungsskripte aus, die zusätzliche  Dateisysteme  einhängen  und
       andere Einrichtungsaufgaben erledigen können.

FORTGESCHRITTENE KONFIGURATION

   Was sind Schnappschüsse und Unions?
       Einige  Chroot-Typen  unterstützen  das Klonen. Das heißt, dass Sie, wenn Sie eine Sitzung
       starten, eine Kopie der Chroot erhalten, die  nur  während  der  Lebensdauer  der  Sitzung
       besteht. Dies ist nützlich, wenn Sie vorübergehend eine saubere Kopie des Systems für eine
       einzelne Aufgabe möchten, die dann automatisch gelöscht wird, wenn Sie damit fertig  sind.
       Die  Debian-Paketbau-Dæmons  führen  zum Beispiel sbuild(1) aus, um Debian-Pakete zu bauen
       und dieses Programm verwendet Schroot, um eine saubere  Bau-Umgebung  für  jedes  einzelne
       Paket  zu  erstellen. Ohne Schnappschüsse müsste die Chroot am Ende jedes Bauens auf ihren
       Anfangszustand zurückgesetzt  werden,  um  für  das  nächste  bereit  zu  sein  und  jedes
       zurückgelassene  Überbleibsel  vom Entfernen des Pakets oder früherem Bauen könnte mit dem
       nächsten Bauen wechselwirken.

       Die am häufigsten benutzte Methode zum Erstellen von Schnappschüssen  ist  die  Verwendung
       von  LVM-Schnappschüssen  (Chroot-Typ  »lvm-snapshot«). In diesem Fall muss die Chroot auf
       einem logischen LVM-Laufwerk (LV) existieren. Schnappschüsse eines LV können  während  der
       Sitzungseinrichtung  mit  lvcreate(8) erstellt werden. Diese verbrauchen jedoch viel Platz
       auf  der  Platte.  Eine  neuere  Methode  ist  die  Verwendung  von  Btrfs-Schnappschüssen
       (Chroot-Typ   »btrfs-snapshot«),   die   viel   weniger   Plattenplatz   beanspruchen  und
       zuverlässiger als LVM-Schnappschüsse sind. Btrfs ist allerdings immer noch  experimentell,
       aber es besteht die Hoffnung, dass es die empfohlene Methode wird, wenn es reift.

       Unions  sind  eine  Alternative zu Schnappschüssen. In dieser Situation wird, anstatt eine
       Kopie des Chroot-Dateisystems zu erstellen, ein  vorübergehendes  Schreib-/Lesedateisystem
       oben auf das Chroot-Dateisystem gelegt, so dass Änderungen im darüberliegenden Dateisystem
       gespeichert werden und das Original-Chroot-Dateisystem unberührt bleibt. Der  Linux-Kernel
       muss  erst  die  Unterstützung  von  Union-Dateisystemen wie Aufs und Unionfs integrieren,
       daher sind LVM-Schnappschüsse derzeit immer noch die empfohlene Methode.

AUFRUF

   Wie kann ich Dæmons in einer Chroot ausführen?
       Ein häufiges Problem beim Versuch einen Dæmon in einer Chroot auszuführen  ist,  dass  Sie
       bemerken,  dass  er  gar  nicht  läuft. Typischerweise wurde der Dæmon kurz nach dem Start
       gekillt.

       Wenn Schroot ausgeführt wird, startet es eine Sitzung, führt den angegebenen  Befehl  oder
       die  Shell  aus,  wartet  auf  das Beenden des Befehls oder der Shell und beendet dann die
       Sitzung. Für einen normalen Befehl oder eine  Shell  funktioniert  das  sehr  gut.  Dæmons
       starten  normalerweise  jedoch  im Hintergrund und lösen sich vom steuernden Terminal. Sie
       tun  dies,  indem  sie  sich  zweimal  verzweigen  und  den  Elternprozess  enden  lassen.
       Unglücklicherweise  bedeutet  dies,  dass  Schroot  das Beenden des Programms bemerkt (der
       Dæmon ist ein verwaister Enkel dieses Prozesses) und dann die Sitzung  beendet.  Teil  des
       Beendens  der  Sitzung ist das Killen aller Prozesse, die innerhalb der Chroot laufen, was
       wiederum bedeutet, dass der Dæmon beim Beenden der Sitzung gekillt wird.

       Als Folge davon ist es nicht möglich, einen Dæmon  direkt  mit  Schroot  auszuführen.  Sie
       können  es  dennoch  tun, wenn Sie eine Sitzung mit --begin-session erstellen und dann den
       Dæmon mit --run-session ausführen. Es liegt dann in Ihrer Verantwortung, die  Sitzung  mit
       --end-session  zu  schließen,  wenn  der  Dæmon  beendet  wurde  und  Sie ihn nicht länger
       benötigen.

   Wie kann ich eine kaputte Sitzung von Hand aufräumen?
       Gelegentlich kann es nötig sein, Sitzungen von Hand  aufzuräumen.  Falls  sich  etwas  auf
       Ihrem System ändert, das ein Fehlschlagen des Einrichtungsskripts beim Beenden der Sitzung
       zur  Folge  hat,  zum  Beispiel  das  Entfernen  einer   benötigten   Datei   oder   eines
       Verzeichnisses, ist es Schoot möglicherweise nicht möglich, alles automatisch aufzuräumen.
       Für   jedes   im   Abschnitt    »Sitzungsverzeichnisse«    in    schroot(1)    aufgeführte
       Sitzungsverzeichnis  müssen  alle  Dateien  mit dem Namen der Sitzungskennung gelöscht und
       alle Verzeichnisse mit  dem  Namen  der  Sitzungskennung  ausgehängt  (falls  es  darunter
       eingehängte Dateisysteme gibt) und dann auch gelöscht werden.

       Um zum Beispiel die Sitzung mit Namen meine-Sitzung von Hand zu entfernen:

       •      die Konfigurationsdatei der Sitzung entfernen
              % rm /var/lib/schroot/session/meine-Sitzung↵

       •      auf eingehängte Dateisysteme prüfen
              % /usr/lib/x86_64-linux-gnu/schroot/schroot-listmounts -m \
                /var/run/schroot/mount/meine-Sitzung↵

       •      eingehängte Dateisysteme aushängen

       •      /var/run/schroot/mount/meine-Sitzung entfernen

       •      dies     für     andere    Verzeichnisse    wie    /var/lib/schroot/union/underlay,
              /var/lib/schroot/union/overlay und /var/lib/schroot/unpack wiederholen

       HINWEIS: Entfernen Sie keine Verzeichnisse,  ohne  zu  prüfen,  ob  darunter  irgendwelche
       Dateisysteme  eingehängt  sind, da Dateisysteme wie /home immer noch mit der Option »bind«
       eingehängt sein könnten. Dies dennoch zu tun, könnte zum Verlust unwiederbringlicher Daten
       führen.

FORTGESCHRITTENE BENUTZUNG

   Wie verwende ich Sitzungen?
       Im normalen Betrieb führen Sie einen Befehl ähnlich diesem aus:
       % schroot -c squeeze -- Befehl↵

       Dadurch  würde  der  Befehl Befehl in der Chroot squeeze ausgeführt. Während es hier nicht
       offensichtlich ist, dass eine Sitzung  benutzt  wird,  unternimmt  Schroot  die  folgenden
       Schritte:

       •      Es  wird  mittels der Chroot squeeze eine Sitzung erstellt. Dieser wird automatisch
              ein  eindeutiger  Name  wie  squeeze-57a69547-e014-4f5d-a98b-f4f35a005307  gegeben,
              obwohl Sie normalerweise nichts darüber wissen möchten.

       •      Einrichtungsskripte werden zum Erstellen der Sitzungs-Chroot ausgeführt und richten
              sie Ihnen ein.

       •      Der Befehl  Befehl wird innerhalb der Sitzungs-Chroot ausgeführt.

       •      Zum Aufräumen der Sitzungs-Chroot werden Einrichtungsskripte ausgeführt.

       •      Die Sitzung wird gelöscht.

       Falls Sie nun mehr als einen Befehl ausführen wollen, können Sie eine  Shell  starten  und
       die  Befehle  interaktiv  starten  oder  Sie  können sie in ein Shell-Skript schreiben und
       stattdessen dieses ausführen. Aber möglicherweise wollen Sie  dazwischen  etwas  tun,  wie
       etwa  beliebige  Befehle von einem Programm oder Skript ausführen, von dem Sie vorher noch
       nicht wissen, welche Befehle Sie ausführen müssen. Außerdem  möchten  Sie  vielleicht  den
       Zustand  der  Chroot  zwischen  zwei Befehlen konservieren, wobei die normale automatische
       Erstellung von Sitzungen den Zustand zwischen jedem Befehl wieder zurücksetzen würde.  Das
       ist  der  Grund für die Sitzungen: Sobald sie erstellt sind, ist die Sitzung beständig und
       wird nicht entfernt. Mit einer Sitzung können Sie so  viele  Befehle  ausführen,  wie  Sie
       wollen,  Sie  müssen  aber  die  Sitzung von Hand erstellen und löschen, da Schroot selbst
       nicht wissen kann, wann Sie damit fertig sind, außer im  obigen  Fall  mit  dem  einzelnen
       Befehl. Dies ist ziemlich einfach:
       % schroot --begin-session -c squeeze↵
       squeeze-57a69547-e014-4f5d-a98b-f4f35a005307

       Dies  erzeugt  eine  neue Sitzung, die auf der Chroot squeeze basiert. Der eindeutige Name
       der Sitzung, die Sitzungskennung, wird auf der Standardausgabe ausgegeben, daher  kann  er
       gleichzeitig als Shell-Variable gesichert werden wie hier:
       % SESSION=$(schroot --begin-session -c squeeze)↵
       % echo $SESSION↵
       squeeze-57a69547-e014-4f5d-a98b-f4f35a005307

       Nun wurde die Sitzung erstellt und hat eine Sitzungskennung. In ihr können Befehle mittels
       der Sitzungskennung ausgeführt werden:
       % schroot --run-session -c squeeze-57a69547-e014-4f5d-a98b-f4f35a005307 \
         -- Befehl1↵

       oder
       % schroot --run-session -c "$SESSION" -- Befehl1↵

       und dann so viele andere Befehle wie gewünscht
       % schroot --run-session -c "$SESSION" -- Befehl2↵
       % schroot --run-session -c "$SESSION" -- Befehl3↵
       % schroot --run-session -c "$SESSION" -- Befehl4↵

       etc.

       Wenn die Sitzung vorüber ist, kann sie mit --end-session entfernt werden:
       % schroot --end-session -c squeeze-57a69547-e014-4f5d-a98b-f4f35a005307↵

       oder
       % schroot --end-session -c "$SESSION"↵

       Da die automatisch generierten Sitzungsnamen lang und unhandlich sein  können,  ermöglicht
       Ihnen die Option --session-name Ihren eigenen Namen zu vergeben:

       % schroot --begin-session -c squeeze --session-name mein-name↵
       mein-name

MITWIRKEN

   Hilfe erhalten und einbezogen werden
       Die    Mailingliste    <buildd-tools-devel@lists.alioth.debian.org>    wird   sowohl   für
       Anwenderunterstützung als auch Diskussionen über die Entwicklung benutzt. Die  Liste  kann
       über  die  Projektseite  unter  https://alioth.debian.org/projects/buildd-tools/ abonniert
       werden        oder        über        die        Mailman-Listenschnittstelle         unter
       http://lists.alioth.debian.org/mailman/listinfo/buildd-tools-devel.

   Fehler melden
       Auf Debian-Systemen können Fehler unter Benutzung des Werkzeugs reportbug(1) oder per Mail
       an <submit@bugs.debian.org> gemeldet werden (Einzelheiten darüber, wie  das  geht,  finden
       Sie unter http://bugs.debian.org).

   Bezug der neusten Quellen
       Schroot wird über das Versionskontrollsystem Git verwaltet. Sie können die neusten Quellen
       über git://git.debian.org/git/buildd-tools/schroot beziehen.
       % git clone git://git.debian.org/git/buildd-tools/schroot↵

       Der  Zweig   »master«   enthält   die   aktuelle   Entwicklungsveröffentlichung.   Stabile
       Veröffentlichungen  werden  in  Zweigen  gefunden,  zum Beispiel liegen die Serien 1.4 des
       Releases im Zweig »schroot-1.4«.

AUTOR

       Roger Leigh

COPYRIGHT

       Copyright © 2005-2012 Roger Leigh <rleigh@codelibre.net>

       schroot ist freie Software. Sie können es unter den Bedingungen  der  GNU  General  Public
       License,  wie  von  der  Free  Software  Foundation  veröffentlicht,  weitergeben und/oder
       modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder  späteren
       Version.

SIEHE AUCH

       dchroot(1), sbuild(1), schroot(1), schroot.conf(5). schroot-setup(5),