bionic (7) schroot-faq.7.gz

Provided by: schroot_1.6.10-4ubuntu0.1_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 © 2005-2012 Roger Leigh <rleigh@debian.org>

       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-setup(5), schroot.conf(5)