.\" Copyright © 2010 Roger Leigh .\" .\" schroot is free software: you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by .\" the Free Software Foundation, either version 3 of the License, or .\" (at your option) any later version. .\" .\" schroot is distributed in the hope that it will be useful, but .\" WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU .\" General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see .\" . .\" .ds RELEASE_DATE 14 Aug 2022 .ds VERSION 1.6.13 .ds SCHROOT_LIBEXEC_DIR /usr/lib/x86_64-linux-gnu/schroot .ds SCHROOT_MOUNT_DIR /var/run/schroot/mount .ds SCHROOT_SESSION_DIR /var/lib/schroot/session .ds SCHROOT_FILE_UNPACK_DIR /var/lib/schroot/unpack .ds SCHROOT_OVERLAY_DIR /var/lib/schroot/union/overlay .ds SCHROOT_UNDERLAY_DIR /var/lib/schroot/union/underlay .ds SCHROOT_SYSCONF_DIR /etc/schroot .ds SCHROOT_CONF /etc/schroot/schroot.conf .ds SCHROOT_CONF_CHROOT_D /etc/schroot/chroot.d .ds SCHROOT_CONF_SETUP_D /etc/schroot/setup.d .ds SCHROOT_DATA_DIR /usr/share/schroot .ds SCHROOT_SETUP_DATA_DIR /usr/share/schroot/setup .ds SCHROOT_LOCALE_DIR /usr/share/locale .ds PACKAGE_LOCALE_DIR /usr/share/locale .ds PROGRAM schroot .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH "HÄUFIG ZU SCHROOT GESTELLTE FRAGEN" 7 \*[RELEASE_DATE] "Version \*[VERSION]" Debian\-Sbuild .SH BEZEICHNUNG schroot \- häufig gestellte Fragen .SH BESCHREIBUNG Diese Handbuchseite deckt viele verschiedene häufig gestellte Fragen über die Konfiguration und Benutzung von Schroot ab. .SH KONFIGURATION .SS "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. .PP Die hier vorgeschlagene Behelfslösung besteht darin, das Kopieren zu deaktivieren, indem der Schlüssel \f[CI]setup.nssdatabases\fR in \fIschroot.conf\fP geleert wird. In früheren Veröffentlichungen von Schroot wurde dies durch Auskommentieren der Datei NSSDATABASES für die Chroot erreicht (standardmäßig \fI\*[SCHROOT_SYSCONF_DIR]/default/config\fP). Die Datenbankliste kann ebenfalls durch Bearbeiten der Datei angepasst werden, die die Datenbankliste enthält (standardmäßig \fI\*[SCHROOT_SYSCONF_DIR]/default/nssdatabases\fP. .PP 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. .SS "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 \fBdchroot(1)\fP oder \fBchroot(8)\fP 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. .SH "FORTGESCHRITTENE KONFIGURATION" .SS "Was sind Schnappschüsse und Unions?" Einige Chroot\-Typen unterstützen das \fIKlonen\fP. Das heißt, dass Sie, wenn Sie eine Sitzung starten, eine \fIKopie\fP 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\[ae]mons führen zum Beispiel \fBsbuild\fP(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. .PP 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 \fBlvcreate\fP(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. .PP 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. .SH AUFRUF .SS "Wie kann ich D\[ae]mons in einer Chroot ausführen?" Ein häufiges Problem beim Versuch einen D\[ae]mon in einer Chroot auszuführen ist, dass Sie bemerken, dass er gar nicht läuft. Typischerweise wurde der D\[ae]mon kurz nach dem Start gekillt. .PP 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\[ae]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\[ae]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\[ae]mon beim Beenden der Sitzung gekillt wird. .PP Als Folge davon ist es nicht möglich, einen D\[ae]mon \fIdirekt\fP mit Schroot auszuführen. Sie können es dennoch tun, wenn Sie eine Sitzung mit \fI\-\-begin\-session\fP erstellen und dann den D\[ae]mon mit \fI\-\-run\-session\fP ausführen. Es liegt dann in Ihrer Verantwortung, die Sitzung mit \fI\-\-end\-session\fP zu schließen, wenn der D\[ae]mon beendet wurde und Sie ihn nicht länger benötigen. .SS "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 »\fISitzungsverzeichnisse\fP« in \fBschroot\fP(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. .PP Um zum Beispiel die Sitzung mit Namen \fImeine\-Sitzung\fP von Hand zu entfernen: .IP \[bu] die Konfigurationsdatei der Sitzung entfernen .EX %\ \f[CB]rm\ \*[SCHROOT_SESSION_DIR]/meine\-Sitzung\fR\[CR] .EE .IP \[bu] auf eingehängte Dateisysteme prüfen .EX %\ \f[CB]\*[SCHROOT_LIBEXEC_DIR]/schroot\-listmounts\ \-m\ \e \*[SCHROOT_MOUNT_DIR]/meine\-Sitzung\fR\[CR] .EE .IP \[bu] eingehängte Dateisysteme aushängen .IP \[bu] \fI\*[SCHROOT_MOUNT_DIR]/meine\-Sitzung\fP entfernen .IP \[bu] dies für andere Verzeichnisse wie \fI\*[SCHROOT_UNDERLAY_DIR]\fP, \fI\*[SCHROOT_OVERLAY_DIR]\fP und \fI\*[SCHROOT_FILE_UNPACK_DIR]\fP wiederholen .PP \fBHINWEIS:\fP Entfernen Sie keine Verzeichnisse, ohne zu prüfen, ob darunter irgendwelche Dateisysteme eingehängt sind, da Dateisysteme wie \fI/home\fP immer noch mit der Option »bind« eingehängt sein könnten. Dies dennoch zu tun, könnte zum Verlust unwiederbringlicher Daten führen. .SH "FORTGESCHRITTENE BENUTZUNG" .SS "Wie verwende ich Sitzungen?" Im normalen Betrieb führen Sie einen Befehl ähnlich diesem aus: .EX %\ \f[CB]schroot\ \-c squeeze \-\- Befehl\fR\[CR] .EE .PP Dadurch würde der Befehl \fIBefehl\fP in der Chroot \fIsqueeze\fP ausgeführt. Während es hier nicht offensichtlich ist, dass eine Sitzung benutzt wird, unternimmt Schroot die folgenden Schritte: .IP \[bu] Es wird mittels der Chroot \fIsqueeze\fP eine Sitzung erstellt. Dieser wird automatisch ein eindeutiger Name wie \fIsqueeze\-57a69547\-e014\-4f5d\-a98b\-f4f35a005307\fP gegeben, obwohl Sie normalerweise nichts darüber wissen möchten. .IP \[bu] Einrichtungsskripte werden zum Erstellen der Sitzungs\-Chroot ausgeführt und richten sie Ihnen ein. .IP \[bu] Der Befehl \fIBefehl\fP wird innerhalb der Sitzungs\-Chroot ausgeführt. .IP \[bu] Zum Aufräumen der Sitzungs\-Chroot werden Einrichtungsskripte ausgeführt. .IP \[bu] Die Sitzung wird gelöscht. .PP 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: .EX % \f[CB]schroot \-\-begin\-session \-c squeeze\fR\[CR] squeeze\-57a69547\-e014\-4f5d\-a98b\-f4f35a005307 .EE .PP Dies erzeugt eine neue Sitzung, die auf der Chroot \fIsqueeze\fP basiert. Der eindeutige Name der Sitzung, die Sitzungskennung, wird auf der Standardausgabe ausgegeben, daher kann er gleichzeitig als Shell\-Variable gesichert werden wie hier: .EX % \f[CB]SESSION=$(schroot \-\-begin\-session \-c squeeze)\fR\[CR] % \f[CB]echo $SESSION\fR\[CR] squeeze\-57a69547\-e014\-4f5d\-a98b\-f4f35a005307 .EE .PP Nun wurde die Sitzung erstellt und hat eine Sitzungskennung. In ihr können Befehle mittels der Sitzungskennung ausgeführt werden: .EX % \f[CB]schroot \-\-run\-session \-c squeeze\-57a69547\-e014\-4f5d\-a98b\-f4f35a005307 \e \-\- Befehl1\fR\[CR] .EE .PP oder .EX % \f[CB]schroot \-\-run\-session \-c "$SESSION" \-\- Befehl1\fR\[CR] .EE .PP und dann so viele andere Befehle wie gewünscht .EX % \f[CB]schroot \-\-run\-session \-c "$SESSION" \-\- Befehl2\fR\[CR] % \f[CB]schroot \-\-run\-session \-c "$SESSION" \-\- Befehl3\fR\[CR] % \f[CB]schroot \-\-run\-session \-c "$SESSION" \-\- Befehl4\fR\[CR] .EE .PP etc. .PP Wenn die Sitzung vorüber ist, kann sie mit \fI\-\-end\-session\fP entfernt werden: .EX % \f[CB]schroot \-\-end\-session \-c squeeze\-57a69547\-e014\-4f5d\-a98b\-f4f35a005307\fR\[CR] .EE .PP oder .EX % \f[CB]schroot \-\-end\-session \-c "$SESSION"\fR\[CR] .EE .PP Da die automatisch generierten Sitzungsnamen lang und unhandlich sein können, ermöglicht Ihnen die Option \fI\-\-session\-name\fP Ihren eigenen Namen zu vergeben: .PP .EX % \f[CB]schroot \-\-begin\-session \-c squeeze \-\-session\-name mein\-name\fR\[CR] mein\-name .EE .SH MITWIRKEN .SS "Hilfe erhalten und einbezogen werden" Die Mailingliste \f[CR]\fR wird sowohl für Anwenderunterstützung als auch Diskussionen über die Entwicklung benutzt. Die Liste kann über die Projektseite unter \f[CR]https://alioth.debian.org/projects/buildd\-tools/\fR abonniert werden oder über die Mailman\-Listenschnittstelle unter \f[CR]http://lists.alioth.debian.org/mailman/listinfo/buildd\-tools\-devel\fR. .SS "Fehler melden" Auf Debian\-Systemen können Fehler unter Benutzung des Werkzeugs \fBreportbug\fP(1) oder per Mail an \f[CR]\fR gemeldet werden (Einzelheiten darüber, wie das geht, finden Sie unter \f[CR]http://bugs.debian.org\fR). .SS "Bezug der neusten Quellen" Schroot wird über das Versionskontrollsystem Git verwaltet. Sie können die neusten Quellen über \f[CR]git://git.debian.org/git/buildd\-tools/schroot\fR beziehen. .EX % \f[CB]git clone git://git.debian.org/git/buildd\-tools/schroot\fR\[CR] .EE .LP 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«. .SH AUTOR Roger Leigh .SH COPYRIGHT Copyright \(co 2005\-2012 Roger Leigh \f[CR]\fR .PP \fB\*[PROGRAM]\fP 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. .SH "SIEHE AUCH" \fBdchroot\fP(1), \fBsbuild\fP(1), \fBschroot\fP(1), \fBschroot.conf\fP(5). \fBschroot\-setup\fP(5), .\"# .\"# The following sets edit modes for GNU EMACS .\"# Local Variables: .\"# mode:nroff .\"# fill-column:79 .\"# End: