doc/de_DE.ISO8859-1/books/developers-handbook/policies/chapter.sgml
Benedict Reuschling b2bd8eb00c MFde: Update the german documentation set.
Thanks to the efforts of Frank Börner, we were able to
update multiple documents to the current version.

books/developers-handbook/policies/chapter.sgml     1.33 -> 1.34    [1]
books/handbook/book.sgml                            1.175 -> 1.176  [1]
books/handbook/cutting-edge/chapter.sgml            1.245 -> 1.246
books/handbook/kernelconfig/chapter.sgml            1.193 -> 1.194
books/handbook/ports/chapter.sgml                   1.278 -> 1.290  [1]
books/handbook/x11/chapter.sgml                     1.186 -> 1.201
flyer/flyer.tex                                     1.16 -> 1.17    [1]
share/sgml/trademarks.sgml                          1.6 -> 1.7      [1]

[1] Contributed by:     Frank Börner (frank dash freebsd at online dot de)
Obtained from:          The FreeBSD German Documentation Project
2010-01-24 18:49:24 +00:00

522 lines
20 KiB
Text

<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/policies/chapter.sgml,v 1.9 2010/01/18 19:11:52 bcr Exp $
basiert auf: 1.34
-->
<chapter id="policies">
<chapterinfo>
<authorgroup>
<author>
<firstname>Poul-Henning</firstname>
<surname>Kamp</surname>
<contrib>Beigesteuert von </contrib>
</author>
</authorgroup>
<!-- June 1996 -->
<authorgroup>
<author>
<firstname>Axel</firstname>
<surname>Gruner</surname>
<contrib>&Uuml;bersetzt von </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Vorgaben und Richtlinien f&uuml;r das
Quelltextverzeichnis</title>
<para>Dieses Kapitel dokumentiert verschiedene Vorgaben und
Richtlinien f&uuml;r das FreeBSD-Quelltextverzeichnis.</para>
<sect1 id="policies-maintainer">
<title><makevar>MAINTAINER</makevar> eines Makefiles</title>
<indexterm><primary>Ports-Maintainer</primary></indexterm>
<para>Wenn ein bestimmter Bereich der FreeBSD-Distribution von
einer Person oder Gruppe gepflegt wird, kann dies durch
Hinzuf&uuml;gen der Zeile
<programlisting>MAINTAINER= email-addresses</programlisting>
im <filename>Makefile</filename> der &Ouml;ffentlichkeit
mitgeteilt werden.</para>
<para>Dies bedeutet folgendes:</para>
<para>Der Maintainer ist verantwortlich f&uuml;r diesen Code.
Er muss einerseits f&uuml;r die Behebung von
Fehlern und das Beantworten von Problemberichten f&uuml;r diesen
Code die Verantwortung tragen und andererseits, falls es sich
um beigesteuerte Software handelt, neue Versionen verfolgen
und bereitstellen.</para>
<para>&Auml;nderungen an Verzeichnissen, die ein Maintainer
definiert hat, sollten an den Maintainer f&uuml;r eine
&Uuml;berpr&uuml;fung gesendet werden, bevor diese committet
werden. Nur wenn der Maintainer in einer inakzeptablen
Zeitspanne auf mehrere E-Mails nicht antwortet, k&ouml;nnen die
&Auml;nderungen, die mit dem Commit in Kraft treten, auch ohne
&Uuml;berpr&uuml;fung durch den Maintainer vollzogen werden.
Dennoch wird empfohlen, dass die &Auml;nderungen, falls
m&ouml;glich, von jemand anderem &uuml;berpr&uuml;ft
werden.</para>
<para>Es ist nat&uuml;rlich nicht akzeptabel, einer Person oder
Gruppe den Status eines Maintainers zu geben, so lange sie nicht
zustimmt, diese Pflicht auf sich zu nehmen. Andererseits muss es
kein einzelner Mensch sein. Eine Gruppe von Menschen ist genauso
in Ordnung.</para>
</sect1>
<sect1 id="policies-contributed">
<sect1info>
<authorgroup>
<author>
<firstname>Poul-Henning</firstname>
<surname>Kamp</surname>
<contrib>Beigesteuert von </contrib>
</author>
<author>
<firstname>David</firstname>
<surname>O'Brien</surname>
</author>
</authorgroup>
<!-- June 1996 -->
</sect1info>
<title>Beigesteuerte Software</title>
<indexterm><primary>Beigesteuerte Software</primary></indexterm>
<para>Einige Teile der FreeBSD-Distribution enthalten Software,
die aktiv au&szlig;erhalb des FreeBSD-Projektes gepflegt wird.
Aus historischen Gr&uuml;nden nennen wir dies
<emphasis>contributed</emphasis> Software. Beispiele daf&uuml;r
sind <application>sendmail</application>,
<application>gcc</application> und
<application>patch</application>.</para>
<para>&Uuml;ber die Jahre wurden verschiedene Methoden genutzt,
um solche Software zu verwalten, und jede hat Vor-
wie auch Nachteile. So hat sich kein eindeutiger Gewinner
herauskristallisiert.</para>
<para>Es wurde viel &uuml;ber diesen Umstand diskutiert und
eine Methode als die <quote>offizielle</quote>
vorgestellt, um in Zukunft diese Art der Software zu
importieren. Ferner wird dringend geraten, dass sich
existierende, beigesteuerte Software diesem Modell
ann&auml;hert, da es signifikante Vorteile gegen&uuml;ber der
alten Methode gibt. Dazu geh&ouml;rt auch, dass jeder
einfach Diffs bez&uuml;glich der
<quote>offiziellen</quote> Quelltext-Versionen erzeugen kann
(auch ohne CVS-Zugang). Dies wird es deutlich vereinfachen,
&Auml;nderungen an die Hauptentwickler zur&uuml;ckflie&szlig;en zu
lassen.</para>
<para>Letztendlich kommt es jedoch auf die Menschen an, welche die
Arbeit leisten. Wenn die Durchf&uuml;hrung dieses Modells bei
einem Paket mal nicht m&ouml;glich ist, k&ouml;nnen Ausnahmen
dieser Regeln nur mit Genehmigung des Core-Teams und der
&Uuml;bereinstimmung der anderen Entwickler gew&auml;hrt werden.
Die F&auml;higkeit, dieses Paket auch in Zukunft pflegen zu
k&ouml;nnen, ist eine der Schl&uuml;sselfragen bei dieser
Entscheidung.</para>
<note>
<para>Durch einige bedauernswerte Einschr&auml;nkungen
des RCS-Dateiformats und die Handhabung von Herstellerzweigen
im CVS ist von unwesentlichen, trivialen und/oder kosmetischen
&Auml;nderungen an Dateien <emphasis>dringend
abzuraten</emphasis>, die dem Herstellerzweig folgen.
<quote>Grammatikalische oder sprachliche
Fehlerbehebungen</quote> sind explizit unter der
<quote>Kosmetik</quote>-Kategorie einzuordnen und sollten bei
Dateien mit einer 1.1.x.x-Revision vermieden werden. Das
Repository kann sich durch &Auml;nderungen einzelner Zeichen
dramatisch aufbl&auml;hen.</para>
</note>
<para>Die eingebettete
<application>Tcl</application>-Programmiersprache soll als
Beispiel dienen, wie dieses Modell funktioniert:</para>
<para><filename>src/contrib/tcl</filename> enth&auml;lt den
Quelltext so, wie vom Maintainer dieses Pakets bereitgestellt.
Teile, die unter FreeBSD g&auml;nzlich unnutzbar sind,
k&ouml;nnen entfernt werden. Im Fall von Tcl wurden die
Unterverzeichnisse <filename>mac</filename>,
<filename>win</filename> und <filename>compat</filename>
vor dem Import entfernt.</para>
<para><filename>src/lib/libtcl</filename> enth&auml;lt ein
<filename>Makefile</filename> im
<application>bmake</application>-Stil, das die Regeln des
Standard-Makefiles <filename>bsd.lib.mk</filename> nutzt, um
die Bibliothek zu erstellen und die Dokumentation zu
installieren.</para>
<para><filename>src/usr.bin/tclsh</filename> enth&auml;lt ein
<filename>Makefile</filename> im
<application>bmake</application>-Stil, welches das
<command>tclsh</command>-Programm erstellt und installiert,
ebenso die dazugeh&ouml;rigen Manualpages, welche die Regeln von
<filename>bsd.prog.mk</filename> nutzen.</para>
<para><filename>src/tools/tools/tcl_bmake</filename> enth&auml;lt
einige Shell-Skripten, die hilfreich sein k&ouml;nnen, wenn die
Tcl-Software aktualisiert werden soll. Diese sind nicht Teil
des Erstellens und der Installation der Software.</para>
<para>Das Entscheidende ist hier das
<filename>src/contrib/tcl</filename>-Verzeichnis, welches nach
den folgenden Regeln erstellt wird: Es muss den
Quelltext aus dem Original enthalten (ohne
RCS-Schl&uuml;sselworte und im korrekten CVS-Herstellerzweig)
mit so wenig FreeBSD-spezifischen &Auml;nderungen wie
m&ouml;glich. Sollte es Zweifel geben, wie hier zu verfahren
ist, unbedingt zuerst nachfragen und
nicht auf gut Gl&uuml;ck etwas probieren in der vagen
Hoffnung, dass es <quote>irgendwie tut</quote>. CVS verzeiht
keine Fehler beim Importieren und ein hoher Arbeitsaufwand
w&auml;re die Folge, um diesen gro&szlig;en Fehler wieder
wettzumachen.</para>
<para>Aufgrund der eingangs schon erw&auml;hnten Einschr&auml;nkungen
bei CVS-Herstellerzweigen ist es erforderlich,
dass <quote>offizielle</quote> Fehlerbehebungen vom Hersteller
in die Originalquellen der Distribution einflie&szlig;en und als
Resultat wieder in den Herstellerzweig importiert werden.
Offizielle Fehlerbehebungen sollten nie direkt in FreeBSD
eingepflegt und <quote>committet</quote> werden, da dies
den Herstellerzweig zerst&ouml;ren w&uuml;rde und der Import
von zuk&uuml;nftigen Versionen w&auml;re um ein Vielfaches
schwerer, da es zu Konflikten kommen w&uuml;rde.</para>
<para>Da einige Pakete Dateien enthalten, die zur
Kompatibilit&auml;t mit anderen Architekturen und Umgebungen
als FreeBSD gedacht sind, ist es zul&auml;ssig, diese Teile zu
l&ouml;schen, wenn sie f&uuml;r FreeBSD nicht von Interesse
sind, und so Speicherplatz zu sparen. Dateien, die ein
Copyright und Release-artige Informationen zu den vorhandenen
Dateien enthalten, sollten <emphasis>nicht</emphasis>
gel&ouml;scht werden.</para>
<para>Falls es einfacher erscheint, k&ouml;nnen die
<command>bmake</command>-<filename>Makefile</filename>s vom
Verzeichnisbaum durch einige Dienstprogramme automatisch
erstellt werden, was es hoffentlich sogar noch einfacher macht,
eine Version zu aktualisieren. Ist dies geschehen, so stellen
Sie bitte sicher, diese Werkzeuge in das Verzeichnis
<filename>src/tools</filename> gleich mit dem Port an sich
einzuchecken, sodass es f&uuml;r zuk&uuml;nftige Maintainer
verf&uuml;gbar ist.</para>
<para>Im Verzeichnis <filename>src/contrib/tcl</filename> sollte
eine Datei mit dem Namen <filename>FREEBSD-upgrade</filename>
hinzugef&uuml;gt werden und sie sollte den Stand wie folgt
anzeigen:</para>
<itemizedlist>
<listitem>
<para>Welche Dateien ausgelassen wurden.</para>
</listitem>
<listitem>
<para>Von wo die Original-Distribution stammt und/oder wo die
offizielle Hauptseite zu finden ist.</para>
</listitem>
<listitem>
<para>Wohin Fehlerbehebungen an den Originalautor gesendet
werden k&ouml;nnen.</para>
</listitem>
<listitem>
<para>M&ouml;glicherweise eine &Uuml;bersicht, welche
FreeBSD-spezifischen &Auml;nderungen vorgenommen
wurden.</para>
</listitem>
</itemizedlist>
<para>Importieren Sie jedoch <filename>FREEBSD-upgrade</filename>
nicht mit den beigesteuerten Quelldateien. Stattdessen sollten
Sie <command>cvs add FREEBSD-upgrade ; cvs ci</command> nach
dem initialen Import nutzen. Ein Beispiel von
<filename>src/contrib/cpio</filename> sehen Sie hier:</para>
<programlisting>
This directory contains virgin sources of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit. New versions or
official-patch versions must be imported. Please remember to import with
"-ko" to prevent CVS from corrupting any vendor RCS Ids.
For the import of GNU cpio 2.4.2, the following files were removed:
INSTALL cpio.info mkdir.c
Makefile.in cpio.texi mkinstalldirs
To upgrade to a newer version of cpio, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Remove the files listed above and any others that don't apply to
FreeBSD.
3. Use the command:
cvs import -ko -m 'Virgin import of GNU cpio v&lt;version&gt;' \
src/contrib/cpio GNU cpio_&lt;version&gt;
For example, to do the import of version 2.4.2, I typed:
cvs import -ko -m 'Virgin import of GNU v2.4.2' \
src/contrib/cpio GNU cpio_2_4_2
4. Follow the instructions printed out in step 3 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to cpio, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the GNU branch.
All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
inclusion in the next vendor release.
obrien@FreeBSD.org - 30 March 1997</programlisting>
</sect1>
<sect1 id="policies-encumbered">
<title>Belastende Dateien</title>
<para>Es kann gelegentlich notwendig sein, belastende Dateien
in den FreeBSD-Quelltextbaum zu integrieren. Braucht ein
Ger&auml;t zum Beispiel ein St&uuml;ck bin&auml;ren Code, der
zuerst geladen werden muss, bevor das Ger&auml;t funktioniert,
und wir haben keine Quellen zu diesem Code, dann wird die
bin&auml;re Datei als belastend bezeichnet. Die folgenden
Richtlinien sind beim Aufnehmen von belastenden Dateien in den
FreeBSD-Quelltextbaum zu beachten.</para>
<orderedlist>
<listitem>
<para>Jede Datei, die durch die System-CPU(s) ausgef&uuml;hrt
wird und nicht als Quelltext vorliegt, ist belastend.</para>
</listitem>
<listitem>
<para>Jede Datei, deren Lizenz restriktiver ist als die BSD-
oder GNU-Lizenz, ist belastend.</para>
</listitem>
<listitem>
<para>Eine Datei, die herunterladbare Bin&auml;r-Daten
enth&auml;lt, ist nur belastend, wenn (1) oder (2)
zutreffen. Sie muss in einem ASCII-Format
gespeichert werden, das Architektur-neutral ist (file2c
oder uuencoding wird empfohlen).</para>
</listitem>
<listitem>
<para>Jede belastende Datei braucht eine spezielle
Genehmigung vom <ulink
url="&url.base;/administration.html#t-core">Core-Team</ulink>,
bevor diese in das CVS-Repository aufgenommen
werden darf.</para>
</listitem>
<listitem>
<para>Belastende Dateien liegen unter
<filename>src/contrib</filename> oder
<filename>src/sys/contrib</filename>.</para>
</listitem>
<listitem>
<para>Das komplette Modul sollte auch am St&uuml;ck
aufbewahrt werden. Es gibt keinen Grund, dieses zu teilen,
au&szlig;er es gibt einen Code-Austausch mit Quelltext, der
nicht belastend ist.</para>
</listitem>
<listitem>
<para>Objekt-Dateien werden wie folgt benannt:
<filename><replaceable>arch</replaceable>/<replaceable>filename</replaceable>.o.uu></filename>.</para>
</listitem>
<listitem>
<para>Kernel-Dateien:</para>
<orderedlist>
<listitem>
<para>Sollten immer nach
<filename>conf/files.*</filename> verweisen (um den Bau
einfach zu halten).</para>
</listitem>
<listitem>
<para>Sollten sich immer in <filename>LINT</filename>
befinden, jedoch entscheidet das <ulink
url="&url.base;/administration.html#t-core">Core-Team</ulink>
je nach Fall, ob es
auskommentiert wird oder nicht. Das <ulink
url="&url.base;/administration.html#t-core">Core-Team</ulink>
kann sich zu einem sp&auml;teren Zeitpunkt
immer noch anders entscheiden.</para>
</listitem>
<listitem>
<para>Der <firstterm>Release-Engineer</firstterm>
entscheidet, ob es in ein Release aufgenommen wird oder
nicht.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Userland-Dateien:</para>
<orderedlist>
<listitem>
<indexterm><primary>Core-Team</primary></indexterm>
<para>Das <ulink
url="&url.base;/administration.html#t-core">Core-Team</ulink>
entscheidet, ob der Code von
<command>make world</command> gebaut wird oder nicht.</para>
</listitem>
<listitem>
<indexterm><primary>Release-Engineer</primary></indexterm>
<para>Der <ulink
url="&url.base;/administration.html#t-re">Release-Engineer</ulink>
entscheidet, ob es in das Release
aufgenommen wird oder nicht.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</sect1>
<sect1 id="policies-shlib">
<sect1info>
<authorgroup>
<author>
<firstname>Satoshi</firstname>
<surname>Asami</surname>
<contrib>Beigesteuert von </contrib>
</author>
<author>
<firstname>Peter</firstname>
<surname>Wemm</surname>
</author>
<author>
<firstname>David</firstname>
<surname>O'Brien</surname>
</author>
</authorgroup>
<!-- 9 Dec 1996 -->
</sect1info>
<title>Shared-Libraries</title>
<para>Sollten Sie die Unterst&uuml;tzung f&uuml;r
Shared-Libraries bei einem Port oder einem St&uuml;ck Software,
das dies nicht hat, hinzuf&uuml;gen, sollten die Versionsnummern
dessen Regeln folgen. Im Allgemeinen hat die sich daraus
resultierende Nummer nichts mit der Release-Version der Software
zu tun.</para>
<para>Die drei Grunds&auml;tze zum Erstellen von Shared-Libraries
sind:</para>
<itemizedlist>
<listitem>
<para>Sie beginnen mit <literal>1.0</literal>.</para>
</listitem>
<listitem>
<para>Gibt es eine &Auml;nderung, die
abw&auml;rtskompatibel ist, so springen Sie zur
n&auml;chsten Minor-Version (beachten Sie, dass ELF-Systeme
die Minor-Version ignorieren).</para>
</listitem>
<listitem>
<para>Gibt es eine inkompatible &Auml;nderung, so springen
Sie bitte zur n&auml;chsten Major-Version.</para>
</listitem>
</itemizedlist>
<para>Zum Beispiel wird beim Hinzuf&uuml;gen von Funktionen und
oder Fehlerbehebungen zur n&auml;chsten Minor-Version
gesprungen, beim L&ouml;schen einer Funktion, &Auml;ndern
von Funktionsaufrufen usw. &auml;ndert sich die Major-Version.</para>
<para>Bleiben Sie bei Versionsnummern in der Form major.minor
(<replaceable>x</replaceable>.<replaceable>y</replaceable>).
Unser dynamischer Linker a.out kann mit Versionsnummern
in der Form
<replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable>
nicht gut umgehen.
Jede Versionsnummer nach dem <replaceable>y</replaceable>
(die dritte Zahl) wird v&ouml;llig ignoriert, wenn
Versionsnummern der Shared-Libraries verglichen werden, um
zu bestimmen, mit welcher Bibliothek eine Anwendung verlinkt wird.
Sind zwei Shared-Libraries vorhanden, die sich nur in der
<quote>micro</quote>-Revision unterscheiden, so wird
<command>ld.so</command> zu der h&ouml;heren verlinken.
Dies bedeutet, dass wenn Sie mit <filename>libfoo.so.3.3.3</filename>
verlinken, der Linker nur <literal>3.3</literal> in den
Header aufnimmt und alles linkt, was mit
<replaceable>libfoo.so.3</replaceable>
.<replaceable>(irgendetwas
&gt;= 3)</replaceable>.<replaceable>(h&ouml;chste
verf&uuml;gbare Nummer)</replaceable> beginnt.</para>
<note>
<para><command>ld.so</command> wird immer die h&ouml;chste
<quote>Minor</quote>-Revision benutzen. Beispielsweise wird
es die <filename>libc.so.2.2</filename> bevorzugen
gegen&uuml;ber der <filename>libc.so.2.0</filename>, auch
dann, wenn das Programm urspr&uuml;nglich mit
<filename>libc.so.2.0</filename> verlinkt war.</para>
</note>
<para>Unser dynamischer ELF-Linker kann keine Minor-Versionen
handhaben. Dennoch sollten die Major- und Minor-Versionen genutzt
werden, da unsere <filename>Makefile</filename>s <quote>das
Richtige machen</quote> bezogen auf den Systemtyp.</para>
<para>F&uuml;r nicht-Port-Bibliotheken lautet die Richtlinie,
die Shared-Library-Versionsnummer nur einmal zwischen den
Releases zu &auml;ndern. Weiterhin ist es vorgeschrieben, die
Major-Version der Shared-Libraries nur bei Major-OS-Releases zu
&auml;ndern (beispielsweise von 3.0 auf 4.0). Wenn Sie also eine
&Auml;nderung an einer Systembibliothek vornehmen, die eine neue
Versionsnummer ben&ouml;tigt, &uuml;berpr&uuml;fen Sie die
Commit-Logs des <filename>Makefile</filename>s. Es liegt in der
Verantwortung des Committers, dass sich eine erste solche
&Auml;nderung seit dem letzten Release in der aktualisierten
Versionsnummer der Shared-Library im
<filename>Makefile</filename> &auml;u&szlig;ert, folgende
&Auml;nderungen werden nicht ber&uuml;cksichtigt.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->