Update to r44016:

Introduction to using Poudriere

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D5740
This commit is contained in:
Bjoern Heidotting 2016-03-25 19:26:31 +00:00
parent 542138d47b
commit b6f54a3243
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48469

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/ports/chapter.xml,v 1.111 2011/12/19 17:13:33 bcr Exp $
basiert auf: r43886
basiert auf: r44016
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="ports">
<info><title>Installieren von Anwendungen: Pakete und Ports</title>
@ -1596,6 +1596,212 @@ Thee deinstallation will free 229 kB
</sect2>
</sect1>
<sect1 xml:id="ports-poudriere">
<title>Pakete mit <application>Poudriere</application>
bauen</title>
<para><application>Poudriere</application> ist ein unter der
<acronym>BSD</acronym>-Lizenz stehendes Werkzeug zum Erstellen
und Testen von &os;-Paketen. Dieses Programm nutzt &os; Jails,
um die Pakete in einer isolierten Umgebung zu bauen. Diese
Jails können verwendet werden, um Pakete für andere Versionen
von &os; zu bauen, oder um auf einem &arch.amd64;-System Pakete
für i386 zu bauen. Sobald die Pakete gebaut sind, haben sie das
gleiche Format wie auf den offiziellen Spiegeln. Die Pakete
können dann mit &man.pkg.8; oder anderen
Paketverwaltungswerkzeugen benutzt werden.</para>
<para><application>Poudriere</application> wird über das Paket
oder den Port <package>ports-mgmt/poudriere</package>
installiert. Die Installation beinhaltet eine
Beispielkonfiguration in
<filename>/usr/local/etc/poudriere.conf.sample</filename>.
Kopieren Sie diese Datei nach
<filename>/usr/local/etc/poudriere.conf</filename>. Bearbeiten
Sie dann die kopierte Datei, um die Konfiguration
anzupassen.</para>
<para>Obwohl <acronym>ZFS</acronym> für
<application>poudriere</application> nicht zwingend erforderlich
ist, so hat die Nutzung doch einige Vorteile. Wird
<acronym>ZFS</acronym> eingesetzt, muss in
<filename>/usr/local/etc/poudriere.conf</filename> die Variable
<varname>ZPOOL</varname> definiert, und die Variable
<varname>FREEBSD_HOST</varname> auf einen nahe gelegenen
Spiegel gesetzt werden. Die Definition von
<varname>CCACHE_DIR</varname> erlaubt die Verwendung von
<package>devel/ccache</package>, um die Bauzeit für häufig
kompilierten Code verkürzen. Es kann vorteilhaft sein, die
<application>poudriere</application>-Datasets in einem separaten
Verzeichnis auf <filename>/poudriere</filename> einzuhängen.
Die Werte der anderen Konfigurationsvariablen sind in der Regel
angemessen und brauchen nicht geändert werden.</para>
<para>Die Anzahl der Kerne im Prozessor wird verwendet um zu
bestimmen, wie viele Bauprozesse parallel ausgeführt werden
sollen. Stellen Sie ausreichend virtuellen Speicher bereit,
entweder in Form von <acronym>RAM</acronym> oder als
Swap-Speicher. Ist der virtuelle Speicher aufgebraucht, bricht
der Bauprozess ab und die Jails stürzen ab, was zu seltsamen
Fehlermeldungen führt.</para>
<sect2 xml:id="poudriere-initialization">
<title>Jails und Ports-Sammlung initialisieren</title>
<para>Nach der Konfiguration muss
<application>poudriere</application> initialisiert werden,
damit es eine Jail mit der benötigten Ports-Sammlung startet.
Geben Sie mit <option>-j</option> den Namen der Jail und mit
<option>-v</option> die gewünschte &os;-Version an. Auf
&os;/&arch.amd64;-Systemen kann die Architektur mit dem
Schalter <option>-a</option> und <literal>i386</literal> oder
<literal>amd64</literal> gesetzt werden. Der voreingestellte
Wert für die Architektur können Sie sich mit
<command>uname</command> anzeigen lassen.</para>
<screen>&prompt.root; <userinput>poudriere jail -c -j <replaceable>10amd64</replaceable> -v <replaceable>10.0-RELEASE</replaceable></userinput>
====&gt;&gt; Creating 10amd64 fs... done
====&gt;&gt; Fetching base.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/base.txz 100% of 59 MB 1470 kBps 00m42s
====&gt;&gt; Extracting base.txz... done
====&gt;&gt; Fetching src.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/src.txz 100% of 107 MB 1476 kBps 01m14s
====&gt;&gt; Extracting src.txz... done
====&gt;&gt; Fetching games.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/games.txz 100% of 865 kB 734 kBps 00m01s
====&gt;&gt; Extracting games.txz... done
====&gt;&gt; Fetching lib32.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/lib32.txz 100% of 14 MB 1316 kBps 00m12s
====&gt;&gt; Extracting lib32.txz... done
====&gt;&gt; Cleaning up... done
====&gt;&gt; Jail 10amd64 10.0-RELEASE amd64 is ready to be used</screen>
<screen>&prompt.root; <userinput>poudriere ports -c -p <replaceable>local</replaceable></userinput>
====&gt;&gt; Creating local fs... done
====&gt;&gt; Extracting portstree "local"...
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Tue Feb 11 01:07:15 CET 2014:
94a3431f0ce567f6452ffde4fd3d7d3c6e1da143efec76100% of 69 MB 1246 kBps 00m57s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Tue Feb 11 01:07:15 CET 2014 to Tue Feb 11 16:05:20 CET 2014.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 48 patches.
(48/48) 100.00% done.
done.
Applying patches...
done.
Fetching 1 new ports or files... done.
/poudriere/ports/tester/CHANGES
/poudriere/ports/tester/COPYRIGHT
[...]
Building new INDEX files... done.</screen>
<para><application>poudriere</application> kann auf einem
einzelnen Rechner Ports mit mehreren Konfigurationen
bauen, in mehreren Jails und aus unterschiedlichen
Ports-Sammlungen. Spezifische Konfigurationen für diese
Kombinationen werden <emphasis>Sets</emphasis>
genannt. Lesen Sie den Abschnitt CUSTOMIZATION in
&man.poudriere.8; für weitere Einzelheiten nach der
Installation von <package>port-mgmt/poudriere</package> oder
<package>ports-mgmt/poudriere-devel</package>.</para>
<para>Die hier gezeigte Konfiguration verwendet eine einzelne
Jail-, Port- und Set-spezifische
<filename>make.conf</filename> in
<filename>/usr/local/etc/poudriere.d</filename>. Der
verwendete Dateiname in diesem Beispiel wird aus einer
Kombination von Jailnamen, Portnamen und Setnamen zusammen
gesetzt:
<filename><replaceable>10amd64-local-workstation</replaceable>-make.conf</filename>.
Die <filename>make.conf</filename> des Systems und diese neue
Datei werden verwendet, um die <filename>make.conf</filename>
für die Jail zu erzeugen.</para>
<para>Die zu bauenden Pakete werden in
<filename><replaceable>10amd64-local-workstation</replaceable>-pkglist</filename>
eingetragen:</para>
<programlisting>editors/emacs
devel/git
ports-mgmt/pkg
...</programlisting>
<para>Die Optionen und Abhängigkeiten für die Ports werden wie
folgt konfiguriert:</para>
<screen>&prompt.root; <userinput>poudriere options -j <replaceable>10amd64</replaceable> -p <replaceable>local</replaceable> -z <replaceable>workstation</replaceable> -f <replaceable>10amd64-local-workstation-pkglist</replaceable></userinput></screen>
<para>Schließlich werden die Pakete gebaut und ein
Paket-Repository erstellt:</para>
<screen>&prompt.root; <userinput>poudriere bulk -j <replaceable>10amd64</replaceable> -p <replaceable>local</replaceable> -z <replaceable>workstation</replaceable> -f <replaceable>10amd64-local-workstation-pkglist</replaceable></userinput></screen>
<para><keycombo
action="simul"><keycap>Ctrl</keycap><keycap>t</keycap></keycombo>
zeigt den aktuellen Status des Baus an.
<application>Poudriere</application> speichert zudem Dateien
in <filename>/poudriere/logs/bulk/jailname</filename>. Diese
Dateien kann ein Webserver nutzen, um Informationen über den
Bau anzuzeigen.</para>
<para>Die Pakete stehen jetzt im
<application>poudriere</application> Repository für die
Installation zur Verfügung.</para>
<para>Weitere Informationen zu
<application>poudriere</application> finden Sie in
&man.poudriere.8; und unter <link
xlink:href="https://github.com/freebsd/poudriere/wiki"></link>.</para>
</sect2>
<sect2>
<title>Konfiguration des pkg-Clients für das Poudriere
Repository</title>
<para>Obwohl es möglich ist ein eigenes Repository zusammen mit
dem offiziellen Repository zu nutzen, ist es manchmal
sinnvoll das offizielle Repository zu deaktivieren. Dazu
wird eine Konfigurationsdatei erstellt, welche die offizielle
Konfigurationsdatei überschreibt. Erzeugen Sie dazu
<filename>/usr/local/etc/pkg/repos/FreeBSD.conf</filename>
mit dem folgenden Inhalt:</para>
<programlisting>FreeBSD: {
enabled: no
}</programlisting>
<para>Am einfachsten ist es, das poudriere Repository über
<acronym>HTTP</acronym> zur Verfügung zu stellen. Setzen Sie
einen Webserver auf, der die Dateien des Paketverzeichnisses
ausliefert, zum Beispiel
<filename>/usr/local/poudriere/data/packages/<replaceable>10amd64</replaceable></filename>.
<filename>10amd64</filename> bezeichnet dabei den Namen des
Baus.</para>
<para>Wenn die <acronym>URL</acronym> des Paket Repositories
<literal>http://pkg.example.com/10amd64</literal> ist, dann
sollte die Konfiguration des Repositories in
<filename>/usr/local/etc/pkg/repos/custom.conf</filename>
wie folgt aussehen:</para>
<programlisting>custom: {
url: "<replaceable>http://pkg.example.com/10amd64</replaceable>",
enabled: yes,
}</programlisting>
</sect2>
</sect1>
<sect1 xml:id="ports-nextsteps">
<title>Nach der Installation</title>