# 10. Chroots benutzen

Wenn Du eine Version von Ubuntu benutzt, aber an Paketen für andere Versionen arbeitest, kannst Du eine Umgebung dieser Version mit einer `Chroot` erzeugen.

Eine `Chroot` erlaubt dir ein Dateisystem einer anderen Distribution zu haben in dem man nahezu normal arbeiten kann. Dadurch vermeidet man den Overhead des Laufens einer vollen virtuellen Maschine.

## 10.1. Eine Chroot-Umgebung anlegen

Benutze das Kommando `debootstrap` um eine neue Chroot zu erzeugen:

    $ sudo debootstrap trusty trusty/

This will create a directory `trusty` and install a minimal trusty system into it.

If your version of `debootstrap` does not know about Trusty you can try upgrading to the version in `backports`.

Du kannst dann in der Chroot arbeiten:

    $ sudo chroot trusty

Wo Du alle Pakete installieren oder löschen kannst ohne Dein Hauptsystem zu berühren.

Vielleicht möchtest Du auch deine GPG/ssh-Schlüssel und Bazaarkonfiguration in das Chroot kopieren, um so einfacher auf Pakete zugreifen zu und sie signieren zu können:

    $ sudo mkdir trusty/home/<username>
    $ sudo cp -r ~/.gnupg ~/.ssh ~/.bazaar trusty/home/<username>

Damit apt und andere Programme sich nicht mehr über fehlende Locales beschweren, kann man die relevanten Language Packs installieren:

    $ apt-get install language-pack-en

Um X-Window Programme in der Chroot Umgebung nutzen zu können, muss das /tmp Verzeichnis in die Umgebung gebunden werden. Dies geht außerhalb des Chroot mit folgendem Kommando:

    $ sudo mount -t none -o bind /tmp trusty/tmp
    $ xhost +

Für einige Programme kann es nötig sein die Verzeichnisse /dev und /proc in das Chroot zu binden.

Für weitere Informationen über Chroots siehe unsere Debootstrap Chroot wiki page.

## 10.2. Alternativen

SBuild ist ähnlich wie PBuilder ein System zurErstellung von Umgebungen, in denen die Paketerzeugung getestet werden kann. Es ist näher an der von Lauchpad verwendeten Umgebung zur Paketerzeugung, erfordert aber im Vergleich zu PBuilder etwas mehr Konfigurationsaufwand. Für eine detaillierte Erklärung siehe the Security Team Build Environment wiki page.

Für das Paketieren und Testen von Programmen können vollständige virtuelle Maschinen nützlich sein. TestDrive ist ein Programm, mit dem die Synchronisation und das Ausführen von täglich erzeugten ISO Abbildern automatisiert werden kann, für weitere Informationen siehe the TestDrive wiki page.

Du kannst pbuilder auch so konfigurieren, dass er anhält, wenn er ein Problem findet. Kopiere C10shell von /usr/share/doc/pbuilder/examples in ein Verzeichnis und benutze das `--hookdir=` Argument um darauf zu verweisen.

Mit Amazon’s EC2 cloud computers kann man einen Rechner für einige cent pro Stunde mieten. Hier kannst Du Ubuntu Maschinen mit jeglicher unterstützen Version installieren und darauf Pakete erstellen. Gemietete Rechenleistung kann besonders nützlich sein um Bandbreitenprobleme zu umgehen wenn Du viele Pakete parallel übersetzen möchtest.