Migrate doc to Hugo/AsciiDoctor

I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
This commit is contained in:
Sergio Carlavilla Delgado 2021-01-26 00:31:29 +01:00
parent 0cff342f42
commit 989d921f5d
14375 changed files with 1277937 additions and 3448703 deletions

View file

@ -1,51 +0,0 @@
# The user can override the default list of languages to build and install
# with the DOC_LANG variable.
#
.if defined(ENGLISH_ONLY) && !empty(ENGLISH_ONLY)
DOC_LANG= en_US.ISO8859-1
.endif
.if defined(DOC_LANG) && !empty(DOC_LANG)
SUBDIR = ${DOC_LANG}
.else
SUBDIR = en_US.ISO8859-1
SUBDIR+= bn_BD.UTF-8
SUBDIR+= da_DK.ISO8859-1
SUBDIR+= de_DE.ISO8859-1
SUBDIR+= el_GR.ISO8859-7
SUBDIR+= es_ES.ISO8859-1
SUBDIR+= fr_FR.ISO8859-1
SUBDIR+= hu_HU.ISO8859-2
SUBDIR+= it_IT.ISO8859-15
SUBDIR+= ja_JP.eucJP
SUBDIR+= ko_KR.UTF-8
SUBDIR+= mn_MN.UTF-8
SUBDIR+= nl_NL.ISO8859-1
SUBDIR+= pl_PL.ISO8859-2
SUBDIR+= pt_BR.ISO8859-1
SUBDIR+= ru_RU.KOI8-R
SUBDIR+= tr_TR.ISO8859-9
SUBDIR+= zh_CN.UTF-8
SUBDIR+= zh_TW.UTF-8
.endif
SUBDIR+= share
DOC_PREFIX?= ${.CURDIR}
GIT?= /usr/local/bin/git
update:
.if !exists(${GIT})
@${ECHODIR} "--------------------------------------------------------------"
@${ECHODIR} ">>> ${GIT} is required to update ${.CURDIR}"
@${ECHODIR} "--------------------------------------------------------------"
@${EXIT}
.else
@${ECHODIR} "--------------------------------------------------------------"
@${ECHODIR} ">>> Updating ${.CURDIR} from git repository"
@${ECHODIR} "--------------------------------------------------------------"
cd ${.CURDIR}; ${GIT} pull --ff-only
.endif
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

10
README
View file

@ -1,10 +0,0 @@
$FreeBSD$
If you plan on building a local copy of the FreeBSD documentation, or using
our toolchain in your own projects, please read the Documentation Primer at:
https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/fdp-primer/
for information about the tools and formatting languages we use.
Chapter 1 has a Quick Start section, and Chapter 2 covers the software
and related items in more detail.

View file

@ -1,8 +0,0 @@
# $FreeBSD$
SUBDIR= articles
COMPAT_SYMLINK = bn
DOC_PREFIX?= ${.CURDIR}/..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,7 +0,0 @@
# $FreeBSD$
SUBDIR = explaining-bsd
#SUBDIR+= new-users
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,5 +0,0 @@
#
# $FreeBSD$
#
DESTDIR?= ${DOCDIR}/bn_BD.UTF-8/articles/${.CURDIR:T}

View file

@ -1,18 +0,0 @@
#
# $FreeBSD$
#
MAINTAINER= abulfazl@juniv.edu
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# XML content
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

File diff suppressed because it is too large Load diff

View file

@ -1,15 +0,0 @@
# $FreeBSD$
MAINTAINER= abulfazl@juniv.edu
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "$(DOC_PREFIX)/share/mk/doc.project.mk"

File diff suppressed because it is too large Load diff

View file

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<!-- $FreeBSD$ -->
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteSystem systemIdStartString="http://www.FreeBSD.org/XML/lang/"
rewritePrefix="../../"/>
<rewriteURI uriStartString="http://www.FreeBSD.org/XML/lang/"
rewritePrefix="../../"/>
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-common.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-epub.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-xhtml.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<public
publicId="-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN"
uri="entities.ent" />
</catalog>

View file

@ -1 +0,0 @@
<!-- $FreeBSD$ -->

View file

@ -1,17 +0,0 @@
<?xml version='1.0'?>
<!-- $FreeBSD$ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'>
<xsl:param name="xetex.font">
<xsl:text>\setmainfont{Lohit Bengali}
</xsl:text>
<xsl:text>\setsansfont{Lohit Bengali}
</xsl:text>
<xsl:text>\setmonofont{DejaVu Sans Mono}
</xsl:text>
</xsl:param>
</xsl:stylesheet>

View file

@ -1,76 +0,0 @@
<?xml version='1.0'?>
<!-- $FreeBSD$ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'
xmlns="http://www.w3.org/TR/xhtml1/transitional"
xmlns:str="http://exslt.org/strings"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:db="http://docbook.org/ns/docbook"
exclude-result-prefixes="db"
extension-element-prefixes="str">
<!--
BENGALI-SPECIFIC PARAMETERS
-->
<!-- Base fonts -->
<xsl:param name="body.font.family">Lohit Bengali</xsl:param>
<xsl:param name="sans.font.family">Lohit Bengali, Andika</xsl:param>
<xsl:param name="title.font.family">Lohit Bengali</xsl:param>
<xsl:param name="monospace.font.family">DejaVu Sans Mono</xsl:param>
<xsl:attribute-set name="intermixed.english.attributes">
<xsl:attribute name="font-family">Gentium Plus</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="*" mode="intermixed.english">
<xsl:apply-templates select="."/>
</xsl:template>
<xsl:template match="text()" mode="intermixed.english">
<xsl:for-each select="str:split(., ' ')">
<xsl:choose>
<xsl:when test="contains('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/(', substring(., 1, 1))">
<fo:inline xsl:use-attribute-sets="intermixed.english.attributes">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template match="db:para">
<xsl:variable name="keep.together">
<xsl:call-template name="pi.dbfo_keep-together"/>
</xsl:variable>
<fo:block xsl:use-attribute-sets="para.properties">
<xsl:if test="$keep.together != ''">
<xsl:attribute name="keep-together.within-column"><xsl:value-of
select="$keep.together"/></xsl:attribute>
</xsl:if>
<xsl:call-template name="anchor"/>
<xsl:apply-templates mode="intermixed.english"/>
</fo:block>
</xsl:template>
<xsl:template match="db:simpara">
<xsl:variable name="keep.together">
<xsl:call-template name="pi.dbfo_keep-together"/>
</xsl:variable>
<fo:block xsl:use-attribute-sets="normal.para.spacing">
<xsl:if test="$keep.together != ''">
<xsl:attribute name="keep-together.within-column"><xsl:value-of
select="$keep.together"/></xsl:attribute>
</xsl:if>
<xsl:call-template name="anchor"/>
<xsl:apply-templates mode="intermixed.english"/>
</fo:block>
</xsl:template>
</xsl:stylesheet>

View file

@ -1,8 +0,0 @@
# $FreeBSD$
SUBDIR = articles
COMPAT_SYMLINK = da
DOC_PREFIX?= ${.CURDIR}/..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,3 +0,0 @@
# $FreeBSD$
DOC_PREFIX?= ${.CURDIR}/../..

View file

@ -1,7 +0,0 @@
# $FreeBSD$
SUBDIR+= ipsec-must
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,5 +0,0 @@
#
# $FreeBSD$
#
DESTDIR?= ${DOCDIR}/da_DK.ISO8859-1/articles/${.CURDIR:T}

View file

@ -1,16 +0,0 @@
#
# $FreeBSD$
#
# Article: Uafhængig Verifikation af IPsec Funktionalitet i FreeBSD
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,346 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
The FreeBSD Documentation Project
The FreeBSD Danish Documentation Project
$FreeBSD$
Original revision: 1.13
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="da">
<info><title>Uafhængig Verifikation af IPsec Funktionalitet i
&os;</title>
<author><personname><firstname>David</firstname><surname>Honig</surname></personname><affiliation>
<address><email>honig@sprynet.com</email></address>
</affiliation></author>
<pubdate>3 Maj 1999</pubdate>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.opengroup;
&tm-attrib.general;
</legalnotice>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
&trans.da.jespersen;
<para>Du installerede IPsec og det ser ud til at virke. Men
hvordan ved du det? Jeg beskriver en metode til
eksperimentalt at verificere at IPsec virker.</para>
</abstract>
</info>
<sect1 xml:id="problem">
<title>Problemet</title>
<para>Lad os antage, at du har <link linkend="ipsec-install">
installeret <emphasis>IPsec</emphasis></link>. Hvordan ved du
at det <link linkend="caveat">virker</link>?
Selvfølgelig virker din forbindelse ikke hvis den er
miskonfigureret, og den vil virke når du endelig laver det
rigtigt. &man.netstat.1; lister den. Men kan du verificere det
uafhængigt?</para>
</sect1>
<sect1 xml:id="solution">
<title>Løsningen</title>
<para>Først, noget krypto-relevant teoretisk
information:</para>
<orderedlist>
<listitem>
<para>krypterede data er uniformt distribueret, som f.eks. har
maksimal entropi pr. symbol;</para>
</listitem>
<listitem>
<para>rå, ukomprimerede data er typisk redundant,
f.eks., har sub-maksimal entropi.</para>
</listitem>
</orderedlist>
<para>Hvis du kunne måle entropien af dataene til og fra dit
netværks interface. Så kunne du se forskellen
mellem ukrypterede og krypterede data. Det ville være
tilfældet selvom nogle af dataene i <quote>krypteret
mode</quote> ikke var krypterede, som f.eks. den yderste IP
header skal være, hvis pakken skal kunne routes.</para>
<sect2 xml:id="MUST">
<title>MUST</title>
<para>Ueli Maurers <quote>Universal Statistical Test for Random
Bit Generators</quote> (<link xlink:href="http://www.geocities.com/SiliconValley/Code/4704/universal.pdf">
<acronym>MUST</acronym></link>) måler hurtigt entropien
af en stikprøve. Den bruger en kompressionsagtig
algoritme. <link linkend="code">Forneden angives
kildekoden</link> til en variant der måler successive
(~kvart megabyte) store bidder af en fil.</para>
</sect2>
<sect2 xml:id="tcpdump">
<title>Tcpdump</title>
<para>Vi har også brug for en måde at opsamle de
rå netværksdata. Et program kaldet
&man.tcpdump.1; lader dig gøre dette, hvis du har slået
<emphasis>Berkeley Packet Filter</emphasis> interfacet til i
din <link linkend="kernel">kerne konfig fil</link>.</para>
<para>Kommandoen</para>
<screen><userinput>tcpdump -c 4000 -s 10000 -w dumpfile.bin</userinput></screen>
<para>vil opfange 4000 rå pakker til
<replaceable>dumpfile.bin</replaceable>. Op til 10.000 bytes
per pakke bliver opfanget i dette eksempel.</para>
</sect2>
</sect1>
<sect1 xml:id="experiment">
<title>Eksperimentet</title>
<para>Her er eksperimentet:</para>
<procedure>
<step>
<para>Åbn et vindue til en IPsec vært og et andet
vindue til en usikker vært.</para>
</step>
<step>
<para>Start nu med at <link linkend="tcpdump">opfange
pakker</link>.</para>
</step>
<step>
<para>I det <quote>sikre</quote> vindue, køres &unix;
kommandoen &man.yes.1;, hvilket vil streame
<literal>y</literal> karakteren. Stop dette efter et stykke
tid. Skift til det usikre vindue, og gentag. Stop igen efter
et stykke tid.</para>
</step>
<step>
<para>Kør nu <link linkend="code">MUST</link> på de
opfangede pakker. Du skulle se noget lignende det
følgende. Det vigtige at notere sig er, at den sikre
forbindelse har 93% (6,7) af den ventede værdi (7.18),
og den <quote>normale</quote> forbindelse har 29% (2.1) af den
ventede værdi.</para>
<screen>&prompt.user; <userinput>tcpdump -c 4000 -s 10000 -w ipsecdemo.bin</userinput>
&prompt.user; <userinput>uliscan ipsecdemo.bin</userinput>
Uliscan 21 Dec 98
L=8 256 258560
Measuring file ipsecdemo.bin
Init done
Expected value for L=8 is 7.1836656
6.9396 --------------------------------------------------------
6.6177 -----------------------------------------------------
6.4100 ---------------------------------------------------
2.1101 -----------------
2.0838 -----------------
2.0983 -----------------</screen>
</step>
</procedure>
</sect1>
<sect1 xml:id="caveat">
<title>Undtagelse</title>
<para>Dette eksperiment viser at, IPsec <emphasis>kan</emphasis>
se ud til at distribuere payload data
<emphasis>uniformt</emphasis>, som kryptering skal. Men det
eksperiment der er beskrevet her <emphasis>kan ikke</emphasis>
detektere mange mulige fejl i et system (ingen af hvilke jeg har
nogle beviser for). Disse inkluderer dårlig nøgle
generering eller udveksling, data eller nøgler der kan
ses af andre, brug af svage algoritmer, kernel undergravning,
osv. Studér kildekoden; kend kildekoden.</para>
</sect1>
<sect1 xml:id="IPsec">
<title>IPsec---Definition</title>
<para>Internet Protokol sikkerheds udvidelser til IPv4;
krævet for IPv6. En protokol til at forhandle kryptering
og autentifikation på IP (vært-til-vært)
niveau. SSL sikrer kun en applikationssocket;
<application>SSH</application> sikrer kun et login;
<application>PGP</application> sikrer kun en specifik fil eller
besked. IPsec krypterer alting mellem to værter.</para>
</sect1>
<sect1 xml:id="ipsec-install">
<title>Installering af IPsec</title>
<para>De fleste af de moderne versioner af &os; har IPsec
support i deres base kildekode. Så du er sikkert
nødt til at inkludere <option>IPSEC</option> optionen i
din kernel konfig og, efter genbygning og reinstallation af
kernel, konfigurere IPsec forbindelser ved hjælp af
&man.setkey.8; kommandoen.</para>
<para>En udførlig guide om at køre IPsec på
&os; er tilrådighed i <link xlink:href="../../books/handbook/ipsec.html">FreeBSD
Håndbogen</link>.</para>
</sect1>
<sect1 xml:id="kernel">
<title>src/sys/i386/conf/KERNELNAME</title>
<para>Dette skal være til stede i kernel konfig filen for at
være i stand til at opfange netværksdata med
&man.tcpdump.1;. Vær sikker på at køre
&man.config.8; efter at tilføje dette, og genbygge og
reinstallere.</para>
<programlisting>device bpf</programlisting>
</sect1>
<sect1 xml:id="code">
<title>Maurers universelle statistiske test (for blok
størrelse=8 bits)</title>
<para>Du kan finde samme kode på <link xlink:href="http://www.geocities.com/SiliconValley/Code/4704/uliscanc.txt">
dette link</link>.</para>
<programlisting>/*
ULISCAN.c ---blocksize of 8
1 Oct 98
1 Dec 98
21 Dec 98 uliscan.c derived from ueli8.c
This version has // comments removed for Sun cc
This implements Ueli M Maurer's "Universal Statistical Test for Random
Bit Generators" using L=8
Accepts a filename on the command line; writes its results, with other
info, to stdout.
Handles input file exhaustion gracefully.
Ref: J. Cryptology v 5 no 2, 1992 pp 89-105
also on the web somewhere, which is where I found it.
-David Honig
honig@sprynet.com
Usage:
ULISCAN filename
outputs to stdout
*/
#define L 8
#define V (1&lt;&lt;L)
#define Q (10*V)
#define K (100 *Q)
#define MAXSAMP (Q + K)
#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
int main(argc, argv)
int argc;
char **argv;
{
FILE *fptr;
int i,j;
int b, c;
int table[V];
double sum = 0.0;
int iproduct = 1;
int run;
extern double log(/* double x */);
printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP);
if (argc &lt; 2) {
printf("Usage: Uliscan filename\n");
exit(-1);
} else {
printf("Measuring file %s\n", argv[1]);
}
fptr = fopen(argv[1],"rb");
if (fptr == NULL) {
printf("Can't find %s\n", argv[1]);
exit(-1);
}
for (i = 0; i &lt; V; i++) {
table[i] = 0;
}
for (i = 0; i &lt; Q; i++) {
b = fgetc(fptr);
table[b] = i;
}
printf("Init done\n");
printf("Expected value for L=8 is 7.1836656\n");
run = 1;
while (run) {
sum = 0.0;
iproduct = 1;
if (run)
for (i = Q; run &amp;&amp; i &lt; Q + K; i++) {
j = i;
b = fgetc(fptr);
if (b &lt; 0)
run = 0;
if (run) {
if (table[b] &gt; j)
j += K;
sum += log((double)(j-table[b]));
table[b] = i;
}
}
if (!run)
printf("Premature end of file; read %d blocks.\n", i - Q);
sum = (sum/((double)(i - Q))) / log(2.0);
printf("%4.4f ", sum);
for (i = 0; i &lt; (int)(sum*8.0 + 0.50); i++)
printf("-");
printf("\n");
/* refill initial table */
if (0) {
for (i = 0; i &lt; Q; i++) {
b = fgetc(fptr);
if (b &lt; 0) {
run = 0;
} else {
table[b] = i;
}
}
}
}
}</programlisting>
</sect1>
</article>

View file

@ -1,18 +0,0 @@
# $FreeBSD$
.if exists(Makefile.conf)
.include "Makefile.conf"
.endif
.if exists(../Makefile.inc)
.include "../Makefile.inc"
.endif
# Subdirectories
# XML
.if !defined(WEB_ONLY) || empty(WEB_ONLY)
SUBDIR= doc
.endif
WEBDIR?= data/da
.include "${DOC_PREFIX}/share/mk/web.site.mk"

View file

@ -1,4 +0,0 @@
# $FreeBSD$
WEBBASE?= /data/da
DOC_PREFIX?= ${.CURDIR}/../../..

View file

@ -1,47 +0,0 @@
#
# $FreeBSD$
#
# Build the FreeBSD documentation *outside* of the doc/ tree, and install it
# in to the right place as necessary.
#
.if exists(../Makefile.conf)
.include "../Makefile.conf"
.endif
.if exists(../Makefile.inc)
.include "../Makefile.inc"
.endif
_DOC_FORMATS?= html-split html
all: all-all
all-all:
${MAKE} -C ${DOC_PREFIX}/${LANGCODE} FORMATS="${_DOC_FORMATS}" all
all-pgpkeyring:
${MAKE} -C ${DOC_PREFIX}/share/pgpkeys pgpkeyring.txt
clean:
${MAKE} -C ${DOC_PREFIX}/${LANGCODE} FORMATS="${_DOC_FORMATS}" DOCDIR=${DESTDIR}/data/doc clean
# here are dragons
install:
unset DESTDIR || true; \
${MAKE} -C ${DOC_PREFIX}/${LANGCODE} FORMATS="${_DOC_FORMATS}" DOCDIR=${DESTDIR}/data/doc install
${CP} ${DOC_PREFIX}/share/pgpkeys/pgpkeyring.txt ${DESTDIR}/data/doc/pgpkeyring.txt
.include "${DOC_PREFIX}/share/mk/web.site.mk"
.if ${LANGCODE} == en_US.ISO8859-1
all: all-pgpkeyring
.endif
# XXX
obj: _OBJUSE
_OBJUSE: .USE
@unset DESTDIR || true; \
cd ${DOC_PREFIX}/${LANGCODE}; \
${MAKE} ${.TARGET}

View file

@ -1,32 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<!-- $FreeBSD$ -->
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteSystem systemIdStartString="http://www.FreeBSD.org/XML/lang/"
rewritePrefix="../../"/>
<rewriteURI uriStartString="http://www.FreeBSD.org/XML/lang/"
rewritePrefix="../../"/>
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-common.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-epub.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-fo.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<system
systemId="http://www.FreeBSD.org/XML/lang/share/xml/freebsd-dblatex.xsl"
uri="http://www.FreeBSD.org/XML/share/xml/empty.xsl" />
<public publicId="-//FreeBSD//ENTITIES FreeBSD Language Specific Entities//EN"
uri="l10n.ent" />
<public publicId="-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN"
uri="entities.ent"/>
<public publicId="-//FreeBSD//ENTITIES DocBook Translator Entities//DK"
uri="translators.ent" />
</catalog>

View file

@ -1,24 +0,0 @@
<!--
The FreeBSD Documentation Project
The FreeBSD Danish Documentation Project
$FreeBSD$
-->
<para xmlns="http://docbook.org/ns/docbook">DENNE DOKUMENTATION ER FORSYNET AF FREEBSD DOKUMENTATIONS
PROJEKTET "SOM DET ER" OG UDEN NOGLE UDTRYKTE ELLER ANTYDEDE
GARANTIER, INKLUDERENDE MEN IKKE BEGRÆNSET TIL: ANTYDEDE GARANTIER
FOR SALGBARHED OG EGNETHED FOR ET SPECIFIKT FORMÅL. UNDER INGEN
OMSTÆNDIGHEDER SKAL FREEBSD DOKUMENTATIONS PROJEKTET VÆRE
HÆFTENDE, FOR NOGLE DIREKTE, INDIREKTE, TILFÆLDIGE,
SPECIELLE, EKSEMPLARISKE, ELLER FØLGENDE SKADER (INKLUDERENDE,
MEN IKKE BEGRÆNSET TIL:
FREMSKAFFELSE AF ERSTATNINGS VARER ELLER SERVICEYELSER; TAB AF
BRUGBARHED, DATA, ELLER UDBYTTE; ELLER AFBRYDELSE AF FORRETNING)
HVORDAN END DEN ER OPSTÅET OG UNDER EN HVILKEN SOM HELST TEORI
OM ANSVARLIGHED, HVAD ENTEN DET ER I KONTRAKT, STRIKS ANSVARLIGHED
ELLER TORT (INKLUDERENDE FORSØMMELIGHED ELLER PÅ ANDEN VIS)
OPSTÅENDE PÅ NOGEN MÅDE UD AF BRUGEN AF DENNE
DOKUMENTATION, SELV HVIS GJORT OPMÆRKSOM PÅ MULIGHEDEN FOR
SÅDAN SKADE.</para>

View file

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $FreeBSD$ -->
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN"
"nonexistent">
%freebsd;
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//DK"
"translators.ent">
%translators;
<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//DK"
"mailing-lists.ent">
%mailing-lists;
<!ENTITY % newsgroups PUBLIC "-//FreeBSD//ENTITIES DocBook Newsgroup Entities//DK"
"newsgroups.ent">
%newsgroups;
<!ENTITY % teams PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//DK"
"teams.ent">
%teams;
<!ENTITY % trademarks PUBLIC "-//FreeBSD//ENTITIES DocBook Trademark Entities//EN"
"nonexistent">
%trademarks;

View file

@ -1,20 +0,0 @@
<?xml version='1.0' encoding='iso-8859-1'?>
<!-- $FreeBSD$ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'
xmlns="http://www.w3.org/TR/xhtml1/transitional"
exclude-result-prefixes="#default">
<xsl:template name="user.footer.navigation">
<p align="center"><small>Dette og andre dokumenter kan downloades fra
<a href="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/</a></small></p>
<p align="center"><small>For spørgsmål om FreeBSD, læs
<a href="http://www.FreeBSD.org/docs.html">documentationen</a> før du kontakter
&lt;<a href="mailto:questions@FreeBSD.org">questions@FreeBSD.org</a>&gt;.<br/>
For spørgsmål angående denne dokumentation, e-mail
&lt;<a href="mailto:doc@FreeBSD.org">doc@FreeBSD.org</a>&gt;.</small></p>
</xsl:template>
</xsl:stylesheet>

View file

@ -1,9 +0,0 @@
<!-- -*- sgml -*-
DocBook Language Specific Entities for Localization (da).
$FreeBSD$
-->
<!-- docformat navi -->
<!ENTITY docnavi.single-html "Samlet">
<!ENTITY docnavi.split-html "Opdelt">

View file

@ -1,206 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Navne på FreeBSD mailing lister og relateret software.
$FreeBSD$
-->
<!ENTITY a.advocacy "FreeBSD fremmelses mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-advocacy@FreeBSD.org</email>">
<!ENTITY a.afs "FreeBSD AFS porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-afs@FreeBSD.org</email>">
<!ENTITY a.aic7xxx "FreeBSD Adaptec AIC7xxx diskussions mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-aic7xxx@FreeBSD.org</email>">
<!ENTITY a.alpha "FreeBSD Alpha porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-alpha@FreeBSD.org</email>">
<!ENTITY a.announce "FreeBSD annoncerings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-announce@FreeBSD.org</email>">
<!ENTITY a.arch "FreeBSD arkitektur og design mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-arch@FreeBSD.org</email>">
<!ENTITY a.arm "FreeBSD ARM porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-arm@FreeBSD.org</email>">
<!ENTITY a.atm "FreeBSD ATM netværks mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-atm@FreeBSD.org</email>">
<!ENTITY a.audit "FreeBSD kildekode auditerings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-audit@FreeBSD.org</email>">
<!ENTITY a.binup "FreeBSD binær opdaterings system mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-binup@FreeBSD.org</email>">
<!ENTITY a.bugbusters "FreeBSD bugbusters mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-bugbusters@FreeBSD.org</email>">
<!ENTITY a.bugs "FreeBSD problem rapports mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-bugs@FreeBSD.org</email>">
<!ENTITY a.chat "FreeBSD snak mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-chat@FreeBSD.org</email>">
<!ENTITY a.cluster "FreeBSD clustering mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-cluster@FreeBSD.org</email>">
<!ENTITY a.committers "FreeBSD committer mailing liste
<email xmlns='http://docbook.org/ns/docbook'>cvs-committers@FreeBSD.org</email>">
<!ENTITY a.config "FreeBSD installation og konfigurations værktøjs mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-config@FreeBSD.org</email>">
<!ENTITY a.core "FreeBSD core team
<email xmlns='http://docbook.org/ns/docbook'>freebsd-core@FreeBSD.org</email>">
<!ENTITY a.current "FreeBSD-CURRENT mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-current@FreeBSD.org</email>">
<!ENTITY a.cvsall "FreeBSD CVS commit beskeds mailing liste
<email xmlns='http://docbook.org/ns/docbook'>cvs-all@FreeBSD.org</email>">
<!ENTITY a.database "FreeBSD baserede Databaser mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-database@FreeBSD.org</email>">
<!ENTITY a.developers "FreeBSD developers mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-developers@FreeBSD.org</email>">
<!ENTITY a.doc "FreeBSD dokumentations projekt mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-doc@FreeBSD.org</email>">
<!ENTITY a.emulation "FreeBSD-emulation mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-emulation@FreeBSD.org</email>">
<!ENTITY a.firewire "FreeBSD FireWire (IEEE 1394) diskussions mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-firewire@FreeBSD.org</email>">
<!ENTITY a.fs "FreeBSD filsystem projekt mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-fs@FreeBSD.org</email>">
<!ENTITY a.gnome "FreeBSD GNOME og GNOME programmer mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-gnome@FreeBSD.org</email>">
<!ENTITY a.hackers "FreeBSD teknisk diskussions mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-hackers@FreeBSD.org</email>">
<!ENTITY a.hardware "FreeBSD hardware og udstyrs mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-hardware@FreeBSD.org</email>">
<!ENTITY a.hubs "FreeBSD mirror sites mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-hubs@FreeBSD.org</email>">
<!ENTITY a.i18n "FreeBSD internationaliserings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-i18n@FreeBSD.org</email>">
<!ENTITY a.ia64 "FreeBSD IA64 porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-ia64@FreeBSD.org</email>">
<!ENTITY a.install "FreeBSD installation udviklings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-install@FreeBSD.org</email>">
<!ENTITY a.ipfw "FreeBSD IPFW kode mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-ipfw@FreeBSD.org</email>">
<!ENTITY a.isdn "FreeBSD ISDN mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-isdn@FreeBSD.org</email>">
<!ENTITY a.isp "FreeBSD Internet service provider's mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-isp@FreeBSD.org</email>">
<!ENTITY a.java "FreeBSD Java sprog mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-java@FreeBSD.org</email>">
<!ENTITY a.jobs "FreeBSD relateret beskæftigelse mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-jobs@FreeBSD.org</email>">
<!ENTITY a.lfs "FreeBSD LFS porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-lfs@FreeBSD.org</email>">
<!ENTITY a.libh "FreeBSD libh installation og pakke system mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-libh@FreeBSD.org</email>">
<!ENTITY a.mips "FreeBSD MIPS porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-mips@FreeBSD.org</email>">
<!ENTITY a.mobile "FreeBSD laptop computer mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-mobile@FreeBSD.org</email>">
<!ENTITY a.mozilla "FreeBSD port af Mozilla browseren mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-mozilla@FreeBSD.org</email>">
<!ENTITY a.multimedia "FreeBSD multimedia mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-multimedia@FreeBSD.org</email>">
<!ENTITY a.net "FreeBSD netværks mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-net@FreeBSD.org</email>">
<!ENTITY a.newbies "FreeBSD nye brugere mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-newbies@FreeBSD.org</email>">
<!ENTITY a.newbus "Ny Bus Arkitektur mailing liste
<email xmlns='http://docbook.org/ns/docbook'>new-bus-arch@bostonradio.org</email>">
<!ENTITY a.platforms "FreeBSD non-Intel platforms porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-platforms@FreeBSD.org</email>">
<!ENTITY a.policy "FreeBSD core team politisk beslutnings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-policy@FreeBSD.org</email>">
<!ENTITY a.ports "FreeBSD ports mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-ports@FreeBSD.org</email>">
<!ENTITY a.ppc "FreeBSD PowerPC portering mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-ppc@FreeBSD.org</email>">
<!ENTITY a.qa "FreeBSD Kvalitets assurance mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-qa@FreeBSD.org</email>">
<!ENTITY a.questions "FreeBSD generelle spørgsmåls mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-questions@FreeBSD.org</email>">
<!ENTITY a.realtime "FreeBSD realtime extensions mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-realtime@FreeBSD.org</email>">
<!ENTITY a.scsi "FreeBSD SCSI subsystem mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-scsi@FreeBSD.org</email>">
<!ENTITY a.security "FreeBSD sikkerheds mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-security@FreeBSD.org</email>">
<!ENTITY a.security-notifications "FreeBSD sikkerheds notifikationer mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-security-notifications@FreeBSD.org</email>">
<!ENTITY a.small "FreeBSD-small mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-small@FreeBSD.org</email>">
<!ENTITY a.smp "FreeBSD symmetrisk multiprocessing mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-smp@FreeBSD.org</email>">
<!ENTITY a.sparc "FreeBSD SPARC porterings mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-sparc@FreeBSD.org</email>">
<!ENTITY a.stable "FreeBSD-STABLE mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-stable@FreeBSD.org</email>">
<!ENTITY a.standards "FreeBSD C99 og POSIX compliance mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-standards@FreeBSD.org</email>">
<!ENTITY a.test "FreeBSD test mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-test@FreeBSD.org</email>">
<!ENTITY a.tokenring "FreeBSD tokenring mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-tokenring@FreeBSD.org</email>">
<!ENTITY a.usergroups "FreeBSD bruger gruppe koordinations mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-user-groups@FreeBSD.org</email>">
<!ENTITY a.vendors "FreeBSD leverandør pre-release koordinations mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-vendors@FreeBSD.org</email>">
<!ENTITY a.www "FreeBSD Webmaster mailing liste
<email xmlns='http://docbook.org/ns/docbook'>freebsd-www@FreeBSD.org</email>">
<!ENTITY a.majordomo "<email xmlns='http://docbook.org/ns/docbook'>majordomo@FreeBSD.org</email>">

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Navne på FreeBSD nyhedsgrupper
$FreeBSD$
-->
<!ENTITY ng.misc "
<link xlink:href='news:comp.unix.bsd.freebsd.misc'>comp.unix.bsd.freebsd.misc</link>
nyhedsgruppen">

View file

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Navne og email adresser på de teams af folk der arbejder
på specifikke opgaver. Normalt er de bare mail aliaser der
er sat op på hub.FreeBSD.org
Brug disse entiteter når du refererer de korrekte teams.
Vær venlig at holde denne liste i alfabetisk orden efter
entitets navne.
VIGTIGT: Hvis du sletter navne fra denne fil *skal* du sikre dig at
alle referencer til dem er fjernet fra håndbogens
oversættelser. Hvis de ikke er fjernet *vil* du
ædelægge bygningen for de andre sprog, og vi
vil drille dig i fuld offentlighed.
$FreeBSD$
-->
<!ENTITY a.core-secretary "Core Team Sekretær <email xmlns='http://docbook.org/ns/docbook'>core-secretary@FreeBSD.org</email>">
<!ENTITY a.cvs "CVS Repository Meisters <email xmlns='http://docbook.org/ns/docbook'>cvs@FreeBSD.org</email>">
<!ENTITY a.faq "FAQ Vedligeholder <email xmlns='http://docbook.org/ns/docbook'>faq@FreeBSD.org</email>">
<!ENTITY a.portmgr "Ports Management Team <email xmlns='http://docbook.org/ns/docbook'>portmgr@FreeBSD.org</email>">
<!ENTITY a.re "Release Engineering Team <email xmlns='http://docbook.org/ns/docbook'>re@FreeBSD.org</email>">
<!ENTITY a.donations "Donations forbindelses kontor <email xmlns='http://docbook.org/ns/docbook'>donations@FreeBSD.org</email>">
<!ENTITY a.security-officer "Sikkerheds officers Team <email xmlns='http://docbook.org/ns/docbook'>security-officer@FreeBSD.org</email>">
<!ENTITY a.www "FreeBSD Webmaster mailing liste <email xmlns='http://docbook.org/ns/docbook'>www@FreeBSD.org</email>">

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD Dannish Documentation Project
Navne og email adresser på medlemmerne af det danske oversættelses team.
$FreeBSD$
-->
<!ENTITY a.da.jespersen "Laust S. Jespersen
<email xmlns='http://docbook.org/ns/docbook'>Laust@doc.freebsd.dk</email>">
<!-- Oversættelser -->
<!ENTITY trans.da.jespersen
"<para xmlns='http://docbook.org/ns/docbook'><emphasis>Dansk version af &a.da.jespersen;.</emphasis></para>">

View file

@ -1,15 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/Makefile,v 1.2 2004/11/28 21:13:46 jkois Exp $
# basiert auf: 1.7
COMPAT_SYMLINK = de
SUBDIR = articles
SUBDIR+= books
DOC_PREFIX?= ${.CURDIR}/..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,3 +0,0 @@
# $FreeBSD$
DOC_PREFIX?= ${.CURDIR}/../..

View file

@ -1,21 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# basiert auf: 1.42
SUBDIR = contributing
SUBDIR+= explaining-bsd
SUBDIR+= freebsd-update-server
SUBDIR+= leap-seconds
SUBDIR+= linux-users
SUBDIR+= nanobsd
SUBDIR+= new-users
SUBDIR+= port-mentor-guidelines
SUBDIR+= solid-state
# ROOT_SYMLINKS+= new-users
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,10 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/Makefile.inc,v 1.1 2004/11/28 21:13:46 jkois Exp $
# basiert auf: 1.4
#
DESTDIR?= ${DOCDIR}/de_DE.ISO8859-1/articles/${.CURDIR:T}

View file

@ -1,24 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/contributing/Makefile,v 1.2 2005/01/06 20:22:43 mheinen Exp $
# basiert auf: 1.6
#
# Article: FreeBSD unterstuetzen
DOC?= article
FORMATS?= html html-split
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,606 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/articles/contributing/article.xml,v 1.12 2012/03/25 14:15:57 bcr Exp $
basiert auf: 1.512
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>&os; unterstützen</title>
<abstract>
<para>Dieser Artikel beschreibt, wie Einzelpersonen oder
Unternehmen das &os;-Projekt unterstützen
können.</para>
<para><emphasis>Übersetzt von Johann Kois</emphasis>.</para>
</abstract>
<authorgroup>
<author><personname><firstname>Jordan</firstname><surname>Hubbard</surname></personname><contrib>Beigetragen von </contrib></author>
</authorgroup>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.ieee;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
</info>
<indexterm><primary>Unterstützung</primary></indexterm>
<para>Sie wollen &os; unterstützen? Das ist großartig!
&os; ist auf die Unterstützung seiner Anwender
<emphasis>angewiesen</emphasis>, um zu überleben. Ihre
Beiträge werden nicht nur begrüßt, sie sind
für die Weiterentwicklung von &os; von elementarer
Bedeutung.</para>
<para>Im Gegensatz zu dem, was einige Leute Ihnen einreden wollen,
müssen Sie kein Spitzenprogrammierer oder persönlicher
Freund eines Mitglieds des FreeBSD-Core-Teams sein, damit Ihre
Beiträge akzeptiert werden. Ein große und wachsende
Anzahl von internationalen Unterstützern verschiedenen
Alters und mit verschiedenen technischen Fähigkeiten
entwickelt FreeBSD weiter. Es gibt immer mehr zu tun, als
von den beteiligten Personen bewältigt werden kann, daher
freuen wir uns über jede Hilfe.</para>
<para>Das FreeBSD-Projekt ist für ein komplettes Betriebssytem
verantwortlich, nicht nur für einen Kernel oder ein paar
verstreute Werkzeuge. Daher umfasst unsere
<filename>TODO</filename>-Liste viele verschiedene
Aufgabenbereiche: Angefangen von der Dokumentation, über Betatests
und Präsentationen bis zu Systeminstallationen und speziellen
Weiterentwicklungen des Kernels. Da Fähigkeiten in den
verschiedensten Bereichen benötigt werden, kann fast jeder
etwas zu diesem Projekt beitragen.</para>
<para>Personen, die im kommerziellen Umfeld mit FreeBSD zu tun
haben, sind ebenfalls aufgefordert, sich bei uns zu melden.
Brauchen Sie eine spezielle Erweiterung, damit Ihr Produkt
funktioniert? Wir kommen Ihren Wünschen gerne entgegen,
vorausgesetzt, sie sind nicht zu speziell. Arbeiten Sie an einem
Mehrwertprodukt? Dann informieren Sie uns bitte! Wir könnten in
der Lage sein, an einem Teil davon mitzuarbeiten. Die Welt der
freien Software fordert viele bestehenden Annahmen über die
Entwicklung, den Verkauf und die Wartung von Software heraus, und
wir bitten Sie, ernsthaft darüber nachzudenken.</para>
<sect1 xml:id="contrib-what">
<title>Was wird gebraucht?</title>
<para>Die folgende Liste von Aufgaben und Unterprojekten
repräsentiert eine Zusammenfassung von
verschiedenen <filename>TODO</filename>-Listen und
Benutzerwünschen.</para>
<sect2 xml:id="non-programmer-tasks">
<title>Aufgaben für Nicht-Programmierer</title>
<para>Viele Menschen, die an FreeBSD beteiligt sind, sind keine
Programmierer. Es sind Leute, die an der Dokumentation
arbeiten, Internetseiten erstellen oder einfach Hilfe
anbieten. Alles, was diese Leute mitbringen müssen, sind Zeit
und die Bereitschaft, etwas zu lernen.</para>
<orderedlist>
<listitem>
<para>Lesen Sie die häufig gestellten Fragen (FAQ) und
das Handbuch gelegentlich. Wenn etwas schlecht erklärt
wird, veraltet oder einfach falsch ist, teilen Sie es uns
mit. Oder noch besser, korrigieren Sie es (SGML ist nicht
schwer zu erlernen, wir akzeptieren aber auch Vorschläge
im ASCII-Format.).</para>
</listitem>
<listitem>
<para>Helfen Sie dabei, die Dokumentation in Ihre
Muttersprache zu übersetzen. Wenn an der Übersetzung in
Ihre Sprache bereits gearbeitet wird, helfen Sie, indem
Sie weitere Dokumente übersetzen, oder sorgen Sie dafür,
dass die Übersetzungen aktuell sind. Lesen Sie zuerst
die <link xlink:href="&url.books.fdp-primer;/translations.html">
Übersetzungs-FAQ</link> der Fibel für neue
Mitarbeiter des FreeBSD-Dokumentations-Projekts. Sie
verpflichten sich dabei nicht dazu, jede einzelne Seite zu
übersetzen &mdash; als Freiwilliger übersetzen
Sie genau so viel, wie Sie wollen. Wenn jemand mit der
Übersetzung beginnt, beteiligen sich fast immer auch
andere Personen daran. Wenn Sie nur Zeit und
Energie für einen Teil der Dokumentation haben, dann
übersetzen Sie bitte die Installationsanleitung.</para>
</listitem>
<listitem>
<para>Lesen Sie &a.questions; sowie die &ng.misc;
gelegentlich (oder sogar regelmäßig). Es kann
sehr befriedigend sein, wenn Sie Ihr Wissen teilen und
anderen Leuten dabei helfen können, deren Probleme zu
lösen; vielleicht lernen Sie sogar noch etwas Neues!
Diese Foren können auch eine Quelle für Ideen
sein, an denen man arbeiten könnte.</para>
</listitem>
</orderedlist>
</sect2>
<sect2 xml:id="ongoing-programmer-tasks">
<title>Aufgaben für Programmierer</title>
<para>Die meisten der hier aufgeführten Aufgaben erfordern
entweder einen bedeutenden Zeitaufwand oder eine sehr gute
Kenntnis des FreeBSD-Kernels, oder beides. Es gibt jedoch
genug Aufgaben, die auch für
<quote>Wochenendprogrammierer</quote> geeignet sind.</para>
<orderedlist>
<listitem>
<para>Wenn Sie FreeBSD-CURRENT installiert haben und über
eine schnelle Internetanbindung verfügen, können
Sie von <systemitem class="fqdomainname">current.FreeBSD.org</systemitem>
ein täglich neu erzeugtes Release herunterladen &mdash;
versuchen Sie dann hin und wieder, das neueste Release zu
installieren und melden Sie dabei eventuell auftretende
Fehler.</para>
</listitem>
<listitem>
<para>Lesen Sie &a.bugs;. Es könnte ein Problem geben,
an dem Sie konstruktiv mitarbeiten könnten, oder
für das es Patches gibt, die Sie testen könnten.
Oder Sie könnten sogar versuchen, eines dieser Probleme
selbst zu beheben.</para>
</listitem>
<listitem>
<para>Wenn Sie von Fehlerbehebungen wissen, die zwar
erfolgreich auf -CURRENT angewendet wurden, die aber nach
einem bestimmten Zeitraum nicht in -STABLE eingebracht
wurden (normalerweise innerhalb einiger Wochen), erinnern
Sie den Committer höflich daran.</para>
</listitem>
<listitem>
<para>Verschieben Sie beigetragene Software im Quellcodebaum
nach <filename>src/contrib</filename>.</para>
</listitem>
<listitem>
<para>Stellen Sie sicher, dass der Code in
<filename>src/contrib</filename> aktuell
ist.</para>
</listitem>
<listitem>
<para>Bauen Sie den Quellcodebaum (oder einen Teil des
Baumes) mit aktivierten Compilerwarnungen und beheben
Sie auftretende Fehlermeldungen.</para>
</listitem>
<listitem>
<para>Beheben Sie Fehlermeldungen bei der Installation
von Ports, die auf unsauberen Code hinweisen (etwa die
Verwendung von <function>gets()</function> oder die
Einbindung von <filename>malloc.h</filename>).</para>
</listitem>
<listitem>
<para>Wenn Sie einen Port beigetragen und dabei irgendwelche
&os;-spezifischen Änderungen getätigt haben, senden Sie
Ihre Patches an die ursprünglichen Autoren (das wird ihr
Leben einfacher machen, wenn die nächste Version des Ports
erscheint).</para>
</listitem>
<listitem>
<para>Besorgen Sie sich Kopien von wichtigen Standards wie
&posix;. Als Ausgangspunkt für Ihre Suche können
Sie die Seite des <link xlink:href="&url.base;/projects/c99/index.html">FreeBSD
C99 &amp; POSIX Standards Conformance Project</link>
verwenden. Vergleichen Sie das Verhalten von FreeBSD mit
dem von dem jeweiligen Standard geforderten Verhalten.
Verhält sich FreeBSD in einem Bereich unterschiedlich,
sollten Sie einen Problembericht (PR) einsenden. Wenn Sie
dazu in der Lage sind, können Sie sich auch eine Lösung
des Problems überlegen und Ihrem PR einen Patch
anfügen. Wenn Sie der Meinung sind, dass der Standard
nicht korrekt ist, können Sie auch das jeweilige
Standardgremium um weitere Informationen bitten.</para>
</listitem>
<listitem>
<para>Schlagen Sie weitere Aufgaben für diese Liste
vor!</para>
</listitem>
</orderedlist>
</sect2>
<sect2>
<title>Die PR-Datenbank durchsehen</title>
<indexterm><primary>problem reports database</primary></indexterm>
<para>Die <link xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi">FreeBSD
PR-Datenbank</link> enthält alle derzeit offenen
Problemberichte und Verbesserungswüsche, die von
Anwendern eingereicht wurden. Die PR-Datenbank enthält
sowohl Aufgaben für Programmierer als auch für
Nichtprogrammierer. Gehen Sie die Liste der offenen PRs
durch, um festzustellen, ob Sie ein Problem interessiert. Bei
manchen Berichten geht es nur darum, zu überprüfen, ob der
bereitgestellte Patch korrekt funktioniert. Andere
Problemberichte sind hingegen komplexer, oder beinhalten
überhaupt keinen Lösungsvorschlag.</para>
<para>Beginnen Sie mit den PRs, die niemandem zugewiesen sind.
Ist ein PR, für den Sie eine Lösung hätten,
bereits jemandem zugewiesen, nehmen Sie mit dem dafür
Zuständigen Kontakt auf und fragen Sie ihn, ob Sie an
der Lösung mitarbeiten können &mdash; es könnte
etwa bereits ein Patch existieren, der nur noch getestet
werden muss, oder Sie könnten weitere Ideen mit ihm
diskutieren.</para>
</sect2>
<sect2>
<title>Wählen Sie einen der Einträge auf der
<quote>Ideen</quote>-Seite aus</title>
<para>Die <link xlink:href="&url.base;/projects/ideas/">Liste
von Projekten und Ideen</link> für &os; ist auch
für Freiwillige interessant, die etwas zum &os; Projekt
beitragen möchten. Diese Liste wird regelmäßig
aktualisiert und enthält Einträge für Programmierer
und Nicht-Programmierer sowie Informationen zu jedem
Projekt.</para> </sect2>
</sect1>
<sect1 xml:id="contrib-how">
<title>Was Sie tun können</title>
<para>Mögliche Beiträge lassen sich in fünf
Kategorien einteilen:</para>
<sect2 xml:id="contrib-general">
<title>Fehlerberichte und allgemeine Vorschläge</title>
<para>Eine Idee oder ein Vorschlag von
<emphasis>allgemeinem</emphasis> technischen Interesse sollte
an &a.hackers; geschickt werden. Personen, die an solchen
Fragen interessiert sind (und kein Problem mit einem
<emphasis>hohen</emphasis> Mailaufkommen haben!) können
die Mailingliste &a.hackers; auch abonnieren. Informationen
zu dieser und anderen Mailinglisten finden Sie im <link xlink:href="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">
FreeBSD Handbuch</link>.</para>
<para>Wenn Sie einen Fehler gefunden oder eine Verbesserung
entwickelt haben, vergessen Sie nicht, einen Bericht über
&man.send-pr.1; oder dessen <link xlink:href="&url.base;/de/send-pr.html">Internetschnittstelle</link>
zu erstellen. Versuchen Sie bitte, jedes Feld auszufüllen.
Ist Ihr Patch kleiner als 65&nbsp;KB, sollten Sie ihn direkt
in den Bericht einbauen. Kann der Patch direkt auf den
Quellcodebaum angewendet werden, fügen Sie
<literal>[PATCH]</literal> im Synopsis-Feld ein. Wenn Sie
einen Patch einfügen, verwenden Sie bitte <emphasis>kein
copy-and-paste</emphasis>, weil dadurch Tabulatoren in
Leerzeichen umgewandelt werden, was den Patch unbrauchbar
macht. Sind die Patches viel größer als 20&nbsp;KB, sollten
Sie sie komprimieren (z.B. mit &man.gzip.1; oder
&man.bzip2.1;) und &man.uuencode.1; verwenden, um diese in
ihren Problembericht einzufügen.</para>
<para>Nachdem Sie einen Bericht versandt haben, erhalten Sie
eine E-Mail, die eine Bestätigung sowie eine
Identifikationsnummer enthält. Geben Sie diese Nummer im
Betreff der Nachricht an (<literal>"Re:
kern/3377"</literal>), wenn Sie neue Informationen zu diesem
Problem an &a.bugfollowup; senden. Zusätzliche Informationen
zu Problemberichten sollten immer auf diese Art und Weise
verschickt werden.</para>
<para>Sollten Sie innerhalb einer Woche keine Bestätigung
erhalten, oder &man.send-pr.1; nicht verwenden können,
können Sie über &a.bugs; jemanden bitten, dies
für Sie zu erledigen.</para>
<para>Weitere Informationen zum Verfassen von guten
Problemberichten finden Sie im entsprechenden <link xlink:href="&url.articles.problem-reports.en;/article.html">
Artikel</link>.</para>
</sect2>
<sect2>
<title>Änderungen der Dokumentation</title>
<indexterm><primary>documentation submissions</primary></indexterm>
<para>Änderungen der Dokumentation werden vom &a.doc;
überwacht. Lesen Sie bitte die <link xlink:href="&url.books.fdp-primer;/index.html">Fibel für neue
Mitarbeiter des FreeBSD-Dokumentationsprojekts</link> für
weitere Informationen. Korrekturen und Ergänzungen
(selbst kleine Änderungen sind willkommen!) werden mit
&man.send-pr.1; übermittelt. Lesen Sie dazu den Abschnitt
<link linkend="contrib-general">Fehlerberichte und allgemeine
Vorschläge</link>.</para>
</sect2>
<sect2>
<title>Änderungen am vorhandenen Quellcode</title>
<indexterm><primary>FreeBSD-CURRENT</primary></indexterm>
<para>Änderungen des existierenden Quellcodes sind etwas
komplizierter. Entscheidend ist hier, wie
vertraut Sie mit dem aktuellen Entwicklungsstand von
FreeBSD sind. Es existiert eine spezielle, ständig
aktualisierte Version von FreeBSD, die als
<quote>FreeBSD-CURRENT</quote> bekannt ist. Diese ist auf
verschiedenen Wegen erhältlich und stellt den
aktuellen Stand der Entwicklung dar. Lesen Sie den Abschnitt
<link xlink:href="&url.books.handbook;/current-stable.html">
FreeBSD-CURRENT vs. FreeBSD-STABLE</link> des Handbuchs
für weitere Informationen zur Installation und Verwendung
von FreeBSD-CURRENT.</para>
<para>Arbeiten Sie mit älteren Quellcodeversionen, kann
dies leider bedeuten, das Ihre Änderungen obsolet sind,
oder sich nicht mehr in FreeBSD reintegrieren lassen. Dieses
Risiko lässt sich verringern, wenn Sie die Mailinglisten
&a.announce; und &a.current; abonnieren, auf denen aktuelle
Systemänderungen diskutiert werden.</para>
<para>Wenn Ihre Änderungen auf ausreichend aktuellen Quellen
beruhen, erstellen Sie als Nächstes einen Differenzensatz,
den Sie an die FreeBSD-Entwickler schicken. Eine solche
Differenz erstellen Sie mit &man.diff.1;.</para>
<para>Das bevorzugte &man.diff.1;-Format für das Versenden
von Patches ist das sogenannte <foreignphrase>unified
output</foreignphrase>-Format, das Sie mit
<command>diff -u</command> erstellen. Für
größere Änderungen kann allerdings das
<foreignphrase>context output</foreignphrase>-Format
(erzeugt mit <command>diff -c</command>) die bessere Wahl
sein.</para>
<indexterm>
<primary><command>diff</command></primary>
</indexterm>
<para>Dazu ein Beispiel:</para>
<screen>&prompt.user; <userinput>diff -c oldfile newfile</userinput></screen>
<para>oder</para>
<screen>&prompt.user; <userinput>diff -c -r olddir newdir</userinput></screen>
<para>würde einen solchen Satz von Differenzen für die
angegebene Verzeichnishierarchie erzeugen.</para>
<para>Genauso hätte</para>
<screen>&prompt.user; <userinput>diff -u oldfile newfile</userinput></screen>
<para>oder</para>
<screen>&prompt.user; <userinput>diff -u -r olddir newdir</userinput></screen>
<para>den gleichen Effekt, allerdings erfolgt die Ausgabe
im <foreignphrase>unified diff</foreignphrase>-Format.</para>
<para>Lesen Sie dazu auch &man.diff.1;.</para>
<para>Nachdem Sie den Differenzensatz erstellt und mit
&man.patch.1; getestet haben, sollten Sie ihn an das
FreeBSD-Projekt senden. Verwenden Sie dazu &man.send-pr.1;
(wie im Abschnitt <link linkend="contrib-general">Fehlerberichte und allgemeine
Vorschläge</link> beschrieben). Senden Sie die
Differenzen <emphasis>nicht nur</emphasis> an &a.hackers;, da
diese sonst verloren gehen. Wir freuen uns über Ihren
Beitrag (schließlich ist FreeBSD ein Freiwilligenprojekt);
wir sind aber manchmal nicht in der Lage, das Problem sofort
anzugehen. Es verbleibt aber in der PR-Datenbank, bis wir
dafür Zeit finden. Verwenden Sie den Begriff
<literal>[PATCH]</literal> im Synopsis-Feld des
Berichts.</para>
<indexterm>
<primary><command>uuencode</command></primary>
</indexterm>
<para>Sie können auch ein <command>tar</command>-Archiv
erzeugen (was vor allem dann sinnvoll ist, wenn Sie Dateien
hinzugefügt, gelöscht oder umbenannt haben) und
&man.uuencode.1; auf das Archiv anwenden. Mit &man.shar.1;
erzeugte Archive sind ebenfalls willkommen.</para>
<para>Wenn Ihre Änderungen potentielle Probleme aufweisen,
wie Unklarheiten im Hinblick auf das Copyright, oder Sie
einfach eine genaue Überprüfung Ihrer Änderungen
möchten, sollten Sie die Änderungen an das &a.core;
schicken, statt sie mit &man.send-pr.1; zu versenden. Die
Mailingliste &a.core; erreicht nur eine kleine Gruppe von
Leuten, die sich um die tägliche Arbeit an &os;
kümmern. Beachten Sie aber, dass diese Gruppe
<emphasis>sehr beschäftigt</emphasis> ist. Daher sollten
Sie nur dann eine E-Mail an sie schicken, wenn es absolut
notwendig ist.</para>
<para>&man.intro.9; und &man.style.9; beschreiben den zu
verwendenden Programmierstil. Bevor Sie also Code
versenden, sollten Sie diese Informationen gelesen
haben.</para>
</sect2>
<sect2>
<title>Neuer Code oder große Mehrwertpakete</title>
<para>Handelt es sich um einen bedeutenden Beitrag oder um
das Hinzufügen von neuen wichtigen Fähigkeiten zu
FreeBSD, ist es fast immer notwendig, die Änderungen
als <foreignphrase>uuencoded tar</foreignphrase>-Dateien
zu versenden, oder diese auf einer Internetseite oder einem
FTP-Server bereitzustellen. Haben Sie keinen eigenen
Speicherplatz im Internet, sollten Sie auf einer
entsprechenden Mailinglisten nachfragen, ob jemand diese
Aufgabe für Sie übernehmen kann.</para>
<para>Arbeitet man mit großen Codebeständen,
kommt man unweigerlich mit den unterschiedlichen Lizenzen
in Berührung. Code, der in FreeBSD enthalten ist,
kann unter den folgenden Lizenzen stehen:</para>
<orderedlist>
<listitem>
<indexterm><primary>BSD-Lizenz</primary></indexterm>
<para>Der BSD-Lizenz. Diese Lizenz wird von uns bevorzugt,
weil sie an <quote>keine Bedingungen</quote> geknüpft
ist und daher für kommerzielle Unternehmen sehr
attraktiv ist. Das FreeBSD-Projekt unterstützt diese
kommerzielle Verwendung, die manchmal sogar in eine
Förderung des FreeBSD-Projekts mündet.</para>
</listitem>
<listitem>
<indexterm><primary>GPL</primary><see>GNU General Public License</see></indexterm>
<indexterm><primary>GNU General Public License</primary></indexterm>
<para>Der GNU General Public License, oder
<quote>GPL</quote>. Diese Lizenz ist nicht ganz so
beliebt bei uns, da sie die kommerzielle Nutzung des
Quellcodes einschränkt. In Anbetracht der schieren Menge
an GPL-Quellcode, den wir derzeit benötigen (wie Compiler,
Assembler oder Textformatierer) wären wir aber schlecht
beraten, Beiträge, die unter dieser Lizenz stehen,
abzulehnen. Code, der unter der GPL steht, befindet sich
in einem gesonderten Bereich des Quellcodebaums, und zwar
unter <filename>/sys/gnu</filename> oder
<filename>/usr/src/gnu</filename>, und
ist daher für jeden, für den die GPL ein Problem
darstellt, sofort erkennbar.</para>
</listitem>
</orderedlist>
<para>Beiträge, die unter einer dieser Lizenzen stehen,
müssen sorgfältig geprüft werden, bevor ihre
Aufnahme in FreeBSD in Betracht gezogen wird. Beiträge,
für die besonders restriktive Lizenzen gelten, werden
generell abgelehnt, obwohl die Autoren ermutigt werden,
ihre Veränderungen über ihre eigenen Kanäle
verfügbar zu machen.</para>
<para>Um Ihre Arbeit unter die <quote>BSD-Lizenz</quote> zu
stellen, fügen Sie den folgenden Text am Beginn jeder
von Ihnen erstellten Quellcodedatei ein, wobei Sie den Text
zwischen den <literal>%%</literal>-Zeichen durch die
entsprechenden Informationen ersetzt:</para>
<programlisting>Copyright (c) %%Jahr der Veröffentlichung%%
%%Ihr Name%%, %%Ihr Land%% %%Ihre Postleitzahl%%.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer as
the first lines of this file unmodified.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY %%Ihr Name%% ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL %%Ihr Name%% BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&#36;Id&#36;</programlisting>
<para>Eine Kopie dieses Textes finden Sie unter
<filename>/usr/share/examples/etc/bsd-style-copyright</filename>.</para>
</sect2>
<sect2>
<title>Geld, Hardware oder Internetzugang</title>
<para>Wir freuen uns immer, wenn jemand das FreeBSD-Projekt
durch Spenden unterstützen will. Auch kleine Spenden
können eine große Wirkung haben. Hardwarespenden
sind ebenfalls sehr wichtig, um die Liste der von FreeBSD
unterstützten Hardware erweitern zu können, da
uns die Mittel zum Erwerb dieser Hardware fehlen.</para>
<sect3 xml:id="donations">
<title>Geldspenden</title>
<para>Die FreeBSD Foundation ist eine gemeinnützige
Gesellschaft, die zur Unterstützung des FreeBSD-Projekts
geschaffen wurde. Sie ist nach dem Paragraphen 501(c)3
sowohl von der amerikanischen Einkommenssteuer als auch von
der des Staates Colorado befreit. Spenden an solche
steuerbefreiten Gesellschaften können unter gewissen
Umständen steuermindernd geltend gemacht werden.</para>
<para>Sie können Spenden in Scheckform an folgende Adresse
senden:
<address>
The FreeBSD Foundation
<street>7321 Brockway Dr.</street>
<city>Boulder</city>, <state>CO</state> <postcode>80303</postcode>
<country>USA</country>
</address>
</para>
<para>Die FreeBSD Foundation ist nun auch in der Lage, Spenden
durch das PayPal-System entgegenzunehmen. Solche Spenden
können über die <link xlink:href="http://www.freebsdfoundation.org">Homepage</link> der
Foundation erfolgen.</para>
<para>Für weitere Informationen zur FreeBSD Foundation
sollten Sie den Artikel <link xlink:href="http://people.FreeBSD.org/~jdp/foundation/announcement.html">
The FreeBSD Foundation -- an Introduction</link> lesen.
Sie erreichen die FreeBSD Foundation über die E-Mail-Adresse
<email>bod@FreeBSDFoundation.org</email>.</para> </sect3>
<sect3>
<title>Hardwarespenden</title>
<indexterm><primary>donations</primary></indexterm>
<para>Das FreeBSD-Projekt freut sich, wenn jemand benötigte
Hardware spenden will. Sind Sie daran interessiert, setzen
Sie sich bitte mit dem <link xlink:href="&url.base;/donations/">Donations Liaison
Office</link> in Verbindung.</para>
</sect3>
<sect3>
<title>Internetzugang zur Verfügung stellen</title>
<para>Wir sind ständig auf der Suche nach neuen FTP-,
WWW- oder <command>cvsup</command>-Spiegeln. Wenn Sie einen
solchen Spiegel einrichten wollen, lesen Sie bitte den
Artikel <link xlink:href="&url.articles.hubs.en;/index.html">Mirroring
FreeBSD</link>, der weitere Informationen enthält.</para>
</sect3>
</sect2>
</sect1>
<index/>
</article>

View file

@ -1,24 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/explaining-bsd/Makefile,v 1.2 2005/01/06 20:22:43 mheinen Exp $
# basiert auf: 1.6
#
# Article: Hintergrundwissen zu BSD
DOC?= article
FORMATS?= html html-split
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,682 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!-- The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/articles/explaining-bsd/article.xml,v 1.16 2012/03/25 14:11:01 bcr Exp $
basiert auf: 1.28
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Hintergrundwissen zu BSD</title>
<authorgroup>
<author><personname><firstname>Greg</firstname><surname>Lehey</surname></personname><affiliation>
<address><email>grog@FreeBSD.org</email></address>
</affiliation></author>
</authorgroup>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.amd;
&tm-attrib.apple;
&tm-attrib.intel;
&tm-attrib.linux;
&tm-attrib.opengroup;
&tm-attrib.sparc;
&tm-attrib.sun;
&tm-attrib.unix;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>In der Open Source-Welt steht das Wort
<quote>Linux</quote> oft synonym für
<quote>Betriebssystem</quote>, obwohl es nicht das einzige
frei verfügbare Betriebssystem ist. Laut <link xlink:href="http://www.leb.net/hzo/ioscount/data/r.9904.txt">Internet
Operating System Counter</link> liefen im April&nbsp;1999
weltweit 31,3&nbsp;Prozent der vernetzten Rechner unter Linux,
14,6&nbsp;Prozent liefen hingegen unter BSD&nbsp;&unix;.
Einige der weltweit größten Internetdienstleister, darunter
<link xlink:href="http://www.yahoo.com/">Yahoo!</link>, verwenden
BSD. Der im Jahre 1999 weltgrößte FTP-Server <link xlink:href="ftp://ftp.cdrom.com/">ftp.cdrom.com</link> (inzwischen
abgeschaltet) verwendete BSD, um täglich 1,4&nbsp;Terabyte an
Daten zu übertragen. Hier geht es offensichtlich nicht um
einen Nischenmarkt, BSD ist vielmehr ein gut gehütetes
Geheimnis.</para>
<para>Worin besteht nun dieses Geheimnis? Warum ist BSD nicht
bekannter? Dieser Artikel versucht, diese und andere Fragen
zu beantworten.</para>
<para>Unterschiede zwischen BSD und Linux werden in diesem
Artikel <emphasis>kursiv</emphasis> dargestellt.</para>
<para><emphasis>Übersetzt von Fabio Tosques</emphasis>.</para>
</abstract>
</info>
<sect1 xml:id="what-is-bsd">
<title>Was ist BSD?</title>
<para>BSD steht für <quote>Berkeley Software
Distribution</quote>, also für die Verbreitung des Quellcodes
der University of California, Berkeley, und war ursprünglich
als Erweiterung für ein von AT&amp;T's Research
entwickeltes &unix; Betriebssystem gedacht. Verschiedene
Open&nbsp;Source-Projekte beruhen auf dieser, als 4.4BSD-Lite
bekannten Quellcodeausgabe. In dieser Ausgabe sind auch
Softwarepakete anderer Open Source-Projekte, insbesondere jene
des GNU-Projekts, enthalten. Das komplette Betriebssystem
umfasst:</para>
<itemizedlist>
<listitem>
<para>Den BSD-Kernel, der sich um Prozessscheduling,
Speichermanagement, die Unterstützung mehrerer
Prozessoren
(<foreignphrase>symmetric multi-processing</foreignphrase>,
SMP), Gerätetreiber und anderes mehr
kümmert.</para>
<para><emphasis>Im Gegensatz zum Linux-Kernel gibt es
verschiedene BSD-Kernel mit unterschiedlichen
Fähigkeiten</emphasis>.</para>
</listitem>
<listitem>
<para>Die C-Bibliothek, die grundlegende API des
Systems.</para>
<para><emphasis>Die C-Bibliothek von BSD basiert auf
Berkeley-Code und nicht auf Code des
GNU-Projekts</emphasis>.</para>
</listitem>
<listitem>
<para>Nützliche Programme wie Shells, Programme für
Dateioperationen, Compiler und Linker.</para>
<para><emphasis>Einige Programme stammen aus dem GNU-Projekt,
andere hingegen nicht</emphasis>.</para>
</listitem>
<listitem>
<para>Das X&nbsp;Window-System für die grafische
Benutzeroberfläche.</para>
<para>Bei den meisten BSD-Versionen wird das
X&nbsp;Window-System eingesetzt und zwar die Version des
<link xlink:href="http://www.X.org/">X.org</link>-Projekts.
&os; erlaubt es dem Benutzer, aus einer grossen Anzahl an
Desktop-Umgebungen zu wählen, wie beispielsweise
<application>Gnome</application>,
<application>KDE</application> oder
<application>Xfce</application>. Ebenso gibt es
leichtgewichtige Window-Manager wie
<application>Openbox</application>,
<application>Fluxbox</application> oder
<application>Awesome</application>.</para>
</listitem>
<listitem>
<para>Viele weitere Programme und Werkzeuge.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="what-a-real-unix">
<title>Ein echtes &unix;?</title>
<para>BSD-Betriebssysteme sind keine Nachbauten, sondern
Weiterentwicklungen des &unix; Betriebssystems von
AT&amp;T's Research, das als Vorfahre des modernen
&unix; System V gilt. Überrascht Sie diese Aussage? Wie kann
das sein, wenn AT&amp;T seine Quellen nie als Open Source
veröffentlicht hat?</para>
<para>Es stimmt, dass AT&amp;T &unix; kein Open Source ist. Im
Sinne des Copyright ist BSD daher eindeutig
<emphasis>kein</emphasis> &unix;. Andererseits fügte
AT&amp;T aber Quellcode von anderen Projekten in den eigenen
Code ein, insbesondere jenen der Computer Sciences Research
Group (CSRG) der University of California in Berkeley, CA. Im
Jahr 1976 begann die CSRG damit, Bänder ihrer Software zu
vertreiben, die sie <emphasis>Berkeley Software
Distribution</emphasis> oder <emphasis>BSD</emphasis>
nannten.</para>
<para>Anfangs wurden vor allem Anwendungen veröffentlicht.
Das änderte sich schlagartig, als die CSRG von der Advanced
Research Projects Agency (DARPA) den Auftrag bekam, deren
Kommunikationsprotokolle (ARPANET) zu überarbeiten. Die
neuen Protokolle wurden als <emphasis>Internet
Protocols</emphasis> bezeichnet, und wurden später als
<emphasis>TCP/IP</emphasis> weltbekannt. Die erste
Implementierung dieser Protokolle erfolgte 1982 als Teil von
4.2BSD.</para>
<para>Im Laufe der 80er Jahre entstanden einige neue Firmen, die
Workstations vertrieben. Viele zogen es vor, &unix; zu
lizenzieren und kein eigenes Betriebssystem zu entwickeln.
Sun&nbsp;Microsystems lizenzierte &unix;, implementierte eine
Version von 4.2BSD und bezeichnete das fertige Produkt als
&sunos;. Als es AT&amp;T gestattet wurde, &unix; kommerziell zu
vertreiben, verkaufte AT&amp;T eine abgespeckte Version namens
System&nbsp;III, der schnell System&nbsp;V folgte. Im
System&nbsp;V-Basissystem waren keine Netzwerkfunktionen
enthalten, daher wurden alle Implementierungen zusätzlich
mit Software des BSD-Projekts, darunter TCP/IP sowie diverse
nützliche Programme wie <emphasis>csh</emphasis> oder
<emphasis>vi</emphasis>. Diese Erweiterungen wurden unter der
Bezeichnung <emphasis>Berkeley Extensions</emphasis>
zusammengefasst.</para>
<para>Da die BSD-Bänder AT&amp;T-Quellcode enthielten, war
eine &unix; Lizenz erforderlich. Als im Jahre 1990 die
Förderung der CSRG auslief, beschlossen einige Mitglieder
der Gruppe, den quelloffenen BSD-Code ohne den
proprietären AT&amp;T-Code zu veröffentlichen. Das
Ergebnis dieser Bemühungen war
<emphasis>Networking Tape 2</emphasis>, besser bekannt als
<emphasis>Net/2</emphasis>. Net/2 war aber kein komplettes
Betriebssystem, da gut 20 Prozent des Kernelcodes fehlten.
William F. Jolitz, ein Mitglied der CSRG, schrieb den fehlenden
Code und veröffentlichte diesen Anfang 1992 als
<emphasis>386BSD</emphasis>. Zur gleichen Zeit gründete
eine andere Gruppe ehemaliger CSRG-Mitglieder das kommerzielle
Unternehmen <link xlink:href="http://www.bsdi.com/">Berkeley Software
Design Inc.</link> und veröffentlichte eine Betaversion des
Betriebssystems unter dem Namen <link xlink:href="http://www.bsdi.com">BSD/386</link>, die auf den gleichen
Quellen basierte. Später wurde dieses Betriebssystem in
BSD/OS umbenannt.</para>
<para>386BSD war niemals wirklich stabil. Daher spalteten sich
1993 zwei neue Projekte ab: <link xlink:href="http://www.NetBSD.org/">NetBSD</link> sowie <link xlink:href="&url.base;/index.html">FreeBSD</link>. Beide Projekte
entstanden, weil sich 386BSD zu langsam weiterentwickelte.
Die erste NetBSD-Version entstand Anfang 1993, die erste
FreeBSD-Version Ende 1993. Zu dieser Zeit hatte sich der
Quellcode aber derart verändert, dass es schwer war,
ihn wieder zu verschmelzen. Zudem hatten die beiden Projekte
unterschiedliche Ziele, die dieser Artikel noch beschreiben
wird. 1996 spaltete sich ein weiteres Projekt von NetBSD ab:
<link xlink:href="http://www.OpenBSD.org">OpenBSD</link>. 2003
spaltete sich schließlich
<link xlink:href="http://www.dragonflybsd.org/">DragonFlyBSD</link>
von FreeBSD ab.</para>
</sect1>
<sect1 xml:id="why-is-bsd-not-better-known">
<title>Warum ist BSD nicht bekannter?</title>
<para>BSD ist aus vielen Gründen relativ unbekannt:</para>
<orderedlist>
<listitem>
<para>BSD-Entwickler sind eher an der Verbesserung des Codes
interessiert als an der Vermarktung desselben.</para>
</listitem>
<listitem>
<para>Die Popularität von Linux beruht auch auf externen
Faktoren wie der Presse, sowie auf Firmen, die gegründet
wurden, um Linux zu vertreiben. Bis heute fehlen den freien
BSD-Systemen solche Förderer.</para>
</listitem>
<listitem>
<para>BSD-Entwickler sind vielleicht erfahrener als
Linux-Entwickler, und haben deshalb weniger Interesse daran,
die Benutzung des Systems einfacher zu gestalten.
Einsteiger sind bei Linux wahrscheinlich besser
aufgehoben.</para>
</listitem>
<listitem>
<para>1992 verklagte AT&amp;T <link xlink:href="http://www.bsdi.com/">BSDI</link>, den Verkäufer
von BSD/386, mit der Behauptung, der Quellcode enthalte
urheberrechtlich geschützten AT&amp;T Code. Zwar kam es
1994 zu einer außergerichtlichen Einigung, die Leute
waren aber erst einmal verunsichert. Noch im März 2000
behauptete ein im Web publizierter Artikel, das Verfahren
sei erst <quote>kürzlich</quote> eingestellt worden.</para>
<para>Bezüglich der Bezeichnung schaffte der
Gerichtsprozess jedoch Klarheit: In den 80er Jahren war
BSD unter dem Namen <quote>BSD&nbsp;&unix;</quote> bekannt.
Durch die Entfernung der letzten Zeilen des AT&amp;T-Codes
verlor BSD das Recht, sich &unix; zu nennen. Deshalb finden
Sie in der Literatur sowohl Verweise auf
<quote>4.3BSD &unix;</quote> als auch auf
<quote>4.4BSD</quote>.</para>
</listitem>
<listitem>
<para>Nach wie vor existiert das Vorurteil, die einzelnen
BSD Projekte seien gespalten und zerstritten. Das <link xlink:href="http://interactive.wsj.com/bin/login?Tag=/&amp;URI=/archive/retrieve.cgi%253Fid%253DSB952470579348918651.djm&amp;">
Wall Street Journal</link> sprach gar von einer
<quote>Balkanisierung</quote> des BSD-Projekts. Wie der
Prozess, basiert auch dieses Vorurteil hauptsächlich
auf alten Geschichten.</para>
</listitem>
</orderedlist>
</sect1>
<sect1 xml:id="comparing-bsd-and-linux">
<title>Ein Vergleich zwischen BSD und Linux</title>
<para>Wo sind nun die Unterschiede zwischen, sagen wir Debian
GNU/Linux und FreeBSD? Für die meisten Benutzer sind die
Unterschiede nicht groß: Beide sind &unix; ähnliche
Betriebssysteme. Beide sind nichtkommerzielle Projekte (was
für eine Vielzahl anderer Linux-Distributionen nicht gilt).
Der folgende Abschnitt betrachtet BSD näher und vergleicht es
mit Linux. Die meisten Erläuterungen beziehen sich auf
FreeBSD, da es sich dabei um das am häufigsten installierte
BSD-System handelt. Die Unterschiede zu NetBSD, OpenBSD und
DragonFlyBSD sind aber gering.</para>
<sect2>
<title>Wem gehört BSD?</title>
<para>BSD gehört weder einer einzelnen Person, noch
gehört es einem Unternehmen. Entwickelt und zur
Verfügung gestellt wird es von einer technisch
interessierten und engagierten Gemeinschaft, die über
die ganze Welt verteilt ist. Einige BSD-Komponenten sind
eigenständige Open Source-Projekte mit eigenen Rechten,
die getrennt verwaltet und gewartet werden.</para>
</sect2>
<sect2>
<title>Wie erfolgt die Weiterentwicklung von BSD?</title>
<para>BSD-Kernel werden nach dem Open Source-Modell
weiterentwickelt. Jedes Projekt unterhält einen
öffentlich zugänglichen
<emphasis>Quellcode-Baum</emphasis>, der mit dem <link xlink:href="http://www.cvshome.org/">Concurrent Versions
System</link> (CVS) verwaltet wird, und alle Quellen des
Projekts, die Dokumentation und andere notwendige Dateien
enthält. CVS erlaubt es Anwendern, jede gewünschte Version
des Systems <quote>auszuchecken</quote> (mit anderen Worten,
eine Kopie des System zu erhalten).</para>
<para>Eine Vielzahl von Entwicklern trägt weltweit zur
Verbesserung von BSD bei. Dabei werden drei Typen
unterschieden:</para>
<itemizedlist>
<listitem>
<para>Ein <firstterm>Contributor</firstterm> schreibt Code
oder Dokumentationen. Ihm ist es nicht gestattet, seinen
Beitrag direkt in den Quellbaum einfließen zu lassen.
Bevor dieser Code in das System eingebracht wird, muss er
von einem registrierten Entwickler, dem
<emphasis>Committer</emphasis> geprüft werden.</para>
</listitem>
<listitem>
<para><firstterm>Committer</firstterm> können Code in
den Quellbaum einbringen, das heißt sie besitzen
Schreibrechte für den Quellcode-Baum. Um ein
Committer zu werden, muss man zuerst seine Fähigkeiten
im gewünschten Gebiet unter Beweis stellen.</para>
<para>Es liegt im Ermessen des Committers, ob er die
Allgemeinheit befragt, bevor er Änderungen am Quellbaum
vornimmt. In der Regel wird ein erfahrener Committer
korrekte Änderungen einfügen, ohne sich mit anderen
abzustimmen. Ein Committer des Documentation Projects
könnte etwa typografische oder grammatikalische
Korrekturen ohne lange Diskussion durchführen. Auf der
anderen Seite sollten Änderungen mit weitreichenden
Konsequenzen vor dem Commit zur Begutachtung
bereitgestellt werden. Im Extremfall kann ein Mitglied
des Core Teams, das als Principal Architect fungiert,
sogar die Entfernung der Änderung aus dem Quellcodebaum
veranlassen. Dieser Vorgang wird als <firstterm>backing
out</firstterm> bezeichnet. Alle Committer werden durch
eine E-Mail über die erfolgte Änderung informiert. Es ist
daher nicht möglich, heimlich eine Änderung
durchzuführen.</para>
</listitem>
<listitem>
<para>Das <firstterm>Core Team</firstterm>. Sowohl FreeBSD
als auch NetBSD besitzen ein Core Team zur Betreuung des
jeweiligen Projekts. Da die Core Teams erst im
Projektverlauf entstanden, ist ihre Rolle nicht genau
definiert. Um ein Mitglied des Core Teams zu sein, muss
man kein Entwickler sein, obwohl dies die Regel ist. Die
Regeln der Core Teams unterscheiden sich von Projekt zu
Projekt, generell gilt aber, das dessen Mitglieder mehr
Einfluss auf die Richtung des Projekts haben als
Nichtmitglieder.</para>
</listitem>
</itemizedlist>
<para>Diese Konstellation unterscheidet sich von Linux in
einigen Punkten:</para>
<orderedlist>
<listitem>
<para>Es sind stets mehrere Personen für das System
verantwortlich. In der Praxis ist dieser Unterschied aber
nicht gravierend, da zum einen der Principal Architect
verlangen kann, dass Änderungen zurückgenommen
werden, und zum anderen auch beim Linux-Projekt mehrere
Personen das Recht haben, Änderungen
vorzunehmen.</para>
</listitem>
<listitem>
<para>Es <emphasis>existiert</emphasis> ein zentraler
Aufbewahrungsort (Repository), in dem die kompletten
Betriebssystemquellen zu finden sind, einschließlich
aller älteren Versionen.</para>
</listitem>
<listitem>
<para>BSD-Projekte pflegen das komplette
<quote>Betriebssystem</quote>, nicht nur den Kernel.
Dieser Unterschied ist aber marginal, da weder BSD noch
Linux ohne Anwendungsprogramme sinnvoll einsetzbar sind.
Die unter BSD eingesetzten Applikationen sind oft
identisch mit denen von Linux.</para>
</listitem>
<listitem>
<para>Da beim BSD-Projekt nur ein CVS-Quellbaum gepflegt
werden muss, ist die Entwicklung übersichtlicher, und es
ist möglich, auf jede beliebige Version einer Datei
zuzugreifen. CVS ermöglicht auch inkrementelle Updates:
Das FreeBSD-Repository wird beispielsweise etwa 100 Mal
pro Tag verändert. Viele dieser Änderungen betreffen
aber nur einen relativen kleinen Bereich von FreeBSD.</para>
</listitem>
</orderedlist>
</sect2>
<sect2>
<title>BSD-Versionen</title>
<para>FreeBSD, NetBSD und OpenBSD stellen drei verschiedene
<quote>Ausgaben</quote> (Releases) zur Verfügung. Analog
zu Linux erhalten diese Ausgaben eine Nummer, etwa 1.4.1 oder
3.5. Die Versionsnummer erhält zusätzlich ein Suffix,
das den Verwendungszweck bezeichnet:</para>
<orderedlist>
<listitem>
<para>Die Entwicklerversion hat das Suffix
<firstterm>CURRENT</firstterm>. FreeBSD weist diesem
Suffix eine Nummer zu, z.B. FreeBSD 5.0-CURRENT. NetBSD
verwendet ein etwas anderes Bezeichnungsschema und hängt
als Suffix nur einen Buchstaben an die Versionsnummer an,
der Änderungen an den internen Schnittstellen anzeigt,
z.B. NetBSD 1.4.3G. OpenBSD weist der Entwicklerversion
keine Nummer zu, sie heißt also einfach
<quote>OpenBSD-current</quote>. Neue Entwicklungen werden
zuerst in diesen Zweig eingefügt.</para>
</listitem>
<listitem>
<para>In regelmäßigen Intervallen, durchschnittlich
zwei- bis viermal im Jahr, wird eine so genannte
<firstterm>RELEASE</firstterm>-Version des Systems
veröffentlicht, die dann beispielsweise als
OpenBSD&nbsp;2.6-RELEASE oder NetBSD&nbsp;1.4-RELEASE
bezeichnet wird. Diese sind sowohl auf CD-ROM
als auch als freier Download von den FTP-Servern der
Projekte erhältlich. Diese RELEASE-Versionen sind für
Endbenutzer gedacht. NetBSD verwendet sogar eine dritte
Ziffer, um gepatchte Releases zu kennzeichnen (etwa NetBSD
1.4.2).</para>
</listitem>
<listitem>
<para>Sobald Fehler in einer RELEASE-Version gefunden
werden, werden diese beseitigt und in den CVS-Baum
eingefügt. Beim FreeBSD-Projekt wird die daraus
resultierende Version als <firstterm>STABLE</firstterm>
bezeichnet, während sie bei NetBSD und OpenBSD weiterhin
RELEASE heißt. Kleinere Änderungen, die sich nach einer
Testphase im CURRENT-Zweig als stabil erweisen, können
ebenfalls in die STABLE-Version einfließen.</para>
</listitem>
</orderedlist>
<para><emphasis>Bei Linux werden hingegen zwei getrennte
Code-Bäume gepflegt: Eine stabile Version und eine
Entwicklerversion. Stabile Versionen haben an der zweiten
Stelle eine gerade Ziffer (2.0, 2.2 oder 2.4).
Entwicklerversionen haben an der zweiten Stelle eine ungerade
Ziffer (2.1, 2.3 oder 2.5). In jedem Fall folgt der
zweiten Ziffer noch eine dritte, welche die Version genauer
bezeichnet. Zusätzlich fügt jeder Verkäufer
einer Linux-Distribution selbst Programme und Werkzeuge hinzu.
Daher ist auch der Name der Distribution nicht unwichtig, da
dieser ebenfalls eine Versionsnummer enthält. So kann die
vollständige Beschreibung beispielsweise so aussehen:
<quote>TurboLinux&nbsp;6.0 mit
Kernel&nbsp;2.2.14</quote></emphasis></para>
</sect2>
<sect2>
<title>Welche BSD-Versionen gibt es überhaupt?</title>
<para>Im Gegensatz zu den zahlreichen Linux-Distributionen gibt
es nur vier große frei verfügbare BSDs. Jedes BSD-Projekt
unterhält seinen eigenen Quellcode-Baum und seinen eigenen
Kernel. In der Praxis scheinen die Unterschiede im Code der
Anwenderprogramme aber geringer zu sein als bei Linux.</para>
<para>Es ist nicht einfach, die Ziele der einzelnen BSD-Projekte
genau zu trennen, da die Unterschiede eher subtiler Natur
sind:</para>
<itemizedlist>
<listitem>
<para>FreeBSD will eine hohe Leistung erreichen, für
den Benutzer einfach in der Bedienung sein, und wird von
Internetanbietern bevorzugt eingesetzt. Es läuft
auf einer Vielzahl von Plattformen, darunter
&i386;-Systeme (<quote>PCs</quote>), Systeme mit einem
AMD&nbsp;64-Bit-Prozessor, &ultrasparc;-Systeme,
Compaq&nbsp;Alpha-Systeme, sowie Systeme, die der
Spezifikation NEC&nbsp;PC-98 entsprechen. Das
FreeBSD-Projekt hat die mit Abstand größte
Anwenderzahl unter den frei verfügbaren
BSD-Systemen.</para>
</listitem>
<listitem>
<para>Bei NetBSD ist Portabilität das oberste Ziel:
<quote>Natürlich läuft NetBSD darauf</quote>.
NetBSD kann auf vielen verschiedenen Systemen, von
Palmtops bis hin zu großen Servern, installiert werden,
und wurde sogar schon im Raumfahrtprogramm der NASA
eingesetzt. Besonders für alte Nicht-&intel;-Plattformen
ist NetBSD die erste Wahl.</para>
</listitem>
<listitem>
<para>Bei OpenBSD stehen die Sicherheit und sauberer Code im
Vordergrund. OpenBSD verbindet bei der Weiterentwicklung
des Systems Open Source-Konzepte mit rigorosen
<foreignphrase>code reviews</foreignphrase>. Dadurch
entsteht ein sehr sicheres System, das OpenBSD für
sicherheitsbewusste Unternehmen, Banken, Börsen
und die US-Regierung zu ersten Wahl macht. Auch OpenBSD
läuft, ähnlich wie NetBSD, auf vielen
verschiedenen Plattformen.</para>
</listitem>
<listitem>
<para>Das Ziel von DragonFlyBSD ist eine hohe Leistung und
Skalierbarkeit auf allen Systemen, vom Einzelplatzrechner
bis hin zu riesigen Cluster-Systemen. DragonFlyBSD
verfolgt dabei langfristig verschiedene technische Ziele,
der Schwerpunkt der Entwicklung liegt aber auf der
Bereitstellung einer SMP-fähigen Infrastruktur, die leicht
zu verstehen, zu warten und weiterzuentwickeln ist.</para>
</listitem>
</itemizedlist>
<para>Es gibt noch zwei weitere BSD &unix; Systeme, die aber
nicht Open Source sind: BSD/OS sowie Apples
&macos;&nbsp;X:</para>
<itemizedlist>
<listitem>
<para>BSD/OS war das älteste, von 4.4BSD abstammende
Betriebssystem. Es war zwar nicht Open Source,
Quellcode-Lizenzen konnten aber relativ günstig
erworben werden. Es wies viele Gemeinsamkeiten mit
FreeBSD auf. Zwei Jahre, nachdem BSDi von Wind River
Systems übernommen worden war, wurde die Entwicklung von
BSD/OS als eigenständiges Produkt eingestellt. Zwar wird
BSD/OS von Wind River noch unterstützt, eine aktive
Weiterentwicklung erfolgt allerdings nur noch für das
Embedded-Betriebssystem VxWorks.</para>
</listitem>
<listitem>
<para>Bei <link xlink:href="http://www.apple.com/macosx/server/">
&macos;&nbsp;X</link> handelt es sich um die neueste
Version des Betriebssystems der &mac;-Linie von &apple;.
<link xlink:href="http://developer.apple.com/darwin/">Darwin</link>,
der BSD-Kern des Betriebssystems ist als voll
funktionsfähiges Open Source-Betriebssystem für
x86- sowie PPC-Computer erhältlich. Die grafische
Oberfläche Aqua/Quartz und andere proprietäre
Anwendungen von &macos;&nbsp;X sind aber weiterhin
closed-source Software. Einige Darwin-Entwickler sind
auch FreeBSD-Committer, was auch für den umgekehrten
Fall gilt.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Worin unterscheidet sich die BSD-Lizenz von der GNU
Public License?</title>
<para>Linux steht unter der <link xlink:href="http://www.fsf.org/copyleft/gpl.html">GNU General Public
License</link> (GPL), die entworfen wurde, um closed-source
Software zu verhindern. Jede Software, die von einer Software
abgeleitet wurde, die unter der GPL steht, muss wieder unter
der GPL veröffentlicht werden. Auf Verlangen ist auch
der Quellcode zur Verfügung zu stellen. Die <link xlink:href="http://www.opensource.org/licenses/bsd-license.html">
BSD-Lizenz</link> ist dagegen weniger restriktiv: Der
Quellcode muss nicht zur Verfügung gestellt werden, es
können also auch Binärdateien verbreitet werden.
Dieser Umstand ist besonders für Anwendungen im
Embedded-Bereich interessant.</para>
</sect2>
<sect2>
<title>Was sollte ich sonst noch wissen?</title>
<para>Da für BSD weniger Anwendungsprogramme verfügbar
waren als für Linux, wurde ein Softwarepaket entwickelt, das
die Ausführung von Linuxprogrammen unter BSD
ermöglicht. Dieses Paket enthält zwei Dinge:
Kernelmodifikationen zur korrekten Ausführung von
Linux-Systemaufrufen sowie Linuxkompatibilitätsdateien,
beispielsweise die C-Bibliothek von Linux. Unterschiede in
der Ausführungsgeschwindigkeit von Linuxanwendungen auf einem
Linuxrechner und einem vergleichbaren mit BSD ausgestatteten
Rechner sind in der Praxis so gut wie nicht
feststellbar.</para>
<para>Die <quote>Alles-aus-einer-Hand</quote>-Natur von BSD
hat den Vorteil, dass Upgrades im Vergleich zu Linux häufig
leichter durchzuführen sind. BSD aktualisiert
Bibliotheken, indem es Kompatibilitätsmodule für
ältere Versionen der Bibliotheken bereitstellt. Daher ist
es möglich, auch mehrere Jahre alte Binärdateien ohne
Probleme auszuführen.</para>
</sect2>
<sect2>
<title>Was soll ich nun benutzen, BSD oder Linux?</title>
<para>Was heißt das nun alles für die Praxis? Wer
sollte BSD, wer Linux benutzen?</para>
<para>Diese Frage ist nicht einfach zu beantworten. Trotzdem
folgen nun einige Empfehlungen:</para>
<itemizedlist>
<listitem>
<para><quote>Wenn es nicht kaputt ist, fass' es nicht
an!</quote>: Wenn Sie schon ein frei verfügbares
Betriebssystem verwenden und damit glücklich sind,
gibt es eigentlich keinen vernünftigen Grund für
einen Wechsel.</para>
</listitem>
<listitem>
<para>BSD-Systeme, inbesondere FreeBSD, können eine
weitaus bessere Leistung als Linux-Systeme aufweisen.
Diese Aussage ist aber nicht allgemein gültig. In den
meisten Fällen sind die Leistungsunterschiede aber gering
oder gar nicht festzustellen. In bestimmten Fällen kann
auch Linux eine bessere Leistung aufweisen.</para>
</listitem>
<listitem>
<para>In der Regel haben BSD-Systeme den Ruf,
zuverlässiger zu sein. Diese Aussage beruht auf der
reiferen Codebasis.</para>
</listitem>
<listitem>
<para>Die BSD-Projekte haben den Ruf, über qualitativ
und quantitativ bessere Dokumentation zu verfügen.
Die verschiedenen Dokumentationsprojekte haben das Ziel,
eine ständig aktualisierte und in zahlreiche Sprachen
übersetzte Dokumentation zu erstellen, die alle
Aspekte des System umfasst.</para>
</listitem>
<listitem>
<para>Die BSD-Lizenz kann attraktiver sein als
die GPL.</para>
</listitem>
<listitem>
<para>BSD-Systeme können die meisten Linuxprogramme
ausführen, während Linux keine BSD-Programme
ausführen kann. Viele BSD-Systeme können sogar
Programme von anderen &unix; ähnlichen Systemen
ausführen. Daraus könnte man ableiten, dass die
Migration auf ein BSD-System einfacher ist, als es bei
Linux der Fall wäre.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Wo gibt es Support, Serviceleistungen und Schulungen
für BSD?</title>
<para>BSDi / <link xlink:href="http://www.freebsdmall.com">FreeBSD
Mall, Inc.</link> bieten seit fast 10 Jahren
Support-Verträge für FreeBSD an.</para>
<para>Darüber hinaus finden sich auf den folgenden Seiten der
einzelnen Projekte Firmen, die Supportleistungen anbieten:
<link xlink:href="&url.base;/commercial/consult_bycat.html">FreeBSD</link>,
<link xlink:href="http://www.netbsd.org/gallery/consultants.html">NetBSD</link>,
und <link xlink:href="http://www.openbsd.org/support.html">OpenBSD</link>.</para>
</sect2>
</sect1>
</article>

View file

@ -1,32 +0,0 @@
# $FreeBSD$
#
# Article: FreeBSD Update Server
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
WITH_ARTICLE_TOC?=YES
EXTRAS= init.txt
EXTRAS+= diff.txt
SRCS= article.xml
SRCS+= ${EXTRAS}
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
IMAGES_LIB+= callouts/5.png
afterinstall:
.for entry in ${EXTRAS}
${INSTALL_DOCS} ${.CURDIR}/${entry} ${DESTDIR}
.endfor
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,838 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY fbus.ap "<application xmlns='http://docbook.org/ns/docbook'>FreeBSD Update Server</application>">
]>
<!-- The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
basiert auf: r51348
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Einen eigenen &os; Update Server bauen</title>
<author><personname><firstname>Jason</firstname><surname>Helfman</surname></personname><affiliation>
<address>&a.jgh.email;</address>
</affiliation></author>
<copyright>
<year>2009</year>
<year>2010</year>
<year>2011</year>
<year>2013</year>
<holder role="mailto:jgh@FreeBSD.org">Jason Helfman</holder>
</copyright>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
&tm-attrib.intel;
&tm-attrib.amd;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Dieser Artikel beschreibt den Bau eines internen &fbus.ap;.
Die <link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link>
Software wurde von &a.cperciva.email;, emeritierter Security Officer
von &os;, geschrieben. Benutzer, die es als vorteilhaft ansehen
ihre Systeme über einen offiziellen Update-Server zu
aktualisieren, können mit Hilfe eines selbst erstellten
&fbus.ap; die Funktionalität über manuell optimierte &os;
Releases oder über Bereitstellung eines lokalen Mirror, welcher
schnellere Updates ermöglicht, erweitern.</para>
</abstract>
</info>
<para><emphasis>Übersetzt von &a.bhd.email;</emphasis>.</para>
<sect1 xml:id="acknowledgments">
<title>Danksagung</title>
<para>Dieser Artikel wurde anschließend im <link xlink:href="http://bsdmag.org/magazine/1021-bsd-as-a-desktop">BSD
Magazine</link> gedruckt.</para>
</sect1>
<sect1 xml:id="introduction">
<title>Einführung</title>
<para>Erfahrene Benutzer oder Administratoren sind häufig für
etliche Maschinen oder Umgebungen verantwortlich. Sie verstehen
die schwierigen Anforderungen und Herausforderungen der
Aufrechterhaltung einer solchen Infrastruktur. Ein &fbus.ap;
macht es einfacher, Sicherheits- und Software-Korrekturen für
ausgewählte Test-Maschinen bereitzustellen, bevor diese dann auf
den Produktionssystemen ausgerollt werden. Es bedeutet auch,
dass eine Reihe von Systemen über das lokale Netzwerk, anstatt
über eine langsame Internet-Verbindung, aktualisiert werden
können. Dieser Artikel beschreibt die Vorgehensweise zum
Erstellen eines eigenen &fbus.ap;.</para>
</sect1>
<sect1 xml:id="prerequisites">
<title>Voraussetzungen</title>
<para>Für den Bau eines internen &fbus.ap; sollten einige
Anforderungen erfüllt werden.</para>
<itemizedlist>
<listitem>
<para>Ein laufendes &os; System.</para>
<note>
<para>Als Minimum, muss das zu verteilende Ziel-Release auf
einer gleichen, oder höheren &os; Version gebaut
werden.</para>
</note>
</listitem>
<listitem>
<para>Ein Benutzerkonto mit mindestens 4&nbsp;GB freiem
Speicherplatz. Dies erlaubt die Erstellung der Updates für
7.1 und 7.2. Der genaue Platzbedarf kann sich aber von
Version zu Version ändern.</para>
</listitem>
<listitem>
<para>Ein &man.ssh.1; Konto auf einem entfernten System, um
die später zu verteilenden Updates hochzuladen.</para>
</listitem>
<listitem>
<para>Einen Webserver, wie <link xlink:href="&url.books.handbook;/network-apache.html">Apache</link>,
wobei über die Hälfte des Platzes für den Bau benötigt wird.
Als Beispiel benötigt der Bau von 7.1 und 7.2 insgesamt
4&nbsp;GB. Der Speicherplatz, den der Webserver für die
Verteilung dieser Updates benötigt, würde 2.6&nbsp;GB
betragen.</para>
</listitem>
<listitem>
<para>Grundlegende Kenntnisse im Shell Skripting
mit der Bourne Shell, &man.sh.1;.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="Configuration">
<title>Konfiguration: Installation &amp; Setup</title>
<para>Laden Sie die <link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">
freebsd-update-server</link> Software durch die Installation
von <package>devel/subversion</package> sowie
<package>security/ca_root_nss</package>, und
starten Sie:</para>
<screen>&prompt.user; <userinput>svn co https://svn.freebsd.org/base/user/cperciva/freebsd-update-build freebsd-update-server</userinput></screen>
<para>Passen Sie <filename>scripts/build.conf</filename> an Ihre
Bedürfnisse an. Diese Datei wird bei jedem Bau mit
einbezogen.</para>
<para>Hier ist die Standardeinstellung für
<filename>build.conf</filename>, welche Sie für Ihre Umgebung
anpassen sollten.</para>
<informalexample>
<programlisting>
# Main configuration file for FreeBSD Update builds. The
# release-specific configuration data is lower down in
# the scripts tree.
# Location from which to fetch releases
export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases<co xml:id="ftp-id"/>
# Host platform
export HOSTPLATFORM=`uname -m`
# Host name to use inside jails
export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net<co xml:id="buildhost-id"/>
# Location of SSH key
export SSHKEY=/root/.ssh/id_dsa<co xml:id="sshkey-id"/>
# SSH account into which files are uploaded
MASTERACCT=builder@wadham.daemonology.net<co xml:id="mstacct-id"/>
# Directory into which files are uploaded
MASTERDIR=update-master.freebsd.org<co xml:id="mstdir-id"/></programlisting>
</informalexample>
<para>Parameter, die zu berücksichtigen sind:</para>
<calloutlist>
<callout arearefs="ftp-id">
<para>Dies ist der Ort, von dem die ISO Abbilder (über die
<function>fetchiso()</function> in
<filename>scripts/build.subr</filename>) heruntergeladen
werden. Der Ort ist nicht auf FTP URIs beschränkt. Jedes
URI-Schema, welches von &man.fetch.1; unterstützt wird,
sollte hier gut funktionieren.</para>
<para>Anpassungen am <function>fetchiso()</function> Code
können Sie vornehmen, indem Sie das Standardskript
<filename>build.subr</filename> in den Release- und
Architektur-spezifischen Bereich in
<filename>scripts/RELEASE/ARCHITECTURE/build.subr</filename>
kopieren und dort lokale Änderungen vornehmen.</para>
</callout>
<callout arearefs="buildhost-id">
<para>Der Name des Build-Hosts. Auf aktualisierten Systemen
können Sie diese Information wie folgt ausgeben:</para>
<screen>&prompt.user; <userinput>uname -v</userinput></screen>
</callout>
<callout arearefs="sshkey-id">
<para>Der <application>SSH</application> Schlüssel für das
Hochladen der Dateien auf den Update Server. Ein
Schlüsselpaar kann durch die Eingabe von
<command>ssh-keygen -t dsa</command> erstellt werden.
Dieser Parameter ist jedoch optional; Standard Password
Authentifizierung wird als Fallback-Methode benutzt wenn
<literal>SSHKEY</literal> nicht definiert ist.</para>
<para>Die &man.ssh-keygen.1; Manualpage enthält detaillierte
Informationen zu <application>SSH</application> und die
entsprechenden Schritte zur Erstellung und Verwendung von
Schlüsseln.</para>
</callout>
<callout arearefs="mstacct-id">
<para>Benutzerkonto zum Hochladen von Dateien auf den
Update-Server.</para>
</callout>
<callout arearefs="mstdir-id">
<para>Verzeichnis auf dem Update-Server, in welches die
Dateien hochgeladen werden.</para>
</callout>
</calloutlist>
<para>Die Standard <filename>build.conf</filename>, die mit den
<application>freebsd-update-server</application> Quellen
ausgeliefert wird ist geeignet um &arch.i386; Releases von &os;
zu bauen. Als Beispiel für den Aufbau eines Update-Servers für
andere Architekturen beschreiben die folgenden Schritte die
Konfiguration für &arch.amd64;:</para>
<procedure>
<step>
<para>Erstellen Sie eine Bau-Umgebung für &arch.amd64;:</para>
<informalexample>
<screen>&prompt.user; <userinput>mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64</userinput></screen>
</informalexample>
</step>
<step>
<para>Installieren Sie eine <filename>build.conf</filename> in
das neu erstellte Verzeichnis. Die Konfigurationsoptionen
für &os; 7.2-RELEASE auf &arch.amd64; sollten ähnlich wie
die folgenden sein:</para>
<informalexample>
<programlisting># SHA256 hash of RELEASE disc1.iso image.
export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5<co xml:id="sha256-id"/>
# Components of the world, source, and kernels
export WORLDPARTS="base catpages dict doc games info manpages proflibs lib32"
export SOURCEPARTS="base bin contrib crypto etc games gnu include krb5 \
lib libexec release rescue sbin secure share sys tools \
ubin usbin cddl"
export KERNELPARTS="generic"
# EOL date
export EOL=1275289200<co xml:id="eol-id"/></programlisting>
</informalexample>
<calloutlist>
<callout arearefs="sha256-id">
<para>Der &man.sha256.1; Fingerabdruck für die gewünschte
Version wird innerhalb der jeweiligen <link xlink:href="&url.base;/releases/">Release-Ankündigung</link>
veröffentlicht.</para>
</callout>
<callout arearefs="eol-id">
<para>Um die "End of Life" Nummer für die
<filename>build.conf</filename>zu generieren, beziehen Sie
sich bitte auf "Estimated EOL" auf der <link xlink:href="&url.base;/security/security.html">&os; Security
Webseite</link>. Der Wert für <literal>EOL</literal>
kann aus dem Datum, das auf der Webseite veröffentlicht
ist, abgeleitet werden. Benutzen Sie dafür das Werkzeug
&man.date.1;. Dazu ein Beispiel:</para>
<screen>&prompt.user; <userinput>date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'</userinput></screen>
</callout>
</calloutlist>
</step>
</procedure>
</sect1>
<sect1 xml:id="build">
<title>Den Update Code bauen</title>
<para>Der erste Schritt ist das Ausführen von
<filename>scripts/make.sh</filename>. Dieses Skript baut einige
Binärdateien, erstellt Verzeichnisse und einen RSA
Signaturschlüssel für die Genehmigung des Bau. In diesem
Schritt müssen Sie auch eine Passphrase für die Erstellung des
Signaturschlüssels angeben.</para>
<screen>&prompt.root; <userinput>sh scripts/make.sh</userinput>
cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps
findstamps.c: In function 'usage':
findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit'
cc -O2 -fno-strict-aliasing -pipe unstamp.c -o unstamp
install findstamps ../bin
install unstamp ../bin
rm -f findstamps unstamp
Generating RSA private key, 4096 bit long modulus
................................................................................++
...................++
e is 65537 (0x10001)
Public key fingerprint:
27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e
Encrypting signing key for root
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:</screen>
<note>
<para>Notieren Sie sich den Fingerabdruck des erzeugten
Schlüssels. Dieser Wert wird in
<filename>/etc/freebsd-update.conf</filename> für die binären
Updates benötigt.</para>
</note>
<para>An dieser Stelle sind wir bereit, den Bauprozess zu starten.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/init.sh <replaceable>amd64 7.2-RELEASE</replaceable></userinput></screen>
</informalexample>
<para>Hier folgt ein Beispiel für einen
<emphasis>ersten</emphasis> Bauprozess.</para>
<screen>&prompt.root; <userinput>sh scripts/init.sh amd64 7.2-RELEASE</userinput>
Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE
/usr/local/freebsd-update-server/work/7.2-RELE100% of 588 MB 359 kBps 00m00s
Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE
Files built but not released:
Files released but not built:
Files which differ by more than contents:
Files which differ between release and build:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
src|sys|/sys/conf/newvers.sh
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
...</screen>
<para>Anschließend wird das Basissystem mit den dazugehörigen
Patches erneut gebaut. Eine detaillierte Erklärung dazu finden
Sie in <filename>scripts/build.subr</filename>.</para>
<warning>
<para>Während der zweiten Bauphase wird der Network Time
Protocol Dienst, &man.ntpd.8;, ausgeschaltet. Per
&a.cperciva.email;, emeritierter Security Officer von &os;, "Der
<link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link>
Code muss Zeitstempel, welche in Dateien gespeichert sind,
identifizieren, sodass festgestellt werden kann, welche
Dateien aktualisiert werden müssen. Dies geschieht, indem
zwei Builds erstellt werden die 400 Tage auseinander liegen
und anschließend die Ergebnisse verglichen werden."</para>
</warning>
<screen>Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE
Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE
Files found which include build stamps:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/include/osreldate.h
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
...</screen>
<para>Schlussendlich wird der Bauprozess fertiggestellt.</para>
<screen>Values of build stamps, excluding library archive headers:
v1.2 (Aug 25 2009 00:40:36)
v1.2 (Aug 25 2009 00:38:22)
@(#)FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
7.2-RELEASE
Mon Aug 24 23:55:25 UTC 2009
Mon Aug 24 23:55:25 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
Mon Aug 24 23:46:47 UTC 2009
ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
* Copyright (c) 1992-2009 The FreeBSD Project.
Mon Aug 24 23:46:47 UTC 2009
Mon Aug 24 23:55:40 UTC 2009
Aug 25 2009
ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)
ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
Tue Aug 25 00:21:21 UTC 2009
Tue Aug 25 00:21:21 UTC 2009
Tue Aug 25 00:21:21 UTC 2009
Mon Aug 24 23:46:47 UTC 2009
FreeBSD/amd64 7.2-RELEASE initialization build complete. Please
review the list of build stamps printed above to confirm that
they look sensible, then run
# sh -e approve.sh amd64 7.2-RELEASE
to sign the release.</screen>
<para>Genehmigen Sie den Bau, wenn alles korrekt ist. Weitere
Informationen zur korrekten Bestimmung finden Sie in der
Quelldatei namens <filename>USAGE</filename>. Führen Sie, wie
angegeben <filename>scripts/approve.sh</filename> aus. Dieser
Schritt unterschreibt das Release und verschiebt die Komponenten
an einen Sammelpunkt, wo sie für den Upload verwendet werden
können.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/mountkey.sh</userinput></screen>
</informalexample>
<screen>&prompt.root; <userinput>sh -e scripts/approve.sh amd64 7.2-RELEASE</userinput>
Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE</screen>
<para>Nachdem der Genehmigungsprozess abgeschlossen ist, kann der
Upload gestartet werden.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/upload.sh <replaceable>amd64 7.2-RELEASE</replaceable></userinput></screen>
</informalexample>
<note>
<para>Wenn der Update-Code erneut hochgeladen werden muss, kann
dies durch die Änderung des öffentlichen
Distributionsverzeichnisses für das Ziel-Release und der
Aktualisierung der Attribute für die
<emphasis>hochgeladene</emphasis> Datei geschehen.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server/pub/<replaceable>7.2-RELEASE/amd64</replaceable></userinput>
&prompt.root; <userinput>touch -t <replaceable>200801010101.01</replaceable> uploaded</userinput></screen>
</informalexample>
</note>
<!-- If freebsd-update works with other http servers too, we should
avoid making the instructions Apache-specific here. -->
<!-- there are specific web instructions in the uploaded code that pertain to Apache. I believe it is worded fine here, now, and if others choose to use another web server, that is their choice to figure out -->
<para>Um die Updates zu verteilen, müssen die hochgeladenen
Dateien im Document Root des Webservers liegen. Die genaue
Konfiguration hängt von dem verwendeten Webserver ab. Für den
<application>Apache</application> Webserver, beziehen Sie sich
bitte auf das Kapitel <link xlink:href="&url.books.handbook;/network-apache.html">Konfiguration
des Apache Servers</link> im Handbuch.</para>
<!-- This note seems either out of place. I find it hard to read and it
is a bit difficult to understand why it is related to the rest of
this section. It looks like something that would fit nicely in an
introductory section about the way a freebsd-update server works. -->
<!-- Agreed, it does not suite very well here. But it is now included
above. I think it can be removed now. gabor -->
<!-- Taken out until we decide what to do with it -->
<!-- Agreed. However, I believe the placement of this works fine as it is.
<note>
<para>Updates for the current release of the &os; system you are
updating, and what you want to upgrade <emphasis>to</emphasis> need
to be built in order for &os; Update Server to work properly. This
is necessary for merging of files between releases. For example, if
you are updating a system from &os; 7.1 to &os; 7.2, you will need
to have update code built for &os; 7.1-RELEASE and
&os; 7.2-RELEASE.</para>
</note> -->
<!-- What is a 'KeyPrint'? -->
<para>Aktualisieren Sie <literal>KeyPrint</literal> und
<literal>ServerName</literal> in der
<filename>/etc/freebsd-update.conf</filename> des Clients und
führen Sie das Update, wie im Kapitel <link xlink:href="&url.books.handbook;/updating-upgrading-freebsdupdate.html">&os;
Update</link> des Handbuchs beschrieben, aus.</para>
<!-- One sentence, two instances of 'in'. We can probably reword this
part to avoid repetition. -->
<!-- What about "place client's new keyprint and servername values to
freebsd-update.conf, ..."? gabor -->
<!-- Sorry folks, but I disagree here. I believe it is worded fine. If anything, drop everything after "perform" and change "updates" to "FreeBSD Updates" and link that to the handbook -->
<important>
<para>Damit &fbus.ap; ordnungsgemäß funktioniert, muss sowohl
das <emphasis>current</emphasis> Release als auch das Release
<emphasis>auf welches Sie aktualisieren wollen</emphasis> neu
gebaut werden. Dies ist notwendig, um die Unterschiede von
Dateien zwischen den beiden Releases bestimmen zu können. Zum
Beispiel beim Upgrade eines &os; Systems von 7.1-RELEASE auf
7.2-RELEASE, müssen für beide Versionen Updates gebaut und auf
den Webserver hochgeladen werden.</para>
</important>
<para>Als Referenz wird der gesamte Verlauf von <link xlink:href="init.txt"><filename>init.sh</filename></link>
beigefügt.</para>
</sect1>
<sect1 xml:id="patch">
<title>Eine Fehlerkorrektur erstellen</title>
<para>Jedes Mal, wenn ein <link xlink:href="&url.base;/security/advisories.html">Sicherheits-Hinweis</link>
oder ein <link xlink:href="&url.base;/security/notices.html">Fehler-Hinweis</link>
angekündigt wird, kann eine Fehlerkorrektur gebaut
werden.</para>
<para>Für dieses Beispiel wird 7.1-RELEASE benutzt.</para>
<para>Für den Bau eines anderen Release werden ein paar Annahmen
getroffen:</para>
<itemizedlist>
<listitem>
<para>Richten Sie die korrekte Verzeichnisstruktur für den
ersten Bau ein.</para>
</listitem>
<listitem>
<para>Führen Sie einen ersten Bau für 7.1-RELEASE aus.</para>
</listitem>
</itemizedlist>
<para>Erstellen Sie das Korrekturverzeichnis des jeweiligen
Releases unter <filename>/usr/local/freebsd-update-server/patches/</filename>.</para>
<informalexample>
<screen>&prompt.user; <userinput>mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/</userinput>
&prompt.user; <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE</userinput></screen>
</informalexample>
<para>Als Beispiel nehmen Sie die Korrektur für &man.named.8;.
Lesen Sie den Hinweis und laden Sie die erforderliche Datei von
<link xlink:href="&url.base;/security/advisories.html">&os;
Sicherheits-Hinweise</link> herunter. Weitere Informationen
zur Interpretation der Sicherheitshinweise finden Sie im <link xlink:href="&url.books.handbook;/security-advisories.html">&os;
Handbuch</link>.</para>
<para>In der <link xlink:href="https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc">Sicherheits
Anweisung</link>, nennt sich dieser Hinweis
<literal>SA-09:12.bind</literal>. Nach dem Herunterladen der
Datei, ist es erforderlich, die Datei auf einen geeigneten
Patch-Level umzubenennen. Es steht Ihnen frei den Namen frei zu
wählen, es wird jedoch nahegelegt, diesen im Einklang mit dem
offiziellen &os; Patch-Level zu halten. Für diesen Bau folgen
wir der derzeit gängigen Praxis von &os; und benennen sie
<literal>p7</literal>. Benennen Sie die Datei um:</para>
<informalexample>
<screen>&prompt.user; <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind </userinput></screen>
</informalexample>
<note>
<para>Wenn ein Patch-Level gebaut wird, wird davon ausgegangen,
dass die bisherigen Korrekturen bereits vorhanden sind. Wenn
der Bau läuft, werden alle Korrekturen aus dem
Patchverzeichnis mit gebaut.</para>
<para>Es können auch selbsterstellte Korrekturen zum Bau
hinzugefügt werden. Benutzen Sie die Zahl Null, oder jede
andere Zahl.</para>
</note>
<warning>
<para>Es liegt in der Verantwortung des Administrators des
&fbus.ap; geeignete Maßnahmen zu treffen, um die Authentizität
jeder Fehlerkorrektur zu überprüfen.</para>
</warning>
<para>An dieser Stelle sind wir bereit, einen
<emphasis>Diff</emphasis> zu bauen. Die Software prüft
zunächst, ob <filename>scripts/init.sh</filename> für das
jeweilige Release gelaufen ist, bevor mit dem Bau des Diff
begonnen wird.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/diff.sh <replaceable>amd64 7.1-RELEASE</replaceable> 7</userinput></screen>
</informalexample>
<para>Es folgt ein Beispiel für einen <emphasis>Diff</emphasis>
Bauprozess.</para>
<screen>&prompt.root; <userinput>sh -e scripts/diff.sh amd64 7.1-RELEASE 7</userinput>
Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7
...
Files found which include build stamps:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/include/osreldate.h
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
...
Values of build stamps, excluding library archive headers:
v1.2 (Aug 26 2009 18:13:46)
v1.2 (Aug 26 2009 18:11:44)
@(#)FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
7.1-RELEASE-p7
Wed Aug 26 17:29:15 UTC 2009
Wed Aug 26 17:29:15 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
Wed Aug 26 17:20:39 UTC 2009
ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
* Copyright (c) 1992-2009 The FreeBSD Project.
Wed Aug 26 17:20:39 UTC 2009
Wed Aug 26 17:29:30 UTC 2009
Aug 26 2009
ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)
ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:20:39 UTC 2009
...</screen>
<para>Die Updates werden angezeigt und warten auf
Genehmigung.</para>
<screen>New updates:
kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|
kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|
kernel|generic|/|d|0|0|0755|0||
src|base|/|d|0|0|0755|0||
src|bin|/|d|0|0|0755|0||
src|cddl|/|d|0|0|0755|0||
src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|
src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|
src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|
...
FreeBSD/amd64 7.1-RELEASE update build complete. Please review
the list of build stamps printed above and the list of updated
files to confirm that they look sensible, then run
# sh -e approve.sh amd64 7.1-RELEASE
to sign the build.</screen>
<para>Folgen Sie dem zuvor erwähnten Verfahren für die Genehmigung
des Bauprozesses:</para>
<screen>&prompt.root; <userinput>sh -e scripts/approve.sh amd64 7.1-RELEASE</userinput>
Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE
The FreeBSD/amd64 7.1-RELEASE update build has been signed and is
ready to be uploaded. Remember to run
# sh -e umountkey.sh
to unmount the decrypted key once you have finished signing all
the new builds.</screen>
<para>Nachdem Sie den Bau genehmigt haben, starten Sie den Upload
der Software:</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/upload.sh <replaceable>amd64 7.1-RELEASE</replaceable></userinput></screen>
</informalexample>
<para>Als Referenz wird der gesamte Verlauf von <link xlink:href="diff.txt"><filename>diff.sh</filename></link>
beigefügt.</para>
</sect1>
<sect1 xml:id="tips">
<title>Tipps</title>
<!-- These are nice tips, but there are only a few of them and they need a
bit of rewording to make sense. I'd like to see something that
explains at least the following for every tip:
* Why is this tip necessary? What is the original problem it tries
to solve?
* How to install the changes of the tip, preferably in a <procedure>
element, with clearly separated steps.
* How to check that the changes of the tip had a measurable and
noticeable effect.
We can do this in a followup commit. It doesn't have to be completed
*before* we commit this to CVS. -->
<!-- thank you, i just learned these in the process, and thought I would share. They are "tips" and not necessary, so I do see your point, and I would suggest maybe even renaming the section to something more appropriate. Nothing really comes to mind now, though. -->
<!-- this tip will allow you to maintain a custom release and custom kernel, and update it like any other binary update -->
<itemizedlist>
<listitem>
<para>Wenn Sie ein selbst erstelltes Release über die native
<command>make release</command> <link xlink:href="&url.articles.releng;/release-build.html">Prozedur</link>
bauen, wir der
<application>freebsd-update-server</application> Code Ihr
Release unterstützen. Als Beispiel können Sie ein Release
ohne Ports oder Dokumentation bauen, indem Sie betreffende
Funktionalität der Subroutinen <function> findextradocs
()</function>, <function>addextradocs ()</function>
entfernen und eine Veränderung des Download-Verzeichnisses
in <function>fetchiso ()</function>, in
<filename>scripts/build.subr</filename>. Als letzten
Schritt ändern Sie den &man.sha256.1; Hash in
<filename>build.conf</filename> für Ihr jeweiliges Release
und Architektur damit Sie bereit sind, Ihr
benutzerdefiniertes Release zu bauen.</para>
<programlisting># Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts
# of the world|doc subcomponent are missing from the latter, and
# build a tarball out of them.
findextradocs () {
}
# Add extra docs to ${WORKDIR}/$1
addextradocs () {
}
</programlisting>
</listitem>
<listitem>
<para>Durch das Hinzufügen von <option>-j
<replaceable>NUMMER</replaceable></option> zu den
<buildtarget>buildworld</buildtarget> und
<buildtarget>obj</buildtarget> Zielen in
<filename>scripts/build.subr</filename> kann die
Verarbeitung, abhängig von der eingesetzten Hardware,
beschleunigt werden. Die Benutzung dieser Optionen auf
andere Ziele wird jedoch nicht empfohlen, da sie den Bau
unzuverlässig machen können.</para>
<programlisting>> # Build the world
log "Building world"
cd /usr/src &amp;&amp;
make -j 2 ${COMPATFLAGS} buildworld 2&gt;&amp;1
# Distribute the world
log "Distributing world"
cd /usr/src/release &amp;&amp;
make -j 2 obj &amp;&amp;
make ${COMPATFLAGS} release.1 release.2 2&gt;&amp;1</programlisting>
</listitem>
<listitem>
<para>Erstellen Sie einen geeigneten <link xlink:href="&url.books.handbook;/network-dns.html">DNS</link>
SRV Datensatz für den Update-Server, und fügen Sie weitere
Server mit verschiedenen Gewichtungen hinzu. Sie können
diese Möglichkeit nutzen um Update-Mirror hinzuzufügen.
Dieser Tipp ist jedoch nicht notwendig solange Sie keinen
redundanten Service anbieten möchten.</para>
<programlisting> _http._tcp.update.myserver.com. IN SRV 0 2 80 host1.myserver.com.
SRV 0 1 80 host2.myserver.com.
SRV 0 0 80 host3.myserver.com.</programlisting>
</listitem>
</itemizedlist>
</sect1>
</article>

View file

@ -1,724 +0,0 @@
# $FreeBSD$
# sh -e scripts/diff.sh amd64 7.1-RELEASE 7
Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7
Files found which include build stamps:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/include/osreldate.h
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
world|base|/usr/lib/libalias_irc.a
world|base|/usr/lib/libalias_nbt.a
world|base|/usr/lib/libalias_pptp.a
world|base|/usr/lib/libalias_skinny.a
world|base|/usr/lib/libalias_smedia.a
world|base|/usr/lib/libarchive.a
world|base|/usr/lib/libasn1.a
world|base|/usr/lib/libavl.a
world|base|/usr/lib/libbegemot.a
world|base|/usr/lib/libbluetooth.a
world|base|/usr/lib/libbsdxml.a
world|base|/usr/lib/libbsm.a
world|base|/usr/lib/libbsnmp.a
world|base|/usr/lib/libbz2.a
world|base|/usr/lib/libc.a
world|base|/usr/lib/libc_pic.a
world|base|/usr/lib/libcalendar.a
world|base|/usr/lib/libcam.a
world|base|/usr/lib/libcom_err.a
world|base|/usr/lib/libcompat.a
world|base|/usr/lib/libcrypt.a
world|base|/usr/lib/libcrypto.a
world|base|/usr/lib/libctf.a
world|base|/usr/lib/libdevinfo.a
world|base|/usr/lib/libdevstat.a
world|base|/usr/lib/libdialog.a
world|base|/usr/lib/libdisk.a
world|base|/usr/lib/libdtrace.a
world|base|/usr/lib/libdwarf.a
world|base|/usr/lib/libedit.a
world|base|/usr/lib/libelf.a
world|base|/usr/lib/libfetch.a
world|base|/usr/lib/libfl.a
world|base|/usr/lib/libform.a
world|base|/usr/lib/libformw.a
world|base|/usr/lib/libftpio.a
world|base|/usr/lib/libgcc.a
world|base|/usr/lib/libgcc_eh.a
world|base|/usr/lib/libgcov.a
world|base|/usr/lib/libgeom.a
world|base|/usr/lib/libgnuregex.a
world|base|/usr/lib/libgomp.a
world|base|/usr/lib/libgpib.a
world|base|/usr/lib/libgssapi.a
world|base|/usr/lib/libgssapi_krb5.a
world|base|/usr/lib/libhdb.a
world|base|/usr/lib/libhistory.a
world|base|/usr/lib/libipsec.a
world|base|/usr/lib/libipx.a
world|base|/usr/lib/libkadm5clnt.a
world|base|/usr/lib/libkadm5srv.a
world|base|/usr/lib/libkafs5.a
world|base|/usr/lib/libkiconv.a
world|base|/usr/lib/libkrb5.a
world|base|/usr/lib/libkvm.a
world|base|/usr/lib/libl.a
world|base|/usr/lib/libln.a
world|base|/usr/lib/liblwres.a
world|base|/usr/lib/libm.a
world|base|/usr/lib/libmagic.a
world|base|/usr/lib/libmd.a
world|base|/usr/lib/libmemstat.a
world|base|/usr/lib/libmenu.a
world|base|/usr/lib/libmenuw.a
world|base|/usr/lib/libmilter.a
world|base|/usr/lib/libmp.a
world|base|/usr/lib/libncp.a
world|base|/usr/lib/libncurses.a
world|base|/usr/lib/libncursesw.a
world|base|/usr/lib/libnetgraph.a
world|base|/usr/lib/libngatm.a
world|base|/usr/lib/libnvpair.a
world|base|/usr/lib/libobjc.a
world|base|/usr/lib/libopie.a
world|base|/usr/lib/libpam.a
world|base|/usr/lib/libpanel.a
world|base|/usr/lib/libpanelw.a
world|base|/usr/lib/libpcap.a
world|base|/usr/lib/libpmc.a
world|base|/usr/lib/libproc.a
world|base|/usr/lib/libradius.a
world|base|/usr/lib/libreadline.a
world|base|/usr/lib/libroken.a
world|base|/usr/lib/librpcsvc.a
world|base|/usr/lib/librt.a
world|base|/usr/lib/libsbuf.a
world|base|/usr/lib/libsdp.a
world|base|/usr/lib/libsmb.a
world|base|/usr/lib/libssh.a
world|base|/usr/lib/libssl.a
world|base|/usr/lib/libssp.a
world|base|/usr/lib/libssp_nonshared.a
world|base|/usr/lib/libstand.a
world|base|/usr/lib/libstdc++.a
world|base|/usr/lib/libsupc++.a
world|base|/usr/lib/libtacplus.a
world|base|/usr/lib/libthr.a
world|base|/usr/lib/libthread_db.a
world|base|/usr/lib/libufs.a
world|base|/usr/lib/libugidfw.a
world|base|/usr/lib/libumem.a
world|base|/usr/lib/libusbhid.a
world|base|/usr/lib/libutil.a
world|base|/usr/lib/libuutil.a
world|base|/usr/lib/libwrap.a
world|base|/usr/lib/liby.a
world|base|/usr/lib/libypclnt.a
world|base|/usr/lib/libz.a
world|base|/usr/lib/libzfs.a
world|base|/usr/lib/libzpool.a
world|base|/usr/sbin/amd
world|base|/usr/sbin/iasl
world|base|/usr/sbin/ntpd
world|base|/usr/sbin/ntpdate
world|base|/usr/sbin/ntpdc
world|lib32|/usr/lib32/libalias.a
world|lib32|/usr/lib32/libalias_cuseeme.a
world|lib32|/usr/lib32/libalias_cuseeme_p.a
world|lib32|/usr/lib32/libalias_dummy.a
world|lib32|/usr/lib32/libalias_dummy_p.a
world|lib32|/usr/lib32/libalias_ftp.a
world|lib32|/usr/lib32/libalias_ftp_p.a
world|lib32|/usr/lib32/libalias_irc.a
world|lib32|/usr/lib32/libalias_irc_p.a
world|lib32|/usr/lib32/libalias_nbt.a
world|lib32|/usr/lib32/libalias_nbt_p.a
world|lib32|/usr/lib32/libalias_p.a
world|lib32|/usr/lib32/libalias_pptp.a
world|lib32|/usr/lib32/libalias_pptp_p.a
world|lib32|/usr/lib32/libalias_skinny.a
world|lib32|/usr/lib32/libalias_skinny_p.a
world|lib32|/usr/lib32/libalias_smedia.a
world|lib32|/usr/lib32/libalias_smedia_p.a
world|lib32|/usr/lib32/libarchive.a
world|lib32|/usr/lib32/libarchive_p.a
world|lib32|/usr/lib32/libasn1.a
world|lib32|/usr/lib32/libasn1_p.a
world|lib32|/usr/lib32/libavl.a
world|lib32|/usr/lib32/libavl_p.a
world|lib32|/usr/lib32/libbegemot.a
world|lib32|/usr/lib32/libbegemot_p.a
world|lib32|/usr/lib32/libbluetooth.a
world|lib32|/usr/lib32/libbluetooth_p.a
world|lib32|/usr/lib32/libbsdxml.a
world|lib32|/usr/lib32/libbsdxml_p.a
world|lib32|/usr/lib32/libbsm.a
world|lib32|/usr/lib32/libbsm_p.a
world|lib32|/usr/lib32/libbsnmp.a
world|lib32|/usr/lib32/libbsnmp_p.a
world|lib32|/usr/lib32/libbz2.a
world|lib32|/usr/lib32/libbz2_p.a
world|lib32|/usr/lib32/libc.a
world|lib32|/usr/lib32/libc_p.a
world|lib32|/usr/lib32/libc_pic.a
world|lib32|/usr/lib32/libcalendar.a
world|lib32|/usr/lib32/libcalendar_p.a
world|lib32|/usr/lib32/libcam.a
world|lib32|/usr/lib32/libcam_p.a
world|lib32|/usr/lib32/libcom_err.a
world|lib32|/usr/lib32/libcom_err_p.a
world|lib32|/usr/lib32/libcompat.a
world|lib32|/usr/lib32/libcompat_p.a
world|lib32|/usr/lib32/libcrypt.a
world|lib32|/usr/lib32/libcrypt_p.a
world|lib32|/usr/lib32/libcrypto.a
world|lib32|/usr/lib32/libcrypto.so.5
world|lib32|/usr/lib32/libcrypto_p.a
world|lib32|/usr/lib32/libctf.a
world|lib32|/usr/lib32/libctf_p.a
world|lib32|/usr/lib32/libdevinfo.a
world|lib32|/usr/lib32/libdevinfo_p.a
world|lib32|/usr/lib32/libdevstat.a
world|lib32|/usr/lib32/libdevstat_p.a
world|lib32|/usr/lib32/libdialog.a
world|lib32|/usr/lib32/libdialog_p.a
world|lib32|/usr/lib32/libdisk.a
world|lib32|/usr/lib32/libdtrace.a
world|lib32|/usr/lib32/libdtrace_p.a
world|lib32|/usr/lib32/libdwarf.a
world|lib32|/usr/lib32/libdwarf_p.a
world|lib32|/usr/lib32/libedit.a
world|lib32|/usr/lib32/libedit_p.a
world|lib32|/usr/lib32/libelf.a
world|lib32|/usr/lib32/libelf_p.a
world|lib32|/usr/lib32/libfetch.a
world|lib32|/usr/lib32/libfetch_p.a
world|lib32|/usr/lib32/libform.a
world|lib32|/usr/lib32/libform_p.a
world|lib32|/usr/lib32/libformw.a
world|lib32|/usr/lib32/libformw_p.a
world|lib32|/usr/lib32/libftpio.a
world|lib32|/usr/lib32/libftpio_p.a
world|lib32|/usr/lib32/libgcc.a
world|lib32|/usr/lib32/libgcc_eh.a
world|lib32|/usr/lib32/libgcc_eh_p.a
world|lib32|/usr/lib32/libgcc_p.a
world|lib32|/usr/lib32/libgcov.a
world|lib32|/usr/lib32/libgeom.a
world|lib32|/usr/lib32/libgeom_p.a
world|lib32|/usr/lib32/libgnuregex.a
world|lib32|/usr/lib32/libgnuregex_p.a
world|lib32|/usr/lib32/libgomp.a
world|lib32|/usr/lib32/libgomp_p.a
world|lib32|/usr/lib32/libgpib.a
world|lib32|/usr/lib32/libgpib_p.a
world|lib32|/usr/lib32/libgssapi.a
world|lib32|/usr/lib32/libgssapi_krb5.a
world|lib32|/usr/lib32/libgssapi_krb5_p.a
world|lib32|/usr/lib32/libgssapi_p.a
world|lib32|/usr/lib32/libhdb.a
world|lib32|/usr/lib32/libhdb_p.a
world|lib32|/usr/lib32/libhistory.a
world|lib32|/usr/lib32/libhistory_p.a
world|lib32|/usr/lib32/libipsec.a
world|lib32|/usr/lib32/libipsec_p.a
world|lib32|/usr/lib32/libipx.a
world|lib32|/usr/lib32/libipx_p.a
world|lib32|/usr/lib32/libkadm5clnt.a
world|lib32|/usr/lib32/libkadm5clnt_p.a
world|lib32|/usr/lib32/libkadm5srv.a
world|lib32|/usr/lib32/libkadm5srv_p.a
world|lib32|/usr/lib32/libkafs5.a
world|lib32|/usr/lib32/libkafs5_p.a
world|lib32|/usr/lib32/libkiconv.a
world|lib32|/usr/lib32/libkiconv_p.a
world|lib32|/usr/lib32/libkrb5.a
world|lib32|/usr/lib32/libkrb5_p.a
world|lib32|/usr/lib32/libkvm.a
world|lib32|/usr/lib32/libkvm_p.a
world|lib32|/usr/lib32/libm.a
world|lib32|/usr/lib32/libm_p.a
world|lib32|/usr/lib32/libmagic.a
world|lib32|/usr/lib32/libmagic_p.a
world|lib32|/usr/lib32/libmd.a
world|lib32|/usr/lib32/libmd_p.a
world|lib32|/usr/lib32/libmemstat.a
world|lib32|/usr/lib32/libmemstat_p.a
world|lib32|/usr/lib32/libmenu.a
world|lib32|/usr/lib32/libmenu_p.a
world|lib32|/usr/lib32/libmenuw.a
world|lib32|/usr/lib32/libmenuw_p.a
world|lib32|/usr/lib32/libmilter.a
world|lib32|/usr/lib32/libmilter_p.a
world|lib32|/usr/lib32/libmp.a
world|lib32|/usr/lib32/libmp_p.a
world|lib32|/usr/lib32/libncp.a
world|lib32|/usr/lib32/libncp_p.a
world|lib32|/usr/lib32/libncurses.a
world|lib32|/usr/lib32/libncurses_p.a
world|lib32|/usr/lib32/libncursesw.a
world|lib32|/usr/lib32/libncursesw_p.a
world|lib32|/usr/lib32/libnetgraph.a
world|lib32|/usr/lib32/libnetgraph_p.a
world|lib32|/usr/lib32/libngatm.a
world|lib32|/usr/lib32/libngatm_p.a
world|lib32|/usr/lib32/libnvpair.a
world|lib32|/usr/lib32/libnvpair_p.a
world|lib32|/usr/lib32/libobjc.a
world|lib32|/usr/lib32/libobjc_p.a
world|lib32|/usr/lib32/libopie.a
world|lib32|/usr/lib32/libopie_p.a
world|lib32|/usr/lib32/libpam.a
world|lib32|/usr/lib32/libpanel.a
world|lib32|/usr/lib32/libpanel_p.a
world|lib32|/usr/lib32/libpanelw.a
world|lib32|/usr/lib32/libpanelw_p.a
world|lib32|/usr/lib32/libpcap.a
world|lib32|/usr/lib32/libpcap_p.a
world|lib32|/usr/lib32/libpmc.a
world|lib32|/usr/lib32/libpmc_p.a
world|lib32|/usr/lib32/libproc.a
world|lib32|/usr/lib32/libproc_p.a
world|lib32|/usr/lib32/libradius.a
world|lib32|/usr/lib32/libradius_p.a
world|lib32|/usr/lib32/libreadline.a
world|lib32|/usr/lib32/libreadline_p.a
world|lib32|/usr/lib32/libroken.a
world|lib32|/usr/lib32/libroken_p.a
world|lib32|/usr/lib32/librpcsvc.a
world|lib32|/usr/lib32/librpcsvc_p.a
world|lib32|/usr/lib32/librt.a
world|lib32|/usr/lib32/librt_p.a
world|lib32|/usr/lib32/libsbuf.a
world|lib32|/usr/lib32/libsbuf_p.a
world|lib32|/usr/lib32/libsdp.a
world|lib32|/usr/lib32/libsdp_p.a
world|lib32|/usr/lib32/libsmb.a
world|lib32|/usr/lib32/libsmb_p.a
world|lib32|/usr/lib32/libssh.a
world|lib32|/usr/lib32/libssh_p.a
world|lib32|/usr/lib32/libssl.a
world|lib32|/usr/lib32/libssl_p.a
world|lib32|/usr/lib32/libssp.a
world|lib32|/usr/lib32/libssp_nonshared.a
world|lib32|/usr/lib32/libstand.a
world|lib32|/usr/lib32/libstdc++.a
world|lib32|/usr/lib32/libstdc++_p.a
world|lib32|/usr/lib32/libsupc++.a
world|lib32|/usr/lib32/libsupc++_p.a
world|lib32|/usr/lib32/libtacplus.a
world|lib32|/usr/lib32/libtacplus_p.a
world|lib32|/usr/lib32/libthr.a
world|lib32|/usr/lib32/libthr_p.a
world|lib32|/usr/lib32/libthread_db.a
world|lib32|/usr/lib32/libthread_db_p.a
world|lib32|/usr/lib32/libufs.a
world|lib32|/usr/lib32/libufs_p.a
world|lib32|/usr/lib32/libugidfw.a
world|lib32|/usr/lib32/libugidfw_p.a
world|lib32|/usr/lib32/libumem.a
world|lib32|/usr/lib32/libumem_p.a
world|lib32|/usr/lib32/libusbhid.a
world|lib32|/usr/lib32/libusbhid_p.a
world|lib32|/usr/lib32/libutil.a
world|lib32|/usr/lib32/libutil_p.a
world|lib32|/usr/lib32/libuutil.a
world|lib32|/usr/lib32/libuutil_p.a
world|lib32|/usr/lib32/libvgl.a
world|lib32|/usr/lib32/libvgl_p.a
world|lib32|/usr/lib32/libwrap.a
world|lib32|/usr/lib32/libwrap_p.a
world|lib32|/usr/lib32/liby.a
world|lib32|/usr/lib32/liby_p.a
world|lib32|/usr/lib32/libypclnt.a
world|lib32|/usr/lib32/libypclnt_p.a
world|lib32|/usr/lib32/libz.a
world|lib32|/usr/lib32/libz_p.a
world|lib32|/usr/lib32/libzfs.a
world|lib32|/usr/lib32/libzfs_p.a
world|lib32|/usr/lib32/libzpool.a
world|proflibs|/usr/lib/libalias_cuseeme_p.a
world|proflibs|/usr/lib/libalias_dummy_p.a
world|proflibs|/usr/lib/libalias_ftp_p.a
world|proflibs|/usr/lib/libalias_irc_p.a
world|proflibs|/usr/lib/libalias_nbt_p.a
world|proflibs|/usr/lib/libalias_p.a
world|proflibs|/usr/lib/libalias_pptp_p.a
world|proflibs|/usr/lib/libalias_skinny_p.a
world|proflibs|/usr/lib/libalias_smedia_p.a
world|proflibs|/usr/lib/libarchive_p.a
world|proflibs|/usr/lib/libasn1_p.a
world|proflibs|/usr/lib/libavl_p.a
world|proflibs|/usr/lib/libbegemot_p.a
world|proflibs|/usr/lib/libbluetooth_p.a
world|proflibs|/usr/lib/libbsdxml_p.a
world|proflibs|/usr/lib/libbsm_p.a
world|proflibs|/usr/lib/libbsnmp_p.a
world|proflibs|/usr/lib/libbz2_p.a
world|proflibs|/usr/lib/libc_p.a
world|proflibs|/usr/lib/libcalendar_p.a
world|proflibs|/usr/lib/libcam_p.a
world|proflibs|/usr/lib/libcom_err_p.a
world|proflibs|/usr/lib/libcompat_p.a
world|proflibs|/usr/lib/libcrypt_p.a
world|proflibs|/usr/lib/libcrypto_p.a
world|proflibs|/usr/lib/libctf_p.a
world|proflibs|/usr/lib/libdevinfo_p.a
world|proflibs|/usr/lib/libdevstat_p.a
world|proflibs|/usr/lib/libdialog_p.a
world|proflibs|/usr/lib/libdtrace_p.a
world|proflibs|/usr/lib/libdwarf_p.a
world|proflibs|/usr/lib/libedit_p.a
world|proflibs|/usr/lib/libelf_p.a
world|proflibs|/usr/lib/libfetch_p.a
world|proflibs|/usr/lib/libfl_p.a
world|proflibs|/usr/lib/libform_p.a
world|proflibs|/usr/lib/libformw_p.a
world|proflibs|/usr/lib/libftpio_p.a
world|proflibs|/usr/lib/libgcc_eh_p.a
world|proflibs|/usr/lib/libgcc_p.a
world|proflibs|/usr/lib/libgeom_p.a
world|proflibs|/usr/lib/libgnuregex_p.a
world|proflibs|/usr/lib/libgomp_p.a
world|proflibs|/usr/lib/libgpib_p.a
world|proflibs|/usr/lib/libgssapi_krb5_p.a
world|proflibs|/usr/lib/libgssapi_p.a
world|proflibs|/usr/lib/libhdb_p.a
world|proflibs|/usr/lib/libhistory_p.a
world|proflibs|/usr/lib/libipsec_p.a
world|proflibs|/usr/lib/libipx_p.a
world|proflibs|/usr/lib/libkadm5clnt_p.a
world|proflibs|/usr/lib/libkadm5srv_p.a
world|proflibs|/usr/lib/libkafs5_p.a
world|proflibs|/usr/lib/libkiconv_p.a
world|proflibs|/usr/lib/libkrb5_p.a
world|proflibs|/usr/lib/libkvm_p.a
world|proflibs|/usr/lib/libl_p.a
world|proflibs|/usr/lib/libln_p.a
world|proflibs|/usr/lib/liblwres_p.a
world|proflibs|/usr/lib/libm_p.a
world|proflibs|/usr/lib/libmagic_p.a
world|proflibs|/usr/lib/libmd_p.a
world|proflibs|/usr/lib/libmemstat_p.a
world|proflibs|/usr/lib/libmenu_p.a
world|proflibs|/usr/lib/libmenuw_p.a
world|proflibs|/usr/lib/libmilter_p.a
world|proflibs|/usr/lib/libmp_p.a
world|proflibs|/usr/lib/libncp_p.a
world|proflibs|/usr/lib/libncurses_p.a
world|proflibs|/usr/lib/libncursesw_p.a
world|proflibs|/usr/lib/libnetgraph_p.a
world|proflibs|/usr/lib/libngatm_p.a
world|proflibs|/usr/lib/libnvpair_p.a
world|proflibs|/usr/lib/libobjc_p.a
world|proflibs|/usr/lib/libopie_p.a
world|proflibs|/usr/lib/libpanel_p.a
world|proflibs|/usr/lib/libpanelw_p.a
world|proflibs|/usr/lib/libpcap_p.a
world|proflibs|/usr/lib/libpmc_p.a
world|proflibs|/usr/lib/libproc_p.a
world|proflibs|/usr/lib/libradius_p.a
world|proflibs|/usr/lib/libreadline_p.a
world|proflibs|/usr/lib/libroken_p.a
world|proflibs|/usr/lib/librpcsvc_p.a
world|proflibs|/usr/lib/librt_p.a
world|proflibs|/usr/lib/libsbuf_p.a
world|proflibs|/usr/lib/libsdp_p.a
world|proflibs|/usr/lib/libsmb_p.a
world|proflibs|/usr/lib/libssh_p.a
world|proflibs|/usr/lib/libssl_p.a
world|proflibs|/usr/lib/libstdc++_p.a
world|proflibs|/usr/lib/libsupc++_p.a
world|proflibs|/usr/lib/libtacplus_p.a
world|proflibs|/usr/lib/libthr_p.a
world|proflibs|/usr/lib/libthread_db_p.a
world|proflibs|/usr/lib/libufs_p.a
world|proflibs|/usr/lib/libugidfw_p.a
world|proflibs|/usr/lib/libumem_p.a
world|proflibs|/usr/lib/libusbhid_p.a
world|proflibs|/usr/lib/libutil_p.a
world|proflibs|/usr/lib/libuutil_p.a
world|proflibs|/usr/lib/libwrap_p.a
world|proflibs|/usr/lib/liby_p.a
world|proflibs|/usr/lib/libypclnt_p.a
world|proflibs|/usr/lib/libz_p.a
world|proflibs|/usr/lib/libzfs_p.a
Values of build stamps, excluding library archive headers:
v1.2 (Aug 26 2009 18:13:46)
v1.2 (Aug 26 2009 18:11:44)
@(#)FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
7.1-RELEASE-p7
Wed Aug 26 17:29:15 UTC 2009
Wed Aug 26 17:29:15 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
Wed Aug 26 17:20:39 UTC 2009
ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
* Copyright (c) 1992-2009 The FreeBSD Project.
Wed Aug 26 17:20:39 UTC 2009
Wed Aug 26 17:29:30 UTC 2009
Aug 26 2009
ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)
ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:20:39 UTC 2009
New updates:
kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|
kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|
kernel|generic|/|d|0|0|0755|0||
src|base|/|d|0|0|0755|0||
src|bin|/|d|0|0|0755|0||
src|cddl|/|d|0|0|0755|0||
src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|
src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|
src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|
src|contrib|/contrib/lukemftpd/src/extern.h|f|0|10000|0644|0|16e4c3701b151305cf683c6f8419c8fd23d9fefa3d12732a029c32396d6d6a8a|
src|contrib|/contrib/lukemftpd/src/ftpcmd.y|f|0|10000|0644|0|9d36f9e8a88b54ad2e38058d72bb87a1ee6b7d54a71897b55a83ffd31f1c1f93|
src|contrib|/contrib/lukemftpd/src/ftpd.c|f|0|10000|0644|0|b79b6396314b1355a28c0afa4f1aad9d8cd3fa5ad372eeb9a89416d239c55fdd|
src|contrib|/contrib/ntp/ntpd/ntp_crypto.c|f|0|10000|0644|0|cc9480b2b8d217378c65664ec25b15814fe65de6f972fea3460a5c7b905bbdf9|
src|contrib|/contrib/telnet/telnetd/sys_term.c|f|0|10000|0644|0|c4cceb60fe065858ac2a3e3f16bdfc843b108731a062a897bfd5ff5a5fbd872f|
src|contrib|/|d|0|0|0755|0||
src|crypto|/crypto/openssl/apps/speed.c|f|0|10000|0644|0|8e11322461b3956922f1bfa0f9d8268b0b54773f9083f9c19333f50bc75ebeea|
src|crypto|/crypto/openssl/apps/spkac.c|f|0|10000|0644|0|9f4c7dd86b30543cfd63d376d58042cdb94a0eb14fdc53181b6f74a2798c324d|
src|crypto|/crypto/openssl/apps/verify.c|f|0|10000|0644|0|2b190f87a7451ff427dcf1055cc8f1cb7b61f6aefd846ec8fa41dc5570682cc4|
src|crypto|/crypto/openssl/apps/x509.c|f|0|10000|0644|0|d25e90db11d136bbacd8914c355539053908fc34473b6f22332e46187f409a25|
src|crypto|/crypto/openssl/crypto/asn1/asn1.h|f|0|10000|0644|0|63d2a7ee846734a0dc33e67dd8e94056baed7ab954826e72137bfbc1a7344531|
src|crypto|/crypto/openssl/crypto/asn1/asn1_err.c|f|0|10000|0644|0|fcd0c3b52479c832b1b3d1a97bf3c616d35e7ad4d10c44accf5588651ff71cc5|
src|crypto|/crypto/openssl/crypto/asn1/tasn_dec.c|f|0|10000|0644|0|b2ce1d063423c21d676aa2bfa835548d8e29b1535ef4b030e5a6bf765c843c17|
src|crypto|/crypto/openssl/ssl/s2_clnt.c|f|0|10000|0644|0|8f348f39afa9f50613c200abe552f9eaa315c982c5948fe3c72b77e7e5399928|
src|crypto|/crypto/openssl/ssl/s2_srvr.c|f|0|10000|0644|0|afe502ba45387e0becea05ca40d4c2cf6b1ea1202c409d7709b5e49ee712ec41|
src|crypto|/crypto/openssl/ssl/s3_clnt.c|f|0|10000|0644|0|c631d4fdb4b4a75b6c2ecb87c4f316d4a2af1040a56a243908a50fb99f91b2b1|
src|crypto|/crypto/openssl/ssl/s3_srvr.c|f|0|10000|0644|0|4b1409a3ea03d782793188d3132a63d67583ac841bcef3366a8241da11b95c05|
src|crypto|/crypto/openssl/ssl/ssltest.c|f|0|10000|0644|0|698c1b3b7f5ddf00ca29d08451ad628f768d89bec386e5be7a5cbdb1486c0a4a|
src|crypto|/|d|0|0|0755|0||
src|etc|/|d|0|0|0755|0||
src|games|/|d|0|0|0755|0||
src|gnu|/|d|0|0|0755|0||
src|include|/|d|0|0|0755|0||
src|krb5|/|d|0|0|0755|0||
src|libexec|/|d|0|0|0755|0||
src|lib|/lib/libc/db/btree/bt_split.c|f|0|10000|0644|0|b9bfc693e4abcaf51a87ba1c1cad15b7bc655c91f075d8cb4aa0b80dd55c65fe|
src|lib|/lib/libc/db/hash/hash_buf.c|f|0|10000|0644|0|04dd645a1fda7594d1a6d401e36fad145a2f85edc04963710fc4a5b31c72d55c|
src|lib|/lib/libc/db/mpool/mpool.c|f|0|10000|0644|0|986af06bba217829e15cb166fc609dbf89282bd9775e80dd3778413dd5cfc0e7|
src|lib|/|d|0|0|0755|0||
src|release|/|d|0|0|0755|0||
src|rescue|/|d|0|0|0755|0||
src|sbin|/|d|0|0|0755|0||
src|secure|/|d|0|0|0755|0||
src|share|/|d|0|0|0755|0||
src|sys|/sys/conf/newvers.sh|f|0|0|0644|0|157b09a1244756217805f3f9674792df909d0c00c6b6e697562674da35803f33|
src|sys|/sys/kern/kern_time.c|f|0|10000|0644|0|1de569e1513207413bbbb6a63d4395e85c790f23e6a0a09602b83a11d27d4cc1|
src|sys|/sys/kern/sys_pipe.c|f|0|10000|0644|0|90ac7b73f5a5f6e4a3806233e6522eee047718ee8fc111b1cfa72ac86e289576|
src|sys|/sys/netinet6/in6.c|f|0|10000|0644|0|0f8bf3515f443809a7b0675fe649d7b6578e179af5e99a174b1dff4b5fb9894d|
src|sys|/|d|0|0|0755|0||
src|tools|/|d|0|0|0755|0||
src|ubin|/|d|0|0|0755|0||
src|usbin|/|d|0|0|0755|0||
world|base|/lib/libc.so.7|f|0|0|0444|400000|f85c2793851532b56ec1f383233276d1ef4dadb5edaacc12b88097eca9269e2e|
world|base|/lib/libcrypto.so.5|f|0|0|0444|0|4bd9c4f67a08b6e0ce7eef2b4fa50470a603a6d60da65c4999674fe2b96afd59|
world|base|/rescue/[|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|
world|base|/rescue/atacontrol|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/atmconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/badsect|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/bsdlabel|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/bunzip2|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/bzcat|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/bzip2|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/camcontrol|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/cat|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ccdconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/chflags|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/chio|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/chmod|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/chroot|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/clri|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/cp|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/csh|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/date|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dd|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/devfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/df|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dhclient|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/disklabel|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dmesg|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dumpfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dumpon|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/dump|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/echo|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ed|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/expr|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ex|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fastboot|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fasthalt|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fdisk|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsck_4.2bsd|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsck_ffs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsck_msdosfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsck_ufs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsck|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsdb|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/fsirand|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/gbde|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/getfacl|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/groups|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/gunzip|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/gzcat|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/gzip|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/halt|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/hostname|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/id|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ifconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/init|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ipf|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kenv|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kill|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kldconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kldload|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kldstat|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/kldunload|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ldconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/link|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ln|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ls|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/md5|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mdconfig|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mdmfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mkdir|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mknod|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_cd9660|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_msdosfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_nfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_ntfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_nullfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_udf|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount_unionfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mount|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/mv|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/newfs_msdos|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/newfs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/nos-tun|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/pax|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ping6|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ping|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/ps|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/pwd|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rcorder|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rcp|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rdump|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/realpath|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/reboot|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/red|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rescue|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/restore|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rmdir|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rm|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/routed|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/route|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rrestore|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rtquery|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/rtsol|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/savecore|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/setfacl|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/sh|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/slattach|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/spppcontrol|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/startslip|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/stty|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/swapon|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/sync|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/sysctl|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/tar|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/tcsh|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/test|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/tunefs|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/umount|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/unlink|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/vi|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/whoami|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/rescue/zcat|f|0|0|0555|0|3006e257f11acf66d3f5d259f56d72e28c120b8d3d9d6eb8ca62de80bf274ab7|/rescue/[
world|base|/sbin/init|f|0|0|0555|400000|f8a3b96ea281f317a724f132f07b9f70302c385b998ca86e48374d51d59ed22c|
world|base|/usr/bin/dig|f|0|0|0555|0|4e6a611fe9a1092071b4e67de70ff5c78b4c1ffee8d52b96f437c8f4b968c409|
world|base|/usr/bin/host|f|0|0|0555|0|6d305c5ab8f1d3b2741e856836efd0fe28dfb26cbea1da0f9a9d92df2ee6877b|
world|base|/usr/bin/nslookup|f|0|0|0555|0|7dc71d85f604c266a2417fb611f9b311a2ad645dba293dcd4de748016063643a|
world|base|/usr/bin/nsupdate|f|0|0|0555|0|936837e33fd774fd8b2001ffe502e365a5335b10499d4125f5aab2c539e5b9af|
world|base|/usr/bin/openssl|f|0|0|0555|0|c79743f0b816bcd74c59f154fc17f861662ba62b931a27066eb4d83efac41ea7|
world|base|/usr/include/openssl/asn1.h|f|0|0|0444|0|63d2a7ee846734a0dc33e67dd8e94056baed7ab954826e72137bfbc1a7344531|
world|base|/usr/lib/libc.a|f|0|0|0444|0|d8e3413ab2101f94025c9649935d836a33cc976ddff579a0f2c5d9b173a326c7|
world|base|/usr/lib/libc_pic.a|f|0|0|0444|0|5c0a11ed9605a88869aa0577948753b2b5e0f38e934fe063b97a7a36f747e162|
world|base|/usr/lib/libcrypto.a|f|0|0|0444|0|0fb76816febf29edf7318f8cdea4a6071969d942b2dea8034e69852b877b124c|
world|base|/usr/lib/libssl.a|f|0|0|0444|0|e8e4d5171a2234625ffce8e78a1b0daf310bccfd37fb72fc872fbd8e63b83467|
world|base|/usr/lib/libssl.so.5|f|0|0|0444|0|72a1c0afab0b5eb63ab56a39390a33bfc60544450bbfb2fc5597547e678c3aa0|
world|base|/usr/libexec/lukemftpd|f|0|0|0555|0|8ef126a71a960bbd0bf759acc31af5b33750ea6f6c07420345682436aa6988c6|
world|base|/usr/libexec/telnetd|f|0|0|0555|0|ae2aa516d0fe6d838b2cf83df7b11da358ac5c0102a077b0a19a367f493d0efd|
world|base|/usr/sbin/dnssec-keygen|f|0|0|0555|0|8cda89cdd5661a72296f52d4d59d463f019ed141d23c231c7198c0160b115c9a|
world|base|/usr/sbin/dnssec-signzone|f|0|0|0555|0|bb6fb1308537ddcfefa5a3c495a774e6a5edf9a210f93438d13e557ff603babe|
world|base|/usr/sbin/lwresd|f|0|0|0555|0|deffdbff2f77a330713fe09b58647b26b4604ef7045b9c85b3a3eebcc178bc10|
world|base|/usr/sbin/named-checkconf|f|0|0|0555|0|f69aefa279b9f8f45f55fc2966fdb08679424a76d18d5e46722861a82d68dfec|
world|base|/usr/sbin/named-checkzone|f|0|0|0555|0|799718adb365b5e1a48c7183e06d86f9914d2be4edf28ce7cd6b1e6e53f9d5c1|
world|base|/usr/sbin/named-compilezone|f|0|0|0555|0|799718adb365b5e1a48c7183e06d86f9914d2be4edf28ce7cd6b1e6e53f9d5c1|/usr/sbin/named-checkzone
world|base|/usr/sbin/named|f|0|0|0555|0|deffdbff2f77a330713fe09b58647b26b4604ef7045b9c85b3a3eebcc178bc10|/usr/sbin/lwresd
world|base|/usr/sbin/ntpd|f|0|0|0555|0|54f30bfd1ef1ed402688df38e7cc2a7a93c7b42a5f1b264aea10153c23b4ab08|
world|base|/usr/sbin/rndc-confgen|f|0|0|0555|0|ed8c2a8af69813b6dade116df42e797b970a33583298bbb1719a4ff6131a7e07|
world|lib32|/usr/lib32/libc.a|f|0|0|0444|0|54dcbd716dfe7d5440de506dc546310d4ac465d8bbbcb3cf387c1c6d831f2617|
world|lib32|/usr/lib32/libc.so.7|f|0|0|0444|400000|6aae8b506339647fa94f5ae25327af0604f4aec0ca871856d1a8e4a18c51886d|
world|lib32|/usr/lib32/libc_p.a|f|0|0|0444|0|2fe8c839033fe16fe854a4d91de3ec2a74eae4d1f8eff15108089d8d81aac595|
world|lib32|/usr/lib32/libc_pic.a|f|0|0|0444|0|e1b65817889ba897c65aa7bb8cabf828f31e73207b95b377664bc8b914570438|
world|lib32|/usr/lib32/libcrypto.a|f|0|0|0444|0|68a9e67eebe1cc1185cd72a3943a2d56828f771cd9c491edc995c7c1d02bc05e|
world|lib32|/usr/lib32/libcrypto.so.5|f|0|0|0444|0|68af2001f1e2b6d0f3b528ce89b6b206175a3e9309b1e47efb31ce81838402f0|
world|lib32|/usr/lib32/libcrypto_p.a|f|0|0|0444|0|9b41a4a12ff601616a8bc7b309a32554f02dc7bcb25dddac908ef6f494488512|
world|lib32|/usr/lib32/libssl.a|f|0|0|0444|0|6d882bce2c6a1c3ec83d86822c64e15fd2111daa2eeeaddeb7bd2aa563a4d28d|
world|lib32|/usr/lib32/libssl.so.5|f|0|0|0444|0|c31e60f9622459ddf6442c23d24720ef583374381c8a67f5579cfc3233fc452e|
world|lib32|/usr/lib32/libssl_p.a|f|0|0|0444|0|86d88dbae2e1833bac5686d9b0fe67d54e8f0dcd72af0f94281819b352dc88ba|
world|proflibs|/usr/lib/libc_p.a|f|0|0|0444|0|c704160abb6bacf00820fa1ffb002648f0000ab72d991bd27721c32a71cc0218|
world|proflibs|/usr/lib/libcrypto_p.a|f|0|0|0444|0|6942da533a9cc7732ed9e6e00a240db8c0be0763a5787a2012d111629673a9d4|
world|proflibs|/usr/lib/libssl_p.a|f|0|0|0444|0|e1af68851682db87a5779f73556ebfd1d4f9e98294af64349c87c22d1917de36|
FreeBSD/amd64 7.1-RELEASE update build complete. Please review
the list of build stamps printed above and the list of updated
files to confirm that they look sensible, then run
# sh -e approve.sh amd64 7.1-RELEASE
to sign the build.

View file

@ -1,978 +0,0 @@
# $FreeBSD$
# sh scripts/init.sh amd64 7.2-RELEASE
Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE
/usr/local/freebsd-update-server/work/7.2-RELE100% of 588 MB 359 kBps 00m00s
Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE
Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE
Files built but not released:
Files released but not built:
Files which differ by more than contents:
Files which differ between release and build:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
src|sys|/sys/conf/newvers.sh
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
world|base|/usr/lib/libalias_irc.a
world|base|/usr/lib/libalias_nbt.a
world|base|/usr/lib/libalias_pptp.a
world|base|/usr/lib/libalias_skinny.a
world|base|/usr/lib/libalias_smedia.a
world|base|/usr/lib/libarchive.a
world|base|/usr/lib/libasn1.a
world|base|/usr/lib/libavl.a
world|base|/usr/lib/libbegemot.a
world|base|/usr/lib/libbluetooth.a
world|base|/usr/lib/libbsdxml.a
world|base|/usr/lib/libbsm.a
world|base|/usr/lib/libbsnmp.a
world|base|/usr/lib/libbz2.a
world|base|/usr/lib/libc.a
world|base|/usr/lib/libc_pic.a
world|base|/usr/lib/libcalendar.a
world|base|/usr/lib/libcam.a
world|base|/usr/lib/libcom_err.a
world|base|/usr/lib/libcompat.a
world|base|/usr/lib/libcrypt.a
world|base|/usr/lib/libcrypto.a
world|base|/usr/lib/libctf.a
world|base|/usr/lib/libdevinfo.a
world|base|/usr/lib/libdevstat.a
world|base|/usr/lib/libdialog.a
world|base|/usr/lib/libdisk.a
world|base|/usr/lib/libdtrace.a
world|base|/usr/lib/libdwarf.a
world|base|/usr/lib/libedit.a
world|base|/usr/lib/libelf.a
world|base|/usr/lib/libfetch.a
world|base|/usr/lib/libfl.a
world|base|/usr/lib/libform.a
world|base|/usr/lib/libformw.a
world|base|/usr/lib/libftpio.a
world|base|/usr/lib/libgcc.a
world|base|/usr/lib/libgcc_eh.a
world|base|/usr/lib/libgcov.a
world|base|/usr/lib/libgeom.a
world|base|/usr/lib/libgnuregex.a
world|base|/usr/lib/libgomp.a
world|base|/usr/lib/libgpib.a
world|base|/usr/lib/libgssapi.a
world|base|/usr/lib/libgssapi_krb5.a
world|base|/usr/lib/libhdb.a
world|base|/usr/lib/libhistory.a
world|base|/usr/lib/libipsec.a
world|base|/usr/lib/libipx.a
world|base|/usr/lib/libkadm5clnt.a
world|base|/usr/lib/libkadm5srv.a
world|base|/usr/lib/libkafs5.a
world|base|/usr/lib/libkiconv.a
world|base|/usr/lib/libkrb5.a
world|base|/usr/lib/libkvm.a
world|base|/usr/lib/libl.a
world|base|/usr/lib/libln.a
world|base|/usr/lib/liblwres.a
world|base|/usr/lib/libm.a
world|base|/usr/lib/libmagic.a
world|base|/usr/lib/libmd.a
world|base|/usr/lib/libmemstat.a
world|base|/usr/lib/libmenu.a
world|base|/usr/lib/libmenuw.a
world|base|/usr/lib/libmilter.a
world|base|/usr/lib/libmp.a
world|base|/usr/lib/libncp.a
world|base|/usr/lib/libncurses.a
world|base|/usr/lib/libncursesw.a
world|base|/usr/lib/libnetgraph.a
world|base|/usr/lib/libngatm.a
world|base|/usr/lib/libnvpair.a
world|base|/usr/lib/libobjc.a
world|base|/usr/lib/libopie.a
world|base|/usr/lib/libpam.a
world|base|/usr/lib/libpanel.a
world|base|/usr/lib/libpanelw.a
world|base|/usr/lib/libpcap.a
world|base|/usr/lib/libpmc.a
world|base|/usr/lib/libproc.a
world|base|/usr/lib/libradius.a
world|base|/usr/lib/libreadline.a
world|base|/usr/lib/libroken.a
world|base|/usr/lib/librpcsvc.a
world|base|/usr/lib/librt.a
world|base|/usr/lib/libsbuf.a
world|base|/usr/lib/libsdp.a
world|base|/usr/lib/libsmb.a
world|base|/usr/lib/libssh.a
world|base|/usr/lib/libssl.a
world|base|/usr/lib/libssp.a
world|base|/usr/lib/libssp_nonshared.a
world|base|/usr/lib/libstand.a
world|base|/usr/lib/libstdc++.a
world|base|/usr/lib/libsupc++.a
world|base|/usr/lib/libtacplus.a
world|base|/usr/lib/libthr.a
world|base|/usr/lib/libthread_db.a
world|base|/usr/lib/libufs.a
world|base|/usr/lib/libugidfw.a
world|base|/usr/lib/libumem.a
world|base|/usr/lib/libusbhid.a
world|base|/usr/lib/libutil.a
world|base|/usr/lib/libuutil.a
world|base|/usr/lib/libwrap.a
world|base|/usr/lib/liby.a
world|base|/usr/lib/libypclnt.a
world|base|/usr/lib/libz.a
world|base|/usr/lib/libzfs.a
world|base|/usr/lib/libzpool.a
world|base|/usr/sbin/amd
world|base|/usr/sbin/iasl
world|base|/usr/sbin/ntpd
world|base|/usr/sbin/ntpdate
world|base|/usr/sbin/ntpdc
world|base|/usr/share/misc/magic
world|base|/usr/share/misc/magic.mgc
world|lib32|/usr/lib32/libalias.a
world|lib32|/usr/lib32/libalias_cuseeme.a
world|lib32|/usr/lib32/libalias_cuseeme_p.a
world|lib32|/usr/lib32/libalias_dummy.a
world|lib32|/usr/lib32/libalias_dummy_p.a
world|lib32|/usr/lib32/libalias_ftp.a
world|lib32|/usr/lib32/libalias_ftp_p.a
world|lib32|/usr/lib32/libalias_irc.a
world|lib32|/usr/lib32/libalias_irc_p.a
world|lib32|/usr/lib32/libalias_nbt.a
world|lib32|/usr/lib32/libalias_nbt_p.a
world|lib32|/usr/lib32/libalias_p.a
world|lib32|/usr/lib32/libalias_pptp.a
world|lib32|/usr/lib32/libalias_pptp_p.a
world|lib32|/usr/lib32/libalias_skinny.a
world|lib32|/usr/lib32/libalias_skinny_p.a
world|lib32|/usr/lib32/libalias_smedia.a
world|lib32|/usr/lib32/libalias_smedia_p.a
world|lib32|/usr/lib32/libarchive.a
world|lib32|/usr/lib32/libarchive_p.a
world|lib32|/usr/lib32/libasn1.a
world|lib32|/usr/lib32/libasn1_p.a
world|lib32|/usr/lib32/libavl.a
world|lib32|/usr/lib32/libavl_p.a
world|lib32|/usr/lib32/libbegemot.a
world|lib32|/usr/lib32/libbegemot_p.a
world|lib32|/usr/lib32/libbluetooth.a
world|lib32|/usr/lib32/libbluetooth_p.a
world|lib32|/usr/lib32/libbsdxml.a
world|lib32|/usr/lib32/libbsdxml_p.a
world|lib32|/usr/lib32/libbsm.a
world|lib32|/usr/lib32/libbsm_p.a
world|lib32|/usr/lib32/libbsnmp.a
world|lib32|/usr/lib32/libbsnmp_p.a
world|lib32|/usr/lib32/libbz2.a
world|lib32|/usr/lib32/libbz2_p.a
world|lib32|/usr/lib32/libc.a
world|lib32|/usr/lib32/libc_p.a
world|lib32|/usr/lib32/libc_pic.a
world|lib32|/usr/lib32/libcalendar.a
world|lib32|/usr/lib32/libcalendar_p.a
world|lib32|/usr/lib32/libcam.a
world|lib32|/usr/lib32/libcam_p.a
world|lib32|/usr/lib32/libcom_err.a
world|lib32|/usr/lib32/libcom_err_p.a
world|lib32|/usr/lib32/libcompat.a
world|lib32|/usr/lib32/libcompat_p.a
world|lib32|/usr/lib32/libcrypt.a
world|lib32|/usr/lib32/libcrypt_p.a
world|lib32|/usr/lib32/libcrypto.a
world|lib32|/usr/lib32/libcrypto.so.5
world|lib32|/usr/lib32/libcrypto_p.a
world|lib32|/usr/lib32/libctf.a
world|lib32|/usr/lib32/libctf_p.a
world|lib32|/usr/lib32/libdevinfo.a
world|lib32|/usr/lib32/libdevinfo_p.a
world|lib32|/usr/lib32/libdevstat.a
world|lib32|/usr/lib32/libdevstat_p.a
world|lib32|/usr/lib32/libdialog.a
world|lib32|/usr/lib32/libdialog_p.a
world|lib32|/usr/lib32/libdisk.a
world|lib32|/usr/lib32/libdtrace.a
world|lib32|/usr/lib32/libdtrace_p.a
world|lib32|/usr/lib32/libdwarf.a
world|lib32|/usr/lib32/libdwarf_p.a
world|lib32|/usr/lib32/libedit.a
world|lib32|/usr/lib32/libedit_p.a
world|lib32|/usr/lib32/libelf.a
world|lib32|/usr/lib32/libelf_p.a
world|lib32|/usr/lib32/libfetch.a
world|lib32|/usr/lib32/libfetch_p.a
world|lib32|/usr/lib32/libform.a
world|lib32|/usr/lib32/libform_p.a
world|lib32|/usr/lib32/libformw.a
world|lib32|/usr/lib32/libformw_p.a
world|lib32|/usr/lib32/libftpio.a
world|lib32|/usr/lib32/libftpio_p.a
world|lib32|/usr/lib32/libgcc.a
world|lib32|/usr/lib32/libgcc_eh.a
world|lib32|/usr/lib32/libgcc_eh_p.a
world|lib32|/usr/lib32/libgcc_p.a
world|lib32|/usr/lib32/libgcov.a
world|lib32|/usr/lib32/libgeom.a
world|lib32|/usr/lib32/libgeom_p.a
world|lib32|/usr/lib32/libgnuregex.a
world|lib32|/usr/lib32/libgnuregex_p.a
world|lib32|/usr/lib32/libgomp.a
world|lib32|/usr/lib32/libgomp_p.a
world|lib32|/usr/lib32/libgpib.a
world|lib32|/usr/lib32/libgpib_p.a
world|lib32|/usr/lib32/libgssapi.a
world|lib32|/usr/lib32/libgssapi_krb5.a
world|lib32|/usr/lib32/libgssapi_krb5_p.a
world|lib32|/usr/lib32/libgssapi_p.a
world|lib32|/usr/lib32/libhdb.a
world|lib32|/usr/lib32/libhdb_p.a
world|lib32|/usr/lib32/libhistory.a
world|lib32|/usr/lib32/libhistory_p.a
world|lib32|/usr/lib32/libipsec.a
world|lib32|/usr/lib32/libipsec_p.a
world|lib32|/usr/lib32/libipx.a
world|lib32|/usr/lib32/libipx_p.a
world|lib32|/usr/lib32/libkadm5clnt.a
world|lib32|/usr/lib32/libkadm5clnt_p.a
world|lib32|/usr/lib32/libkadm5srv.a
world|lib32|/usr/lib32/libkadm5srv_p.a
world|lib32|/usr/lib32/libkafs5.a
world|lib32|/usr/lib32/libkafs5_p.a
world|lib32|/usr/lib32/libkiconv.a
world|lib32|/usr/lib32/libkiconv_p.a
world|lib32|/usr/lib32/libkrb5.a
world|lib32|/usr/lib32/libkrb5_p.a
world|lib32|/usr/lib32/libkvm.a
world|lib32|/usr/lib32/libkvm_p.a
world|lib32|/usr/lib32/libm.a
world|lib32|/usr/lib32/libm_p.a
world|lib32|/usr/lib32/libmagic.a
world|lib32|/usr/lib32/libmagic_p.a
world|lib32|/usr/lib32/libmd.a
world|lib32|/usr/lib32/libmd_p.a
world|lib32|/usr/lib32/libmemstat.a
world|lib32|/usr/lib32/libmemstat_p.a
world|lib32|/usr/lib32/libmenu.a
world|lib32|/usr/lib32/libmenu_p.a
world|lib32|/usr/lib32/libmenuw.a
world|lib32|/usr/lib32/libmenuw_p.a
world|lib32|/usr/lib32/libmilter.a
world|lib32|/usr/lib32/libmilter_p.a
world|lib32|/usr/lib32/libmp.a
world|lib32|/usr/lib32/libmp_p.a
world|lib32|/usr/lib32/libncp.a
world|lib32|/usr/lib32/libncp_p.a
world|lib32|/usr/lib32/libncurses.a
world|lib32|/usr/lib32/libncurses_p.a
world|lib32|/usr/lib32/libncursesw.a
world|lib32|/usr/lib32/libncursesw_p.a
world|lib32|/usr/lib32/libnetgraph.a
world|lib32|/usr/lib32/libnetgraph_p.a
world|lib32|/usr/lib32/libngatm.a
world|lib32|/usr/lib32/libngatm_p.a
world|lib32|/usr/lib32/libnvpair.a
world|lib32|/usr/lib32/libnvpair_p.a
world|lib32|/usr/lib32/libobjc.a
world|lib32|/usr/lib32/libobjc_p.a
world|lib32|/usr/lib32/libopie.a
world|lib32|/usr/lib32/libopie_p.a
world|lib32|/usr/lib32/libpam.a
world|lib32|/usr/lib32/libpanel.a
world|lib32|/usr/lib32/libpanel_p.a
world|lib32|/usr/lib32/libpanelw.a
world|lib32|/usr/lib32/libpanelw_p.a
world|lib32|/usr/lib32/libpcap.a
world|lib32|/usr/lib32/libpcap_p.a
world|lib32|/usr/lib32/libpmc.a
world|lib32|/usr/lib32/libpmc_p.a
world|lib32|/usr/lib32/libproc.a
world|lib32|/usr/lib32/libproc_p.a
world|lib32|/usr/lib32/libradius.a
world|lib32|/usr/lib32/libradius_p.a
world|lib32|/usr/lib32/libreadline.a
world|lib32|/usr/lib32/libreadline_p.a
world|lib32|/usr/lib32/libroken.a
world|lib32|/usr/lib32/libroken_p.a
world|lib32|/usr/lib32/librpcsvc.a
world|lib32|/usr/lib32/librpcsvc_p.a
world|lib32|/usr/lib32/librt.a
world|lib32|/usr/lib32/librt_p.a
world|lib32|/usr/lib32/libsbuf.a
world|lib32|/usr/lib32/libsbuf_p.a
world|lib32|/usr/lib32/libsdp.a
world|lib32|/usr/lib32/libsdp_p.a
world|lib32|/usr/lib32/libsmb.a
world|lib32|/usr/lib32/libsmb_p.a
world|lib32|/usr/lib32/libssh.a
world|lib32|/usr/lib32/libssh_p.a
world|lib32|/usr/lib32/libssl.a
world|lib32|/usr/lib32/libssl_p.a
world|lib32|/usr/lib32/libssp.a
world|lib32|/usr/lib32/libssp_nonshared.a
world|lib32|/usr/lib32/libstand.a
world|lib32|/usr/lib32/libstdc++.a
world|lib32|/usr/lib32/libstdc++_p.a
world|lib32|/usr/lib32/libsupc++.a
world|lib32|/usr/lib32/libsupc++_p.a
world|lib32|/usr/lib32/libtacplus.a
world|lib32|/usr/lib32/libtacplus_p.a
world|lib32|/usr/lib32/libthr.a
world|lib32|/usr/lib32/libthr_p.a
world|lib32|/usr/lib32/libthread_db.a
world|lib32|/usr/lib32/libthread_db_p.a
world|lib32|/usr/lib32/libufs.a
world|lib32|/usr/lib32/libufs_p.a
world|lib32|/usr/lib32/libugidfw.a
world|lib32|/usr/lib32/libugidfw_p.a
world|lib32|/usr/lib32/libumem.a
world|lib32|/usr/lib32/libumem_p.a
world|lib32|/usr/lib32/libusbhid.a
world|lib32|/usr/lib32/libusbhid_p.a
world|lib32|/usr/lib32/libutil.a
world|lib32|/usr/lib32/libutil_p.a
world|lib32|/usr/lib32/libuutil.a
world|lib32|/usr/lib32/libuutil_p.a
world|lib32|/usr/lib32/libvgl.a
world|lib32|/usr/lib32/libvgl_p.a
world|lib32|/usr/lib32/libwrap.a
world|lib32|/usr/lib32/libwrap_p.a
world|lib32|/usr/lib32/liby.a
world|lib32|/usr/lib32/liby_p.a
world|lib32|/usr/lib32/libypclnt.a
world|lib32|/usr/lib32/libypclnt_p.a
world|lib32|/usr/lib32/libz.a
world|lib32|/usr/lib32/libz_p.a
world|lib32|/usr/lib32/libzfs.a
world|lib32|/usr/lib32/libzfs_p.a
world|lib32|/usr/lib32/libzpool.a
world|proflibs|/usr/lib/libalias_cuseeme_p.a
world|proflibs|/usr/lib/libalias_dummy_p.a
world|proflibs|/usr/lib/libalias_ftp_p.a
world|proflibs|/usr/lib/libalias_irc_p.a
world|proflibs|/usr/lib/libalias_nbt_p.a
world|proflibs|/usr/lib/libalias_p.a
world|proflibs|/usr/lib/libalias_pptp_p.a
world|proflibs|/usr/lib/libalias_skinny_p.a
world|proflibs|/usr/lib/libalias_smedia_p.a
world|proflibs|/usr/lib/libarchive_p.a
world|proflibs|/usr/lib/libasn1_p.a
world|proflibs|/usr/lib/libavl_p.a
world|proflibs|/usr/lib/libbegemot_p.a
world|proflibs|/usr/lib/libbluetooth_p.a
world|proflibs|/usr/lib/libbsdxml_p.a
world|proflibs|/usr/lib/libbsm_p.a
world|proflibs|/usr/lib/libbsnmp_p.a
world|proflibs|/usr/lib/libbz2_p.a
world|proflibs|/usr/lib/libc_p.a
world|proflibs|/usr/lib/libcalendar_p.a
world|proflibs|/usr/lib/libcam_p.a
world|proflibs|/usr/lib/libcom_err_p.a
world|proflibs|/usr/lib/libcompat_p.a
world|proflibs|/usr/lib/libcrypt_p.a
world|proflibs|/usr/lib/libcrypto_p.a
world|proflibs|/usr/lib/libctf_p.a
world|proflibs|/usr/lib/libdevinfo_p.a
world|proflibs|/usr/lib/libdevstat_p.a
world|proflibs|/usr/lib/libdialog_p.a
world|proflibs|/usr/lib/libdtrace_p.a
world|proflibs|/usr/lib/libdwarf_p.a
world|proflibs|/usr/lib/libedit_p.a
world|proflibs|/usr/lib/libelf_p.a
world|proflibs|/usr/lib/libfetch_p.a
world|proflibs|/usr/lib/libfl_p.a
world|proflibs|/usr/lib/libform_p.a
world|proflibs|/usr/lib/libformw_p.a
world|proflibs|/usr/lib/libftpio_p.a
world|proflibs|/usr/lib/libgcc_eh_p.a
world|proflibs|/usr/lib/libgcc_p.a
world|proflibs|/usr/lib/libgeom_p.a
world|proflibs|/usr/lib/libgnuregex_p.a
world|proflibs|/usr/lib/libgomp_p.a
world|proflibs|/usr/lib/libgpib_p.a
world|proflibs|/usr/lib/libgssapi_krb5_p.a
world|proflibs|/usr/lib/libgssapi_p.a
world|proflibs|/usr/lib/libhdb_p.a
world|proflibs|/usr/lib/libhistory_p.a
world|proflibs|/usr/lib/libipsec_p.a
world|proflibs|/usr/lib/libipx_p.a
world|proflibs|/usr/lib/libkadm5clnt_p.a
world|proflibs|/usr/lib/libkadm5srv_p.a
world|proflibs|/usr/lib/libkafs5_p.a
world|proflibs|/usr/lib/libkiconv_p.a
world|proflibs|/usr/lib/libkrb5_p.a
world|proflibs|/usr/lib/libkvm_p.a
world|proflibs|/usr/lib/libl_p.a
world|proflibs|/usr/lib/libln_p.a
world|proflibs|/usr/lib/liblwres_p.a
world|proflibs|/usr/lib/libm_p.a
world|proflibs|/usr/lib/libmagic_p.a
world|proflibs|/usr/lib/libmd_p.a
world|proflibs|/usr/lib/libmemstat_p.a
world|proflibs|/usr/lib/libmenu_p.a
world|proflibs|/usr/lib/libmenuw_p.a
world|proflibs|/usr/lib/libmilter_p.a
world|proflibs|/usr/lib/libmp_p.a
world|proflibs|/usr/lib/libncp_p.a
world|proflibs|/usr/lib/libncurses_p.a
world|proflibs|/usr/lib/libncursesw_p.a
world|proflibs|/usr/lib/libnetgraph_p.a
world|proflibs|/usr/lib/libngatm_p.a
world|proflibs|/usr/lib/libnvpair_p.a
world|proflibs|/usr/lib/libobjc_p.a
world|proflibs|/usr/lib/libopie_p.a
world|proflibs|/usr/lib/libpanel_p.a
world|proflibs|/usr/lib/libpanelw_p.a
world|proflibs|/usr/lib/libpcap_p.a
world|proflibs|/usr/lib/libpmc_p.a
world|proflibs|/usr/lib/libproc_p.a
world|proflibs|/usr/lib/libradius_p.a
world|proflibs|/usr/lib/libreadline_p.a
world|proflibs|/usr/lib/libroken_p.a
world|proflibs|/usr/lib/librpcsvc_p.a
world|proflibs|/usr/lib/librt_p.a
world|proflibs|/usr/lib/libsbuf_p.a
world|proflibs|/usr/lib/libsdp_p.a
world|proflibs|/usr/lib/libsmb_p.a
world|proflibs|/usr/lib/libssh_p.a
world|proflibs|/usr/lib/libssl_p.a
world|proflibs|/usr/lib/libstdc++_p.a
world|proflibs|/usr/lib/libsupc++_p.a
world|proflibs|/usr/lib/libtacplus_p.a
world|proflibs|/usr/lib/libthr_p.a
world|proflibs|/usr/lib/libthread_db_p.a
world|proflibs|/usr/lib/libufs_p.a
world|proflibs|/usr/lib/libugidfw_p.a
world|proflibs|/usr/lib/libumem_p.a
world|proflibs|/usr/lib/libusbhid_p.a
world|proflibs|/usr/lib/libutil_p.a
world|proflibs|/usr/lib/libuutil_p.a
world|proflibs|/usr/lib/libwrap_p.a
world|proflibs|/usr/lib/liby_p.a
world|proflibs|/usr/lib/libypclnt_p.a
world|proflibs|/usr/lib/libz_p.a
world|proflibs|/usr/lib/libzfs_p.a
Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE
Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE
Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE
Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE
Files found which include build stamps:
kernel|generic|/GENERIC/hptrr.ko
kernel|generic|/GENERIC/kernel
world|base|/boot/loader
world|base|/boot/pxeboot
world|base|/etc/mail/freebsd.cf
world|base|/etc/mail/freebsd.submit.cf
world|base|/etc/mail/sendmail.cf
world|base|/etc/mail/submit.cf
world|base|/lib/libcrypto.so.5
world|base|/usr/bin/ntpq
world|base|/usr/include/osreldate.h
world|base|/usr/lib/libalias.a
world|base|/usr/lib/libalias_cuseeme.a
world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
world|base|/usr/lib/libalias_irc.a
world|base|/usr/lib/libalias_nbt.a
world|base|/usr/lib/libalias_pptp.a
world|base|/usr/lib/libalias_skinny.a
world|base|/usr/lib/libalias_smedia.a
world|base|/usr/lib/libarchive.a
world|base|/usr/lib/libasn1.a
world|base|/usr/lib/libavl.a
world|base|/usr/lib/libbegemot.a
world|base|/usr/lib/libbluetooth.a
world|base|/usr/lib/libbsdxml.a
world|base|/usr/lib/libbsm.a
world|base|/usr/lib/libbsnmp.a
world|base|/usr/lib/libbz2.a
world|base|/usr/lib/libc.a
world|base|/usr/lib/libc_pic.a
world|base|/usr/lib/libcalendar.a
world|base|/usr/lib/libcam.a
world|base|/usr/lib/libcom_err.a
world|base|/usr/lib/libcompat.a
world|base|/usr/lib/libcrypt.a
world|base|/usr/lib/libcrypto.a
world|base|/usr/lib/libctf.a
world|base|/usr/lib/libdevinfo.a
world|base|/usr/lib/libdevstat.a
world|base|/usr/lib/libdialog.a
world|base|/usr/lib/libdisk.a
world|base|/usr/lib/libdtrace.a
world|base|/usr/lib/libdwarf.a
world|base|/usr/lib/libedit.a
world|base|/usr/lib/libelf.a
world|base|/usr/lib/libfetch.a
world|base|/usr/lib/libfl.a
world|base|/usr/lib/libform.a
world|base|/usr/lib/libformw.a
world|base|/usr/lib/libftpio.a
world|base|/usr/lib/libgcc.a
world|base|/usr/lib/libgcc_eh.a
world|base|/usr/lib/libgcov.a
world|base|/usr/lib/libgeom.a
world|base|/usr/lib/libgnuregex.a
world|base|/usr/lib/libgomp.a
world|base|/usr/lib/libgpib.a
world|base|/usr/lib/libgssapi.a
world|base|/usr/lib/libgssapi_krb5.a
world|base|/usr/lib/libhdb.a
world|base|/usr/lib/libhistory.a
world|base|/usr/lib/libipsec.a
world|base|/usr/lib/libipx.a
world|base|/usr/lib/libkadm5clnt.a
world|base|/usr/lib/libkadm5srv.a
world|base|/usr/lib/libkafs5.a
world|base|/usr/lib/libkiconv.a
world|base|/usr/lib/libkrb5.a
world|base|/usr/lib/libkvm.a
world|base|/usr/lib/libl.a
world|base|/usr/lib/libln.a
world|base|/usr/lib/liblwres.a
world|base|/usr/lib/libm.a
world|base|/usr/lib/libmagic.a
world|base|/usr/lib/libmd.a
world|base|/usr/lib/libmemstat.a
world|base|/usr/lib/libmenu.a
world|base|/usr/lib/libmenuw.a
world|base|/usr/lib/libmilter.a
world|base|/usr/lib/libmp.a
world|base|/usr/lib/libncp.a
world|base|/usr/lib/libncurses.a
world|base|/usr/lib/libncursesw.a
world|base|/usr/lib/libnetgraph.a
world|base|/usr/lib/libngatm.a
world|base|/usr/lib/libnvpair.a
world|base|/usr/lib/libobjc.a
world|base|/usr/lib/libopie.a
world|base|/usr/lib/libpam.a
world|base|/usr/lib/libpanel.a
world|base|/usr/lib/libpanelw.a
world|base|/usr/lib/libpcap.a
world|base|/usr/lib/libpmc.a
world|base|/usr/lib/libproc.a
world|base|/usr/lib/libradius.a
world|base|/usr/lib/libreadline.a
world|base|/usr/lib/libroken.a
world|base|/usr/lib/librpcsvc.a
world|base|/usr/lib/librt.a
world|base|/usr/lib/libsbuf.a
world|base|/usr/lib/libsdp.a
world|base|/usr/lib/libsmb.a
world|base|/usr/lib/libssh.a
world|base|/usr/lib/libssl.a
world|base|/usr/lib/libssp.a
world|base|/usr/lib/libssp_nonshared.a
world|base|/usr/lib/libstand.a
world|base|/usr/lib/libstdc++.a
world|base|/usr/lib/libsupc++.a
world|base|/usr/lib/libtacplus.a
world|base|/usr/lib/libthr.a
world|base|/usr/lib/libthread_db.a
world|base|/usr/lib/libufs.a
world|base|/usr/lib/libugidfw.a
world|base|/usr/lib/libumem.a
world|base|/usr/lib/libusbhid.a
world|base|/usr/lib/libutil.a
world|base|/usr/lib/libuutil.a
world|base|/usr/lib/libwrap.a
world|base|/usr/lib/liby.a
world|base|/usr/lib/libypclnt.a
world|base|/usr/lib/libz.a
world|base|/usr/lib/libzfs.a
world|base|/usr/lib/libzpool.a
world|base|/usr/sbin/amd
world|base|/usr/sbin/iasl
world|base|/usr/sbin/ntpd
world|base|/usr/sbin/ntpdate
world|base|/usr/sbin/ntpdc
world|lib32|/usr/lib32/libalias.a
world|lib32|/usr/lib32/libalias_cuseeme.a
world|lib32|/usr/lib32/libalias_cuseeme_p.a
world|lib32|/usr/lib32/libalias_dummy.a
world|lib32|/usr/lib32/libalias_dummy_p.a
world|lib32|/usr/lib32/libalias_ftp.a
world|lib32|/usr/lib32/libalias_ftp_p.a
world|lib32|/usr/lib32/libalias_irc.a
world|lib32|/usr/lib32/libalias_irc_p.a
world|lib32|/usr/lib32/libalias_nbt.a
world|lib32|/usr/lib32/libalias_nbt_p.a
world|lib32|/usr/lib32/libalias_p.a
world|lib32|/usr/lib32/libalias_pptp.a
world|lib32|/usr/lib32/libalias_pptp_p.a
world|lib32|/usr/lib32/libalias_skinny.a
world|lib32|/usr/lib32/libalias_skinny_p.a
world|lib32|/usr/lib32/libalias_smedia.a
world|lib32|/usr/lib32/libalias_smedia_p.a
world|lib32|/usr/lib32/libarchive.a
world|lib32|/usr/lib32/libarchive_p.a
world|lib32|/usr/lib32/libasn1.a
world|lib32|/usr/lib32/libasn1_p.a
world|lib32|/usr/lib32/libavl.a
world|lib32|/usr/lib32/libavl_p.a
world|lib32|/usr/lib32/libbegemot.a
world|lib32|/usr/lib32/libbegemot_p.a
world|lib32|/usr/lib32/libbluetooth.a
world|lib32|/usr/lib32/libbluetooth_p.a
world|lib32|/usr/lib32/libbsdxml.a
world|lib32|/usr/lib32/libbsdxml_p.a
world|lib32|/usr/lib32/libbsm.a
world|lib32|/usr/lib32/libbsm_p.a
world|lib32|/usr/lib32/libbsnmp.a
world|lib32|/usr/lib32/libbsnmp_p.a
world|lib32|/usr/lib32/libbz2.a
world|lib32|/usr/lib32/libbz2_p.a
world|lib32|/usr/lib32/libc.a
world|lib32|/usr/lib32/libc_p.a
world|lib32|/usr/lib32/libc_pic.a
world|lib32|/usr/lib32/libcalendar.a
world|lib32|/usr/lib32/libcalendar_p.a
world|lib32|/usr/lib32/libcam.a
world|lib32|/usr/lib32/libcam_p.a
world|lib32|/usr/lib32/libcom_err.a
world|lib32|/usr/lib32/libcom_err_p.a
world|lib32|/usr/lib32/libcompat.a
world|lib32|/usr/lib32/libcompat_p.a
world|lib32|/usr/lib32/libcrypt.a
world|lib32|/usr/lib32/libcrypt_p.a
world|lib32|/usr/lib32/libcrypto.a
world|lib32|/usr/lib32/libcrypto.so.5
world|lib32|/usr/lib32/libcrypto_p.a
world|lib32|/usr/lib32/libctf.a
world|lib32|/usr/lib32/libctf_p.a
world|lib32|/usr/lib32/libdevinfo.a
world|lib32|/usr/lib32/libdevinfo_p.a
world|lib32|/usr/lib32/libdevstat.a
world|lib32|/usr/lib32/libdevstat_p.a
world|lib32|/usr/lib32/libdialog.a
world|lib32|/usr/lib32/libdialog_p.a
world|lib32|/usr/lib32/libdisk.a
world|lib32|/usr/lib32/libdtrace.a
world|lib32|/usr/lib32/libdtrace_p.a
world|lib32|/usr/lib32/libdwarf.a
world|lib32|/usr/lib32/libdwarf_p.a
world|lib32|/usr/lib32/libedit.a
world|lib32|/usr/lib32/libedit_p.a
world|lib32|/usr/lib32/libelf.a
world|lib32|/usr/lib32/libelf_p.a
world|lib32|/usr/lib32/libfetch.a
world|lib32|/usr/lib32/libfetch_p.a
world|lib32|/usr/lib32/libform.a
world|lib32|/usr/lib32/libform_p.a
world|lib32|/usr/lib32/libformw.a
world|lib32|/usr/lib32/libformw_p.a
world|lib32|/usr/lib32/libftpio.a
world|lib32|/usr/lib32/libftpio_p.a
world|lib32|/usr/lib32/libgcc.a
world|lib32|/usr/lib32/libgcc_eh.a
world|lib32|/usr/lib32/libgcc_eh_p.a
world|lib32|/usr/lib32/libgcc_p.a
world|lib32|/usr/lib32/libgcov.a
world|lib32|/usr/lib32/libgeom.a
world|lib32|/usr/lib32/libgeom_p.a
world|lib32|/usr/lib32/libgnuregex.a
world|lib32|/usr/lib32/libgnuregex_p.a
world|lib32|/usr/lib32/libgomp.a
world|lib32|/usr/lib32/libgomp_p.a
world|lib32|/usr/lib32/libgpib.a
world|lib32|/usr/lib32/libgpib_p.a
world|lib32|/usr/lib32/libgssapi.a
world|lib32|/usr/lib32/libgssapi_krb5.a
world|lib32|/usr/lib32/libgssapi_krb5_p.a
world|lib32|/usr/lib32/libgssapi_p.a
world|lib32|/usr/lib32/libhdb.a
world|lib32|/usr/lib32/libhdb_p.a
world|lib32|/usr/lib32/libhistory.a
world|lib32|/usr/lib32/libhistory_p.a
world|lib32|/usr/lib32/libipsec.a
world|lib32|/usr/lib32/libipsec_p.a
world|lib32|/usr/lib32/libipx.a
world|lib32|/usr/lib32/libipx_p.a
world|lib32|/usr/lib32/libkadm5clnt.a
world|lib32|/usr/lib32/libkadm5clnt_p.a
world|lib32|/usr/lib32/libkadm5srv.a
world|lib32|/usr/lib32/libkadm5srv_p.a
world|lib32|/usr/lib32/libkafs5.a
world|lib32|/usr/lib32/libkafs5_p.a
world|lib32|/usr/lib32/libkiconv.a
world|lib32|/usr/lib32/libkiconv_p.a
world|lib32|/usr/lib32/libkrb5.a
world|lib32|/usr/lib32/libkrb5_p.a
world|lib32|/usr/lib32/libkvm.a
world|lib32|/usr/lib32/libkvm_p.a
world|lib32|/usr/lib32/libm.a
world|lib32|/usr/lib32/libm_p.a
world|lib32|/usr/lib32/libmagic.a
world|lib32|/usr/lib32/libmagic_p.a
world|lib32|/usr/lib32/libmd.a
world|lib32|/usr/lib32/libmd_p.a
world|lib32|/usr/lib32/libmemstat.a
world|lib32|/usr/lib32/libmemstat_p.a
world|lib32|/usr/lib32/libmenu.a
world|lib32|/usr/lib32/libmenu_p.a
world|lib32|/usr/lib32/libmenuw.a
world|lib32|/usr/lib32/libmenuw_p.a
world|lib32|/usr/lib32/libmilter.a
world|lib32|/usr/lib32/libmilter_p.a
world|lib32|/usr/lib32/libmp.a
world|lib32|/usr/lib32/libmp_p.a
world|lib32|/usr/lib32/libncp.a
world|lib32|/usr/lib32/libncp_p.a
world|lib32|/usr/lib32/libncurses.a
world|lib32|/usr/lib32/libncurses_p.a
world|lib32|/usr/lib32/libncursesw.a
world|lib32|/usr/lib32/libncursesw_p.a
world|lib32|/usr/lib32/libnetgraph.a
world|lib32|/usr/lib32/libnetgraph_p.a
world|lib32|/usr/lib32/libngatm.a
world|lib32|/usr/lib32/libngatm_p.a
world|lib32|/usr/lib32/libnvpair.a
world|lib32|/usr/lib32/libnvpair_p.a
world|lib32|/usr/lib32/libobjc.a
world|lib32|/usr/lib32/libobjc_p.a
world|lib32|/usr/lib32/libopie.a
world|lib32|/usr/lib32/libopie_p.a
world|lib32|/usr/lib32/libpam.a
world|lib32|/usr/lib32/libpanel.a
world|lib32|/usr/lib32/libpanel_p.a
world|lib32|/usr/lib32/libpanelw.a
world|lib32|/usr/lib32/libpanelw_p.a
world|lib32|/usr/lib32/libpcap.a
world|lib32|/usr/lib32/libpcap_p.a
world|lib32|/usr/lib32/libpmc.a
world|lib32|/usr/lib32/libpmc_p.a
world|lib32|/usr/lib32/libproc.a
world|lib32|/usr/lib32/libproc_p.a
world|lib32|/usr/lib32/libradius.a
world|lib32|/usr/lib32/libradius_p.a
world|lib32|/usr/lib32/libreadline.a
world|lib32|/usr/lib32/libreadline_p.a
world|lib32|/usr/lib32/libroken.a
world|lib32|/usr/lib32/libroken_p.a
world|lib32|/usr/lib32/librpcsvc.a
world|lib32|/usr/lib32/librpcsvc_p.a
world|lib32|/usr/lib32/librt.a
world|lib32|/usr/lib32/librt_p.a
world|lib32|/usr/lib32/libsbuf.a
world|lib32|/usr/lib32/libsbuf_p.a
world|lib32|/usr/lib32/libsdp.a
world|lib32|/usr/lib32/libsdp_p.a
world|lib32|/usr/lib32/libsmb.a
world|lib32|/usr/lib32/libsmb_p.a
world|lib32|/usr/lib32/libssh.a
world|lib32|/usr/lib32/libssh_p.a
world|lib32|/usr/lib32/libssl.a
world|lib32|/usr/lib32/libssl_p.a
world|lib32|/usr/lib32/libssp.a
world|lib32|/usr/lib32/libssp_nonshared.a
world|lib32|/usr/lib32/libstand.a
world|lib32|/usr/lib32/libstdc++.a
world|lib32|/usr/lib32/libstdc++_p.a
world|lib32|/usr/lib32/libsupc++.a
world|lib32|/usr/lib32/libsupc++_p.a
world|lib32|/usr/lib32/libtacplus.a
world|lib32|/usr/lib32/libtacplus_p.a
world|lib32|/usr/lib32/libthr.a
world|lib32|/usr/lib32/libthr_p.a
world|lib32|/usr/lib32/libthread_db.a
world|lib32|/usr/lib32/libthread_db_p.a
world|lib32|/usr/lib32/libufs.a
world|lib32|/usr/lib32/libufs_p.a
world|lib32|/usr/lib32/libugidfw.a
world|lib32|/usr/lib32/libugidfw_p.a
world|lib32|/usr/lib32/libumem.a
world|lib32|/usr/lib32/libumem_p.a
world|lib32|/usr/lib32/libusbhid.a
world|lib32|/usr/lib32/libusbhid_p.a
world|lib32|/usr/lib32/libutil.a
world|lib32|/usr/lib32/libutil_p.a
world|lib32|/usr/lib32/libuutil.a
world|lib32|/usr/lib32/libuutil_p.a
world|lib32|/usr/lib32/libvgl.a
world|lib32|/usr/lib32/libvgl_p.a
world|lib32|/usr/lib32/libwrap.a
world|lib32|/usr/lib32/libwrap_p.a
world|lib32|/usr/lib32/liby.a
world|lib32|/usr/lib32/liby_p.a
world|lib32|/usr/lib32/libypclnt.a
world|lib32|/usr/lib32/libypclnt_p.a
world|lib32|/usr/lib32/libz.a
world|lib32|/usr/lib32/libz_p.a
world|lib32|/usr/lib32/libzfs.a
world|lib32|/usr/lib32/libzfs_p.a
world|lib32|/usr/lib32/libzpool.a
world|proflibs|/usr/lib/libalias_cuseeme_p.a
world|proflibs|/usr/lib/libalias_dummy_p.a
world|proflibs|/usr/lib/libalias_ftp_p.a
world|proflibs|/usr/lib/libalias_irc_p.a
world|proflibs|/usr/lib/libalias_nbt_p.a
world|proflibs|/usr/lib/libalias_p.a
world|proflibs|/usr/lib/libalias_pptp_p.a
world|proflibs|/usr/lib/libalias_skinny_p.a
world|proflibs|/usr/lib/libalias_smedia_p.a
world|proflibs|/usr/lib/libarchive_p.a
world|proflibs|/usr/lib/libasn1_p.a
world|proflibs|/usr/lib/libavl_p.a
world|proflibs|/usr/lib/libbegemot_p.a
world|proflibs|/usr/lib/libbluetooth_p.a
world|proflibs|/usr/lib/libbsdxml_p.a
world|proflibs|/usr/lib/libbsm_p.a
world|proflibs|/usr/lib/libbsnmp_p.a
world|proflibs|/usr/lib/libbz2_p.a
world|proflibs|/usr/lib/libc_p.a
world|proflibs|/usr/lib/libcalendar_p.a
world|proflibs|/usr/lib/libcam_p.a
world|proflibs|/usr/lib/libcom_err_p.a
world|proflibs|/usr/lib/libcompat_p.a
world|proflibs|/usr/lib/libcrypt_p.a
world|proflibs|/usr/lib/libcrypto_p.a
world|proflibs|/usr/lib/libctf_p.a
world|proflibs|/usr/lib/libdevinfo_p.a
world|proflibs|/usr/lib/libdevstat_p.a
world|proflibs|/usr/lib/libdialog_p.a
world|proflibs|/usr/lib/libdtrace_p.a
world|proflibs|/usr/lib/libdwarf_p.a
world|proflibs|/usr/lib/libedit_p.a
world|proflibs|/usr/lib/libelf_p.a
world|proflibs|/usr/lib/libfetch_p.a
world|proflibs|/usr/lib/libfl_p.a
world|proflibs|/usr/lib/libform_p.a
world|proflibs|/usr/lib/libformw_p.a
world|proflibs|/usr/lib/libftpio_p.a
world|proflibs|/usr/lib/libgcc_eh_p.a
world|proflibs|/usr/lib/libgcc_p.a
world|proflibs|/usr/lib/libgeom_p.a
world|proflibs|/usr/lib/libgnuregex_p.a
world|proflibs|/usr/lib/libgomp_p.a
world|proflibs|/usr/lib/libgpib_p.a
world|proflibs|/usr/lib/libgssapi_krb5_p.a
world|proflibs|/usr/lib/libgssapi_p.a
world|proflibs|/usr/lib/libhdb_p.a
world|proflibs|/usr/lib/libhistory_p.a
world|proflibs|/usr/lib/libipsec_p.a
world|proflibs|/usr/lib/libipx_p.a
world|proflibs|/usr/lib/libkadm5clnt_p.a
world|proflibs|/usr/lib/libkadm5srv_p.a
world|proflibs|/usr/lib/libkafs5_p.a
world|proflibs|/usr/lib/libkiconv_p.a
world|proflibs|/usr/lib/libkrb5_p.a
world|proflibs|/usr/lib/libkvm_p.a
world|proflibs|/usr/lib/libl_p.a
world|proflibs|/usr/lib/libln_p.a
world|proflibs|/usr/lib/liblwres_p.a
world|proflibs|/usr/lib/libm_p.a
world|proflibs|/usr/lib/libmagic_p.a
world|proflibs|/usr/lib/libmd_p.a
world|proflibs|/usr/lib/libmemstat_p.a
world|proflibs|/usr/lib/libmenu_p.a
world|proflibs|/usr/lib/libmenuw_p.a
world|proflibs|/usr/lib/libmilter_p.a
world|proflibs|/usr/lib/libmp_p.a
world|proflibs|/usr/lib/libncp_p.a
world|proflibs|/usr/lib/libncurses_p.a
world|proflibs|/usr/lib/libncursesw_p.a
world|proflibs|/usr/lib/libnetgraph_p.a
world|proflibs|/usr/lib/libngatm_p.a
world|proflibs|/usr/lib/libnvpair_p.a
world|proflibs|/usr/lib/libobjc_p.a
world|proflibs|/usr/lib/libopie_p.a
world|proflibs|/usr/lib/libpanel_p.a
world|proflibs|/usr/lib/libpanelw_p.a
world|proflibs|/usr/lib/libpcap_p.a
world|proflibs|/usr/lib/libpmc_p.a
world|proflibs|/usr/lib/libproc_p.a
world|proflibs|/usr/lib/libradius_p.a
world|proflibs|/usr/lib/libreadline_p.a
world|proflibs|/usr/lib/libroken_p.a
world|proflibs|/usr/lib/librpcsvc_p.a
world|proflibs|/usr/lib/librt_p.a
world|proflibs|/usr/lib/libsbuf_p.a
world|proflibs|/usr/lib/libsdp_p.a
world|proflibs|/usr/lib/libsmb_p.a
world|proflibs|/usr/lib/libssh_p.a
world|proflibs|/usr/lib/libssl_p.a
world|proflibs|/usr/lib/libstdc++_p.a
world|proflibs|/usr/lib/libsupc++_p.a
world|proflibs|/usr/lib/libtacplus_p.a
world|proflibs|/usr/lib/libthr_p.a
world|proflibs|/usr/lib/libthread_db_p.a
world|proflibs|/usr/lib/libufs_p.a
world|proflibs|/usr/lib/libugidfw_p.a
world|proflibs|/usr/lib/libumem_p.a
world|proflibs|/usr/lib/libusbhid_p.a
world|proflibs|/usr/lib/libutil_p.a
world|proflibs|/usr/lib/libuutil_p.a
world|proflibs|/usr/lib/libwrap_p.a
world|proflibs|/usr/lib/liby_p.a
world|proflibs|/usr/lib/libypclnt_p.a
world|proflibs|/usr/lib/libz_p.a
world|proflibs|/usr/lib/libzfs_p.a
Values of build stamps, excluding library archive headers:
v1.2 (Aug 25 2009 00:40:36)
v1.2 (Aug 25 2009 00:38:22)
@(#)FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
7.2-RELEASE
Mon Aug 24 23:55:25 UTC 2009
Mon Aug 24 23:55:25 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
Mon Aug 24 23:46:47 UTC 2009
ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
* Copyright (c) 1992-2009 The FreeBSD Project.
Mon Aug 24 23:46:47 UTC 2009
Mon Aug 24 23:55:40 UTC 2009
Aug 25 2009
ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)
ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
Tue Aug 25 00:21:21 UTC 2009
Tue Aug 25 00:21:21 UTC 2009
Tue Aug 25 00:21:21 UTC 2009
Mon Aug 24 23:46:47 UTC 2009
FreeBSD/amd64 7.2-RELEASE initialization build complete. Please
review the list of build stamps printed above to confirm that
they look sensible, then run
# sh -e approve.sh amd64 7.2-RELEASE
to sign the release.

View file

@ -1,20 +0,0 @@
#
# $FreeBSD$
# basiert auf: r46873
#
# Article: Leap Seconds
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="leapseconds" xml:lang="de_DE">
<info>
<title>Unterstützung für Schaltsekunden in FreeBSD</title>
<pubdate>$FreeBSD$</pubdate>
</info>
<sect1 xml:id="leapseconds-definition">
<title>Einleitung</title>
<para>Eine <emphasis>Schaltsekunde</emphasis> ist eine eigens dazu eingerichtete Korrektur, um die atomaren Zeitskalen mit der Erdrotation zu synchronisieren. Dieser Artikel beschreibt wie FreeBSD mit Schaltsekunden umgeht.</para>
<para>Zum Zeitpunkt der Erstellung dieses Dokuments wird die nächste Schaltsekunde am 30. Juni 2015 um 23:59:60 UTC auftreten. Diese Schaltsekunde wird während eines Arbeitstages für Nord- und Südamerika, sowie die Asien/Pazifik-Region stattfinden.</para>
<para>Schaltsekunden werden durch den <link xlink:href="http://datacenter.iers.org/"><acronym>IERS</acronym></link> im <link xlink:href="http://datacenter.iers.org/web/guest/bulletins/-/somos/5Rgv/product/16">Bulletin C</link> angekündigt.</para>
<para>Das normale Verhalten für Schaltsekunden wird in <link xlink:href="https://tools.ietf.org/html/rfc7164#section-3">RFC 7164</link> beschrieben. Lesen Sie auch <citerefentry><refentrytitle>time2posix</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
</sect1>
<sect1 xml:id="leapseconds-posix">
<title>Handhabung von gewöhnlichen Schaltsekunden in FreeBD</title>
<para>Die einfachste Art, mit Schaltsekunden umzugehen, ist, die <acronym>POSIX</acronym> Zeitregeln, welche FreeBSD standardmässig verwendet, sowie <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/network-ntp.html"><acronym>NTP</acronym></link> zu benutzen. Wenn <citerefentry><refentrytitle>ntpd</refentrytitle><manvolnum>8</manvolnum></citerefentry> läuft und die Uhrzeit mit einem vorgeschalteten <acronym>NTP</acronym>-Server, welcher Schaltsekunden richtig handhabt, abgeglichen wird, passt das System die Uhrzeit automatisch so an, dass die letzte Sekunde des Tages wiederholt wird. Es sind keine weiteren Anpassungen nötig.</para>
<para>Sollte der vorgeschaltete <acronym>NTP</acronym>-Server Schaltsekunden nicht korrekt handhaben, wird <citerefentry><refentrytitle>ntpd</refentrytitle><manvolnum>8</manvolnum></citerefentry> die Uhrzeit um eine Sekunde anpassen nachdem der fehlerhafte Server dies bemerkt hat und seine Uhr selbst neu einstellt.</para>
<para>Wenn <acronym>NTP</acronym> nicht verwendet wird muss die Systemuhr manuell eingestellt werden, nachdem die Schaltsekunde vorbei ist.</para>
</sect1>
<sect1 xml:id="leapseconds-cautions">
<title>Vorsichtshinweise</title>
<para>Schaltsekunden werden im gleichen Augenblick weltweit eingestellt: Mitternacht <acronym>UTC</acronym>. In Japan ist das in der Morgenmitte, im Pazifik am Mittag, in Nord-, Mittel- und Südamerika am späten Nachmittag und in Europa nachts.</para>
<para>Wir glauben und erwarten dass FreeBSD, sofern es mit einem korrekten und stabilen <acronym>NTP</acronym>-Dienst versorgt wird, wie erwartet funktionieren wird, genauso wie es das während der bisherigen Schaltsekunden auch getan hat.</para>
<para>Jedoch weisen wir darauf hin, dass praktisch keine Anwendung jemals den Kernel zu Schaltsekunden angefragt hat. Unsere Erfahrung ist, dass Schaltsekunden, so wie sie entwickelt wurden, einfach nur eine Wiederholung der Sekunde vor der Schaltsekunde sind und dies eine Überraschung für die meisten Anwendungsentwickler darstellt.</para>
<para>Andere Betriebssysteme und andere Computer behandeln die Schaltsekunde wie FreeBSD oder auch nicht und Systeme ohne einen korrekten und stabilen <acronym>NTP</acronym>-Dienst werden gar nichts über Schaltsekunden wissen.</para>
<para>Es ist kein ungewöhnlicher Zustand, wenn Computer wegen Schaltsekunden abstürzen und die Erfahrung hat gezeigt, dass eine grosse Menge von allen öffentlichen <acronym>NTP</acronym>-Servern die Schaltsekunde falsch behandeln oder ankündigen.</para>
<para>Bitte stellen Sie sicher, dass nichts schreckliches wegen der Schaltsekunde passieren kann.</para>
</sect1>
<sect1 xml:id="leapseconds-testing">
<title>Überprüfen</title>
<para>Es ist möglich, zu überprüfen, ob eine Schaltsekunde verwendet wird. Aufgrund der Art und Weise wie <acronym>NTP</acronym> arbeitet, funktioniert der Test möglicherweise bis zu 24 Stunden vor der Schaltsekunde. Manche Hauptreferenzuhrzeitquellen kündigen Schaltsekunden erst eine Stunde vor dem Ereignis an. Fragen Sie den <acronym>NTP</acronym>-Dienst ab:</para>
<screen><prompt>%</prompt> <userinput>ntpq -c 'rv 0 leap'</userinput></screen>
<para>Ausgaben, die <literal>leap_add_sec</literal> beinhalten zeigen die korrekte Unterstützung für Schaltsekunden an. Vor den 24 Stunden, welche vor der Schaltsekunde liegen oder wenn diese vorüber ist, wird <literal>leap_none</literal> angezeigt.</para>
</sect1>
<sect1 xml:id="leapseconds-conclusion">
<title>Fazit</title>
<para>In der Praxis sind Schaltsekunden kein Problem für FreeBSD. Wir hoffen, dass dieser Überblick dabei geholfen hat, zu klären, was zu erwarten ist und wie das Ereignis der Schaltsekunde einfacher gehandhabt werden kann.</para>
</sect1>
</article>

View file

@ -1,267 +0,0 @@
# $FreeBSD$
msgid ""
msgstr ""
"Project-Id-Version: The FreeBSD German Documentation Project\n"
"POT-Creation-Date: 2016-02-23 07:15-0700\n"
"PO-Revision-Date: 2015-08-25 17:42+0200\n"
"Last-Translator: Benedict Reuschling <bcr@FreeBSD.org>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.4\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
msgid "translator-credits"
msgstr "bcr@freebsd.org, 2015"
#. (itstool) path: info/title
#: article.translate.xml:6
msgid "FreeBSD Support for Leap Seconds"
msgstr "Unterstützung für Schaltsekunden in FreeBSD"
#. (itstool) path: info/pubdate
#: article.translate.xml:8
msgid ""
"$FreeBSD: head/en_US.ISO8859-1/articles/leap-seconds/article.xml 46895 "
"2015-06-29 16:41:41Z wblock $"
msgstr ""
"$FreeBSD: head/en_US.ISO8859-1/articles/leap-seconds/article.xml 46895 "
"2015-06-29 16:41:41Z wblock $"
#. (itstool) path: sect1/title
#: article.translate.xml:12
msgid "Introduction"
msgstr "Einleitung"
#. (itstool) path: sect1/para
#: article.translate.xml:14
msgid ""
"A <emphasis>leap second</emphasis> is an ad-hoc one-second correction to "
"synchronize atomic timescales with Earth rotation. This article describes "
"how FreeBSD interacts with leap seconds."
msgstr ""
"Eine <emphasis>Schaltsekunde</emphasis> ist eine eigens dazu eingerichtete "
"Korrektur, um die atomaren Zeitskalen mit der Erdrotation zu "
"synchronisieren. Dieser Artikel beschreibt wie FreeBSD mit Schaltsekunden "
"umgeht."
#. (itstool) path: sect1/para
#: article.translate.xml:19
msgid ""
"As of this writing, the next leap second will occur at 2015-Jun-30 23:59:60 "
"UTC. This leap second will occur during a business day for North and South "
"America and the Asia/Pacific region."
msgstr ""
"Zum Zeitpunkt der Erstellung dieses Dokuments wird die nächste Schaltsekunde "
"am 30. Juni 2015 um 23:59:60 UTC auftreten. Diese Schaltsekunde wird während "
"eines Arbeitstages für Nord- und Südamerika, sowie die Asien/Pazifik-Region "
"stattfinden."
#. (itstool) path: sect1/para
#: article.translate.xml:24
msgid ""
"Leap seconds are announced by <link xlink:href=\"http://datacenter.iers.org/"
"\"><acronym>IERS</acronym></link> on <link xlink:href=\"http://datacenter."
"iers.org/web/guest/bulletins/-/somos/5Rgv/product/16\">Bulletin C</link>."
msgstr ""
"Schaltsekunden werden durch den <link xlink:href=\"http://datacenter.iers."
"org/\"><acronym>IERS</acronym></link> im <link xlink:href=\"http://"
"datacenter.iers.org/web/guest/bulletins/-/somos/5Rgv/product/16\">Bulletin "
"C</link> angekündigt."
#. (itstool) path: sect1/para
#: article.translate.xml:28
msgid ""
"Standard leap second behavior is described in <link xlink:href=\"https://"
"tools.ietf.org/html/rfc7164#section-3\">RFC 7164</link>. Also see "
"<citerefentry><refentrytitle>time2posix</refentrytitle><manvolnum>3</"
"manvolnum></citerefentry>."
msgstr ""
"Das normale Verhalten für Schaltsekunden wird in <link xlink:href=\"https://"
"tools.ietf.org/html/rfc7164#section-3\">RFC 7164</link> beschrieben. Lesen "
"Sie auch <citerefentry><refentrytitle>time2posix</"
"refentrytitle><manvolnum>3</manvolnum></citerefentry>."
#. (itstool) path: sect1/title
#: article.translate.xml:33
msgid "Default Leap Second Handling on FreeBSD"
msgstr "Handhabung von gewöhnlichen Schaltsekunden in FreeBD"
#. (itstool) path: sect1/para
#: article.translate.xml:35
msgid ""
"The easiest way to handle leap seconds is with the <acronym>POSIX</acronym> "
"time rules FreeBSD uses by default, combined with <link xlink:href="
"\"@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/network-ntp.html"
"\"><acronym>NTP</acronym></link>. When <citerefentry><refentrytitle>ntpd</"
"refentrytitle><manvolnum>8</manvolnum></citerefentry> is running and the "
"time is synchronized with upstream <acronym>NTP</acronym> servers that "
"handle leap seconds correctly, the leap second will cause the system time to "
"automatically repeat the last second of the day. No other adjustments are "
"necessary."
msgstr ""
"Die einfachste Art, mit Schaltsekunden umzugehen, ist, die <acronym>POSIX</"
"acronym> Zeitregeln, welche FreeBSD standardmässig verwendet, sowie <link "
"xlink:href=\"@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/network-"
"ntp.html\"><acronym>NTP</acronym></link> zu benutzen. Wenn "
"<citerefentry><refentrytitle>ntpd</refentrytitle><manvolnum>8</manvolnum></"
"citerefentry> läuft und die Uhrzeit mit einem vorgeschalteten <acronym>NTP</"
"acronym>-Server, welcher Schaltsekunden richtig handhabt, abgeglichen wird, "
"passt das System die Uhrzeit automatisch so an, dass die letzte Sekunde des "
"Tages wiederholt wird. Es sind keine weiteren Anpassungen nötig."
#. (itstool) path: sect1/para
#: article.translate.xml:44
msgid ""
"If the upstream <acronym>NTP</acronym> servers do not handle leap seconds "
"correctly, <citerefentry><refentrytitle>ntpd</refentrytitle><manvolnum>8</"
"manvolnum></citerefentry> will step the time by one second after the errant "
"upstream server has noticed and stepped itself."
msgstr ""
"Sollte der vorgeschaltete <acronym>NTP</acronym>-Server Schaltsekunden nicht "
"korrekt handhaben, wird <citerefentry><refentrytitle>ntpd</"
"refentrytitle><manvolnum>8</manvolnum></citerefentry> die Uhrzeit um eine "
"Sekunde anpassen nachdem der fehlerhafte Server dies bemerkt hat und seine "
"Uhr selbst neu einstellt."
#. (itstool) path: sect1/para
#: article.translate.xml:49
msgid ""
"If <acronym>NTP</acronym> is not being used, manual adjustment of the system "
"clock will be required after the leap second has passed."
msgstr ""
"Wenn <acronym>NTP</acronym> nicht verwendet wird muss die Systemuhr manuell "
"eingestellt werden, nachdem die Schaltsekunde vorbei ist."
#. (itstool) path: sect1/title
#: article.translate.xml:55
msgid "Cautions"
msgstr "Vorsichtshinweise"
#. (itstool) path: sect1/para
#: article.translate.xml:57
msgid ""
"Leap seconds are inserted at the same instant all over the world: "
"<acronym>UTC</acronym> midnight. In Japan that is mid-morning, in the "
"Pacific mid-day, in the Americas late afternoon, and in Europe at night."
msgstr ""
"Schaltsekunden werden im gleichen Augenblick weltweit eingestellt: "
"Mitternacht <acronym>UTC</acronym>. In Japan ist das in der Morgenmitte, im "
"Pazifik am Mittag, in Nord-, Mittel- und Südamerika am späten Nachmittag und "
"in Europa nachts."
#. (itstool) path: sect1/para
#: article.translate.xml:62
msgid ""
"We believe and expect that FreeBSD, if provided correct and stable "
"<acronym>NTP</acronym> service, will work as designed during this leap "
"second, as it did during the previous ones."
msgstr ""
"Wir glauben und erwarten dass FreeBSD, sofern es mit einem korrekten und "
"stabilen <acronym>NTP</acronym>-Dienst versorgt wird, wie erwartet "
"funktionieren wird, genauso wie es das während der bisherigen Schaltsekunden "
"auch getan hat."
#. (itstool) path: sect1/para
#: article.translate.xml:67
msgid ""
"However, we caution that practically no applications have ever asked the "
"kernel about leap seconds. Our experience is that, as designed, leap seconds "
"are essentially a replay of the second before the leap second, and this is a "
"surprise to most application programmers."
msgstr ""
"Jedoch weisen wir darauf hin, dass praktisch keine Anwendung jemals den "
"Kernel zu Schaltsekunden angefragt hat. Unsere Erfahrung ist, dass "
"Schaltsekunden, so wie sie entwickelt wurden, einfach nur eine Wiederholung "
"der Sekunde vor der Schaltsekunde sind und dies eine Überraschung für die "
"meisten Anwendungsentwickler darstellt."
#. (itstool) path: sect1/para
#: article.translate.xml:73
msgid ""
"Other operating systems and other computers may or may not handle the leap-"
"second the same way as FreeBSD, and systems without correct and stable "
"<acronym>NTP</acronym> service will not know anything about leap seconds at "
"all."
msgstr ""
"Andere Betriebssysteme und andere Computer behandeln die Schaltsekunde wie "
"FreeBSD oder auch nicht und Systeme ohne einen korrekten und stabilen "
"<acronym>NTP</acronym>-Dienst werden gar nichts über Schaltsekunden wissen."
#. (itstool) path: sect1/para
#: article.translate.xml:78
msgid ""
"It is not unheard of for computers to crash because of leap seconds, and "
"experience has shown that a large fraction of all public <acronym>NTP</"
"acronym> servers might handle and announce the leap second incorrectly."
msgstr ""
"Es ist kein ungewöhnlicher Zustand, wenn Computer wegen Schaltsekunden "
"abstürzen und die Erfahrung hat gezeigt, dass eine grosse Menge von allen "
"öffentlichen <acronym>NTP</acronym>-Servern die Schaltsekunde falsch "
"behandeln oder ankündigen."
#. (itstool) path: sect1/para
#: article.translate.xml:83
msgid ""
"Please try to make sure nothing horrible happens because of the leap second."
msgstr ""
"Bitte stellen Sie sicher, dass nichts schreckliches wegen der Schaltsekunde "
"passieren kann."
#. (itstool) path: sect1/title
#: article.translate.xml:88
msgid "Testing"
msgstr "Überprüfen"
#. (itstool) path: sect1/para
#: article.translate.xml:90
msgid ""
"It is possible to test whether a leap second will be used. Due to the nature "
"of <acronym>NTP</acronym>, the test might work up to 24 hours before the "
"leap second. Some major reference clock sources only announce leap seconds "
"one hour ahead of the event. Query the <acronym>NTP</acronym> daemon:"
msgstr ""
"Es ist möglich, zu überprüfen, ob eine Schaltsekunde verwendet wird. "
"Aufgrund der Art und Weise wie <acronym>NTP</acronym> arbeitet, funktioniert "
"der Test möglicherweise bis zu 24 Stunden vor der Schaltsekunde. Manche "
"Hauptreferenzuhrzeitquellen kündigen Schaltsekunden erst eine Stunde vor dem "
"Ereignis an. Fragen Sie den <acronym>NTP</acronym>-Dienst ab:"
#. (itstool) path: sect1/screen
#: article.translate.xml:96
#, no-wrap
msgid "<prompt>%</prompt> <userinput>ntpq -c 'rv 0 leap'</userinput>"
msgstr "<prompt>%</prompt> <userinput>ntpq -c 'rv 0 leap'</userinput>"
#. (itstool) path: sect1/para
#: article.translate.xml:98
msgid ""
"Output that includes <literal>leap_add_sec</literal> indicates proper "
"support of the leap second. Before the 24 hours leading up to the leap "
"second, or after the leap second has passed, <literal>leap_none</literal> "
"will be shown."
msgstr ""
"Ausgaben, die <literal>leap_add_sec</literal> beinhalten zeigen die korrekte "
"Unterstützung für Schaltsekunden an. Vor den 24 Stunden, welche vor der "
"Schaltsekunde liegen oder wenn diese vorüber ist, wird <literal>leap_none</"
"literal> angezeigt."
#. (itstool) path: sect1/title
#: article.translate.xml:105
msgid "Conclusion"
msgstr "Fazit"
#. (itstool) path: sect1/para
#: article.translate.xml:107
msgid ""
"In practice, leap seconds are usually not a problem on FreeBSD. We hope that "
"this overview helps clarify what to expect and how to make the leap second "
"event proceed more smoothly."
msgstr ""
"In der Praxis sind Schaltsekunden kein Problem für FreeBSD. Wir hoffen, dass "
"dieser Überblick dabei geholfen hat, zu klären, was zu erwarten ist und wie "
"das Ereignis der Schaltsekunde einfacher gehandhabt werden kann."

View file

@ -1,20 +0,0 @@
#
# $FreeBSD$
# Basiert auf: r39631
#
# Article: FreeBSD Anleitung für Benutzer von Linux
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,325 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de_DE">
<info>
<title>FreeBSD Anleitung für <trademark class="registered">Linux</trademark>-Benutzer</title>
<authorgroup>
<author><personname><firstname>John</firstname><surname>Ferrell</surname></personname></author>
</authorgroup>
<copyright><year>2008</year> <holder>The FreeBSD Documentation Project</holder></copyright>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<legalnotice xml:id="trademarks" role="trademarks">
<para>FreeBSD ist ein eingetragenes Warenzeichen der FreeBSD Foundation.</para>
<para>Linux ist ein eingetragenes Warenzeichen von Linus Torvalds.</para>
<para>Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium, Pentium, und Xeon sind eingetragene Warenzeichen der Intel Corporation oder ihrer Gesellschaften in den Vereinigten Staaten und in anderen Ländern.</para>
<para>Red Hat, RPM, sind Warenzeichen oder eingetragene Warenzeichen von Red Hat, Inc. in den Vereinigten Staaten und in anderen Ländern.</para>
<para>UNIX ist ein eingetragenes Warenzeichen der The Open Group in den Vereinigten Staaten und in anderen Ländern.</para>
<para>Viele Produktbezeichnungen von Herstellern und Verkäufern sind Warenzeichen. Soweit dem FreeBSD Project das Warenzeichen bekannt ist, werden die in diesem Dokument vorkommenden Bezeichnungen mit dem Symbol <quote></quote> oder dem Symbol <quote>®</quote> gekennzeichnet.</para>
</legalnotice>
<abstract>
<para>Dieses Dokument soll <trademark class="registered">Linux</trademark>-Benutzer mit den Grundlagen von FreeBSD vertraut machen.</para>
</abstract>
</info>
<sect1 xml:id="intro">
<title>Übersicht </title>
<para>Dieses Dokument beschreibt einige der technischen Unterschiede zwischen FreeBSD und <trademark class="registered">Linux</trademark>, damit sich <trademark class="registered">Linux</trademark>-Anwender schnell mit den Grundlagen von FreeBSD vertraut machen können.</para>
<para>Dieses Dokument geht davon aus, dass FreeBSD bereits installiert ist. Lesen Sie das Kapitel <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/bsdinstall.html">Installation von FreeBSD</link> des FreeBSD-Handbuch für die Hilfe bei der Installation.</para>
</sect1>
<sect1 xml:id="shells">
<title>Standard-Shell</title>
<para><trademark class="registered">Linux</trademark>-Benutzer sind oft überrascht, dass <application>Bash</application> nicht die Standard-Shell in FreeBSD ist. Genau genommen ist <application>Bash</application> nicht einmal in der Standardinstallation enthalten. FreeBSD benutzt stattdessen <citerefentry><refentrytitle>tcsh</refentrytitle><manvolnum>1</manvolnum></citerefentry> als Standard-Shell für root, sowie die <application>Bourne shell</application>-kompatible <citerefentry><refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum></citerefentry> als Standardshell für Benutzer. <citerefentry><refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum></citerefentry> ist der <application>Bash</application> sehr ähnlich, besitzt jedoch einen kleineren Funktionsumfang. In der Regel werden Skripte für die <citerefentry><refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum></citerefentry> auch mit der <application>Bash</application> laufen. Der umgekehrte Fall trifft jedoch meistens nicht zu.</para>
<para><application>Bash</application> und weitere Shells können unter FreeBSD mit <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/ports.html">Paketen und der Ports-Sammlung</link> installiert werden.</para>
<para>Nachdem Sie eine andere Shell installiert haben, benutzen Sie <citerefentry><refentrytitle>chsh</refentrytitle><manvolnum>1</manvolnum></citerefentry> um die Standard-Shell für einen Benutzer zu ändern. Es wird empfohlen, die Standard-Shell des Benutzers <systemitem class="username">root</systemitem> unverändert bleibt, da Shells, welche nicht im Basissystem enthalten sind, in <filename>/usr/local/bin</filename> installiert werden. Im Falle eines Problems ist vielleicht das Dateisystem, auf dem sich
<filename>/usr/local/bin</filename> befindet, nicht eingehängt ist. In einem solchen Fall hätte der Benutzer <systemitem class="username">root</systemitem> keinen Zugriff auf die Standard-Shell, was ihn daran hindern würde, sich am System anzumelden und das Problem zu beheben.</para>
</sect1>
<sect1 xml:id="software">
<title>Pakete und Ports: Installation von Software in FreeBSD</title>
<para>FreeBSD bietet zwei Methoden zur Installation von Anwendungen: Binärpakete und kompilierte Ports. Jede Methode hat ihre eigenen Vorteile:</para>
<itemizedlist>
<title>Binärpakete</title>
<listitem>
<simpara>Schnellere Installation, insbesondere bei größeren Anwendungen.</simpara>
</listitem>
<listitem>
<simpara>Es wird kein Verständnis darüber benötigt, wie Software kompiliert wird.</simpara>
</listitem>
<listitem>
<simpara>Es muss kein Compiler installiert werden.</simpara>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Ports</title>
<listitem>
<simpara>Bieten die Möglichkeit, Installationsoptionen anzupassen.</simpara>
</listitem>
<listitem>
<simpara>Eigene Korrekturen können angewendet werden.</simpara>
</listitem>
</itemizedlist>
<para>Wenn für die Installation der Anwendung keine Änderungen nötig sind, kann auch das Paket installiert werden. Kompilieren Sie den Port, wenn die Anwendung eine Änderung an den voreingestellten Optionen erfordert. In diesem Fall kann ein angepasstes Paket mit <command>make</command> <buildtarget>Paket</buildtarget> erstellt werden.</para>
<para>Eine vollständige Liste aller Ports und Pakete finden Sie <link xlink:href="http://www.freebsd.org/ports/master-index.html">hier</link>.</para>
<sect2 xml:id="packages">
<title>Pakete</title>
<para>Pakete sind vorkompilierte Anwendungen, sozusagen FreeBSD-Äquivalente von <filename>.deb</filename>-Dateien unter Debian/Ubuntu basierten Systemen und <filename>.rpm</filename>-Dateien von Red Hat/Fedora basierten Systemen. Pakete werden mit <command>pkg</command> installiert. Das folgende Kommando installiert beispielsweise <application>Apache 2.4</application>:</para>
<screen><prompt>#</prompt> <userinput>pkg install <replaceable>apache24</replaceable></userinput></screen>
<para>Weitere Informationen zu Paketen finden Sie im Abschnitt 4.4 des FreeBSD Handbuchs: <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/pkgng-intro.html">Benutzen von pkg zur Verwaltung von Binärpaketen</link>.</para>
</sect2>
<sect2 xml:id="ports">
<title>Ports</title>
<para>Die FreeBSD Ports-Sammlung ist ein Gerüst aus <filename>Makefiles</filename> und Korrekturen, um Anwendungen aus dem Quellcode unter FreeBSD zu installieren. Wenn Sie einen Port installieren, wird das System den Quellcode herunterladen, die benötigten Korrekturen anwenden, den Quellcode kompilieren und die Anwendung und die erforderlichen Abhängigkeiten installieren.</para>
<para>Die Ports-Sammlung, oder einfach Ports genannt, kann mit <citerefentry><refentrytitle>portsnap</refentrytitle><manvolnum>8</manvolnum></citerefentry> nach <filename>/usr/ports</filename> installiert werden.</para>
<para>Um einen Port zu kompilieren, wechseln Sie in das Verzeichnis des Ports und starten Sie den Bau-Prozess. Das folgende Beispiel installiert <application>Apache 2.4</application> aus der Ports-Sammlung:</para>
<screen><prompt>#</prompt> <userinput>cd /usr/ports/www/apache24</userinput>
<prompt>#</prompt> <userinput>make install clean</userinput></screen>
<para>Ein Vorteil von Ports bei der Installation von Software ist die Möglichkeit, die Installationsoptionen anzupassen. In diesem Beispiel wird spezifiziert, dass zusätzlich das Modul <application>mod_ldap</application> installiert werden soll:</para>
<screen><prompt>#</prompt> <userinput>cd /usr/ports/www/apache24</userinput>
<prompt>#</prompt> <userinput>make WITH_LDAP="YES" install clean</userinput></screen>
<para>Lesen Sie <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/ports-using.html">Benutzen der Ports-Sammlung</link> für weitere Informationen.</para>
</sect2>
</sect1>
<sect1 xml:id="startup">
<title>Systemstart</title>
<para>Viele <trademark class="registered">Linux</trademark>-Distributionen verwenden das SysV init System, während FreeBSD das traditionelle BSD-<citerefentry><refentrytitle>init</refentrytitle><manvolnum>8</manvolnum></citerefentry> benutzt. Unter BSD-<citerefentry><refentrytitle>init</refentrytitle><manvolnum>8</manvolnum></citerefentry> gibt es keine Runlevel und <filename>/etc/inittab</filename> existiert auch nicht. Stattdessen wird der Systemstart von <citerefentry><refentrytitle>rc</refentrytitle><manvolnum>8</manvolnum></citerefentry> Skripten gesteuert. Beim Systemstart liest <filename>/etc/rc</filename> <filename>/etc/rc.conf</filename> und <filename>/etc/rc.conf.local</filename> um herauszufinden welche Dienste gestartet werden müssen. Die jeweiligen Dienste werden dann gestartet, indem die entsprechenden Skripten in <filename>/etc/rc.d/</filename> und <filename>/usr/local/etc/rc.d/</filename> ausgeführt werden. Diese Skripte sind ähnlich wie die Skripte in <filename>/etc/init.d/</filename> unter <trademark class="registered">Linux</trademark>-Systemen.</para>
<para>Die Skripte in <filename>/etc/rc.d/</filename> sind für Anwendungen aus dem <quote>Basissystem</quote>, wie beispielsweise <citerefentry><refentrytitle>cron</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>sshd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, und <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Die Skripte in <filename>/usr/local/etc/rc.d/</filename> gehören zu den vom Benutzer installierten Anwendungen, wie zum Beispiel <application>Apache</application> und <application>Squid</application>.</para>
<para>Da FreeBSD als komplettes Betriebssystem entwickelt wird, werden die vom Benutzer installierten Anwendungen nicht als Teil des <quote>Basissystems</quote> angesehen. Diese Anwendungen werden in der Regel als <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/ports-using.html">Pakete oder Ports</link> installiert. Um die Anwendungen vom Basissystem zu separieren, werden diese unterhalb von <filename>/usr/local/</filename> installiert. Die Binärdateien der installierten Anwendungen werden in <filename>/usr/local/bin/</filename> gespeichert, die Konfigurationsdateien in <filename>/usr/local/etc/</filename>, und so weiter.</para>
<para>Dienste werden über einen Eintrag in <filename>/etc/rc.conf</filename> aktiviert. Die Standardeinstellungen des Systems stehen in <filename>/etc/defaults/rc.conf</filename> und werden von den Einstellungen in <filename>/etc/rc.conf</filename> überschrieben. Lesen Sie <citerefentry><refentrytitle>rc.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> für weitere Informationen über die verfügbaren Einträge. Wenn Sie zusätzliche Anwendungen installieren, lesen Sie die Nachrichten um zu erfahren, wie Sie alle dazugehörigen Dienste aktivieren.</para>
<para>Die folgenden Einträge in <filename>/etc/rc.conf</filename> aktivieren <citerefentry><refentrytitle>sshd</refentrytitle><manvolnum>8</manvolnum></citerefentry> sowie <application>Apache 2.4</application>, wobei <application>Apache</application> mit <acronym>SSL</acronym>-Unterstützung gestartet werden soll.</para>
<programlisting># enable SSHD
sshd_enable="YES"
# enable Apache with SSL
apache24_enable="YES"
apache24_flags="-DSSL"</programlisting>
<para>Sobald ein Dienst in <filename>/etc/rc.conf</filename> aktiviert ist, kann er ohne einen Neustart des Systems gestartet werden:</para>
<screen><prompt>#</prompt> <userinput>service <replaceable>sshd</replaceable> start</userinput>
<prompt>#</prompt> <userinput>service <replaceable>apache24</replaceable> start</userinput></screen>
<para>Wenn ein Dienst nicht aktiviert wurde, kann er auf der Kommandozeile mit <option>onestart</option> gestartet werden:</para>
<screen><prompt>#</prompt> <userinput>service <replaceable>sshd</replaceable> onestart</userinput></screen>
</sect1>
<sect1 xml:id="network">
<title>Netzwerkkonfiguration</title>
<para>Anstelle einer allgemeinen <emphasis>ethX</emphasis>-Kennzeichnung, die von <trademark class="registered">Linux</trademark> benutzt wird, um Netzwerkschnittstellen zu identifizieren, verwendet FreeBSD den Treibernamen gefolgt von einer Nummer. Die folgende Ausgabe von <citerefentry><refentrytitle>ifconfig</refentrytitle><manvolnum>8</manvolnum></citerefentry> zeigt zwei <trademark class="registered">Intel</trademark>Pro 1000 Netzwerkschnittstellen (<filename>em0</filename> und <filename>em1</filename>):</para>
<screen><prompt>%</prompt> <userinput>ifconfig</userinput>
em0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
options=b&lt;RXCSUM,TXCSUM,VLAN_MTU&gt;
inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
ether 00:50:56:a7:70:b2
media: Ethernet autoselect (1000baseTX &lt;full-duplex&gt;)
status: active
em1: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
options=b&lt;RXCSUM,TXCSUM,VLAN_MTU&gt;
inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
ether 00:50:56:a7:03:2b
media: Ethernet autoselect (1000baseTX &lt;full-duplex&gt;)
status: active</screen>
<para>Mit <citerefentry><refentrytitle>ifconfig</refentrytitle><manvolnum>8</manvolnum></citerefentry> kann einer Schnittstelle eine <acronym>IP</acronym>-Adresse zugeordnet werden. Damit diese nach einem Neustart erhalten bleibt, muss die <acronym>IP</acronym>-Konfiguration in <filename>/etc/rc.conf</filename> eingetragen werden. Die folgenden Einträge in <filename>/etc/rc.conf</filename> konfigurieren den Rechnernamen, die <acronym>IP</acronym>-Adresse und das Standard-Gateway:</para>
<programlisting>hostname="server1.example.com"
ifconfig_em0="inet 10.10.10.100 netmask 255.255.255.0"
defaultrouter="10.10.10.1"</programlisting>
<para>Benutzen Sie die folgenden Einträge um die Schnittstelle über <acronym>DHCP</acronym> zu konfigurieren:</para>
<programlisting>hostname="server1.example.com"
ifconfig_em0="DHCP"</programlisting>
</sect1>
<sect1 xml:id="firewall">
<title>Firewall</title>
<para>FreeBSD verwendet nicht <trademark class="registered">Linux</trademark> <application>IPTABLES</application> als Firewall. Stattdessen hat der Benutzer unter FreeBSD die Wahl zwischen drei Firewalls, die auf Kernel-Ebene arbeiten:</para>
<itemizedlist>
<listitem>
<simpara><link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/firewalls-pf.html">PF</link></simpara>
</listitem>
<listitem>
<simpara><link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/firewalls-ipf.html">IPFILTER</link></simpara>
</listitem>
<listitem>
<simpara><link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/firewalls-ipfw.html">IPFW</link></simpara>
</listitem>
</itemizedlist>
<para><application>PF</application> wurde vom OpenBSD Projekt entwickelt und nach FreeBSD portiert. <application>PF</application> wurde als Ersatz für <application>IPFILTER</application> entwickelt und die Syntax ist der von <application>IPFILTER</application> sehr ähnlich. <application>PF</application> kann zusammen mit <citerefentry><refentrytitle>altq</refentrytitle><manvolnum>4</manvolnum></citerefentry> werden um <acronym>QoS</acronym>-Funktionen bereitzustellen.</para>
<para>Dieser beispielhafte <application>PF</application>-Eintrag erlaubt eingehende <application>SSH</application>-Verbindungen:</para>
<programlisting>pass in on $ext_if inet proto tcp from any to ($ext_if) port 22</programlisting>
<para><application>IPFILTER</application> ist eine von Darren Reed entwickelte Firewall. Diese Firewall ist nicht FreeBSD-spezifisch und wurde bereits auf andere Betriebssysteme portiert, einschließlich NetBSD, OpenBSD, SunOS, HP/UX, und Solaris.</para>
<para>Die Syntax für <application>IPFILTER</application> zum Erlauben von eingehenden <application>SSH</application>-Verbindungen lautet:</para>
<programlisting>pass in on $ext_if proto tcp from any to any port = 22</programlisting>
<para>Die Firewall <application>IPFW</application> wird von FreeBSD entwickelt und betreut. Sie kann zusammen mit <citerefentry><refentrytitle>dummynet</refentrytitle><manvolnum>4</manvolnum></citerefentry> eingesetzt werden, um Traffic-Shaping zu realisieren und verschiedene Arten von Netzwerkverbindungen zu simulieren.</para>
<para>Die Syntax für <application>IPFW</application> zum Erlauben von eingehenden <application>SSH</application>-Verbindungen ist:</para>
<programlisting>ipfw add allow tcp from any to me 22 in via $ext_if</programlisting>
</sect1>
<sect1 xml:id="updates">
<title>FreeBSD aktualisieren</title>
<para>Es gibt zwei Methoden um ein FreeBSD-System zu aktualisieren: aus den Quellen oder über binäre Updates.</para>
<para>Die Aktualisierung aus den Quellen ist etwas komplexer, bietet aber das höchste Maß an Flexibilität. Dieser Prozess beinhaltet die Synchronisation der Quellen über einen <application>Subversion</application>-Server von FreeBSD. Sobald die lokale Kopie aktualisiert wurde, kann eine neue Version des Kernels und des Userlands kompiliert werden.</para>
<para>Binäre Updates funktionieren in etwa so, als wenn Sie ein <trademark class="registered">Linux</trademark>-System mit <command>yum</command> oder <command>apt-get</command> aktualisieren. In FreeBSD können Sie <citerefentry><refentrytitle>freebsd-update</refentrytitle><manvolnum>8</manvolnum></citerefentry> benutzen, um binäre Updates herunterzuladen und zu installieren. Diese Updates können mit <citerefentry><refentrytitle>cron</refentrytitle><manvolnum>8</manvolnum></citerefentry> zu festgelegten Zeitpunkten durchgeführt werden.</para>
<note>
<para>Wenn Sie <citerefentry><refentrytitle>cron</refentrytitle><manvolnum>8</manvolnum></citerefentry> verwenden um Updates zu planen, benutzen Sie <command>freebsd-update cron</command> in der <citerefentry><refentrytitle>crontab</refentrytitle><manvolnum>1</manvolnum></citerefentry>, um die Möglichkeit zu verringern, dass alle Maschinen die Updates zur gleichen Zeit laden:</para>
<programlisting>0 3 * * * root /usr/sbin/freebsd-update cron</programlisting>
</note>
<para>Weitere Informationen über die Aktualisierung aus den Quellen und Binär-Updates finden Sie im Kapitel <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/updating-upgrading.html">FreeBSD aktualisieren</link> des FreeBSD Handbuchs.</para>
</sect1>
<sect1 xml:id="procfs">
<title>procfs: Verschwunden, aber nicht vergessen</title>
<para>In einigen <trademark class="registered">Linux</trademark>-Distributionen kann man in <filename>/proc/sys/net/ipv4/ip_forward</filename> feststellen, ob <acronym>IP</acronym>-Weiterleitung aktiviert ist. In FreeBSD wird stattdessen <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> verwendet, um diese und andere Systemeinstellungen anzuzeigen.</para>
<para>Auf einem FreeBSD-System kann der folgende Befehl benutzt werden, um festzustellen ob <acronym>IP</acronym>-Weiterleitung aktiviert ist:</para>
<screen><prompt>%</prompt> <userinput>sysctl net.inet.ip.forwarding</userinput>
net.inet.ip.forwarding: 0</screen>
<para>Benutzen Sie <option>-a</option> um alle Einstellungen des Systems anzuzeigen:</para>
<screen><prompt>%</prompt> <userinput>sysctl -a | more</userinput></screen>
<para>Wenn eine Anwendung procfs benötigt, fügen Sie den folgenden Eintrag in <filename>/etc/fstab</filename> ein:</para>
<screen>proc /proc procfs rw,noauto 0 0</screen>
<para>Die Option <option>noauto</option> verhindert, dass <filename>/proc</filename> beim Booten automatisch eingehängt wird.</para>
<para>Das Dateisystem kann ohne Neustart eingehängt werden:</para>
<screen><prompt>#</prompt> <userinput>mount /proc</userinput></screen>
</sect1>
<sect1 xml:id="commands">
<title>Häufig verwendete Kommandos</title>
<para>Einige Kommando-Äquivalente sind wie folgt:</para>
<para>
<informaltable frame="none" pgwide="1">
<tgroup cols="3">
<thead>
<row>
<entry><trademark class="registered">Linux</trademark>-Kommando (Red Hat/Debian)</entry>
<entry>FreeBSD Äquivalent</entry>
<entry>Aufgabe</entry>
</row>
</thead>
<tbody>
<row>
<entry><command>yum install <replaceable>Paket</replaceable></command> / <command>apt-get install <replaceable>Paket</replaceable></command></entry>
<entry><command>pkg install <replaceable>Paket</replaceable></command></entry>
<entry>Paket aus einem entfernten Repository installieren.</entry>
</row>
<row>
<entry><command>rpm -ivh <replaceable>Paket</replaceable></command> / <command>dpkg -i <replaceable>Paket</replaceable></command></entry>
<entry><command>pkg add <replaceable>Paket</replaceable></command></entry>
<entry>Ein lokales Paket installieren</entry>
</row>
<row>
<entry><command>rpm -qa</command> / <command>dpkg -l</command></entry>
<entry><command>pkg info</command></entry>
<entry>Installierte Paket anzeigen</entry>
</row>
<row>
<entry><command>lspci</command></entry>
<entry><command>pciconf</command></entry>
<entry><acronym>PCI</acronym>-Geräte anzeigen</entry>
</row>
<row>
<entry><command>lsmod</command></entry>
<entry><command>kldstat</command></entry>
<entry>Geladene Kernelmodule anzeigen</entry>
</row>
<row>
<entry><command>modprobe</command></entry>
<entry><command>kldload</command> / <command>kldunload</command></entry>
<entry>Kernelmodule laden/entladen</entry>
</row>
<row>
<entry><command>strace</command></entry>
<entry><command>truss</command></entry>
<entry>Systemaufrufe verfolgen</entry>
</row>
</tbody>
</tgroup>
</informaltable></para>
</sect1>
<sect1 xml:id="conclusion">
<title>Fazit</title>
<para>Dieses Dokument hat einen Überblick über FreeBSD geboten. Lesen Sie das <link xlink:href="@@URL_RELPREFIX@@/doc/de_DE.ISO8859-1/books/handbook/index.html">FreeBSD Handbuch</link> für eine tiefergehender Abdeckung dieses und weiterer Themen, welche nicht in diesem Dokument behandelt sind.</para>
</sect1>
</article>

File diff suppressed because it is too large Load diff

View file

@ -1,29 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# basiert auf: r39631
#
# Article: Einführung in NanoBSD
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
SRCS= article.xml
URL_RELPREFIX?=../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,537 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Einf&uuml;hrung in NanoBSD</title>
<authorgroup>
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<copyright>
<year>2006</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>Dieses Dokument stellt Informationen zu den
<application>NanoBSD</application> Werkzeugen bereit, die dazu
verwendet werden k&ouml;nnen ein &os; Abbild f&uuml;r eingebettete
Systeme zu erstellen, welche auf eine Compact Flash Karte
passen (oder andere Massenspeicher).</para>
<para><emphasis>&Uuml;bersetzt von Bj&ouml;rn
Heidotting</emphasis>.</para>
</abstract>
</info>
<sect1 xml:id="intro">
<title>Einf&uuml;hrung in NanoBSD</title>
<indexterm><primary>NanoBSD</primary></indexterm>
<para><application>NanoBSD</application> ist ein Werkzeug welches
derzeit von &a.phk; entwickelt wird. Es erstellt ein &os;
Systemabbild f&uuml;r eingebettete Systeme, die auf eine Compact
Flash Karte passen (oder andere Massenspeicher).</para>
<para>Es kann dazu benutzt werden um spezialisierte
Installationsabbilder zu bauen, entworfen f&uuml;r die einfache
Installation und Wartung von Systemen die als "Computer
Appliances" bekannt sind. Computer Appliances haben ihre Hard-
und Software fest verbaut, dass bedeutet alle Anwendungen sind
vorinstalliert. Die Appliance wird an ein bestehendes Netzwerk
angeschlossen und kann mit der Arbeit (fast) sofort
beginnen.</para>
<para>Zu den Eigenschaften von <application>NanoBSD</application>
geh&ouml;ren:</para>
<itemizedlist>
<listitem>
<para>Ports und Pakete funktionieren wie in &os; &mdash; Jede
einzelne Anwendung kann auf dem
<application>NanoBSD</application> Abbild installiert und
benutzt werden, auf die gleiche Weise wie Sie es aus &os;
gewohnt sind.</para>
</listitem>
<listitem>
<para>Keine fehlende Funktionalit&auml;t &mdash; Wenn es m&ouml;glich
ist, etwas mit &os; zu tun, ist es auch m&ouml;glich, die
gleiche Sache mit <application>NanoBSD</application> zu tun,
es sei denn, eine oder mehrere Funktionen wurden
ausdr&uuml;cklich vor dem Bau des
<application>NanoBSD</application> Abbilds entfernt.</para>
</listitem>
<listitem>
<para>Zur Laufzeit ist alles read-only &mdash; Es ist sicher
den Stromstecker zu ziehen. Es besteht dann keine
Notwendigkeit, einen &man.fsck.8; nach einem nicht
ordnungsgem&auml;&szlig;em Herunterfahren des Systems
auszuf&uuml;hren.</para>
</listitem>
<listitem>
<para>Einfach zu bauen und anzupassen &mdash; Unter Verwendung
von nur einem Shell-Skript und einer Konfigurationsdatei ist
es m&ouml;glich, ein reduziertes und angepasstes Abbild zu
bauen, welches jegliche Reihe von Anforderungen
erf&uuml;llt.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="howto">
<title>NanoBSD Anleitung</title>
<sect2 xml:id="design">
<title>Das Design von NanoBSD</title>
<para>Sobald das Abbild auf dem Medium verf&uuml;gbar ist, kann
<application>NanoBSD</application> gebootet werden. Der
Massenspeicher ist standardm&auml;&szlig;ig in drei Teile
unterteilt:</para>
<itemizedlist>
<listitem>
<para>Zwei Abbild Partitionen: <literal>code#1</literal> und
<literal>code#2</literal>.</para>
</listitem>
<listitem>
<para>Die Partition der Konfigurationsdatei, welche zur
Laufzeit unter dem <filename>/cfg</filename> Verzeichnis gemountet
werden kann.</para>
</listitem>
</itemizedlist>
<para>Diese Partitionen sind im Allgemeinen read-only.</para>
<para>Die <filename>/etc</filename> und
<filename>/var</filename> Verzeichnisse sind
&man.md.4; (malloc) Speicher.</para>
<para>Die Partition der Konfigurationsdatei besteht unter dem
<filename>/cfg</filename> Verzeichnis. Sie
enth&auml;lt Dateien f&uuml;r das <filename>/etc</filename> Verzeichnis und wird
direkt nach dem Botten read-only eingehangen, weshalb es
erforderlich ist ge&auml;nderte Dateien von <filename>/etc</filename> zur&uuml;ck nach <filename>/cfg</filename> zu kopieren falls die
&Auml;nderungen nach einem Neustart bestehen bleiben
sollen.</para>
<example>
<title>Dauerhafte &Auml;nderungen in
<filename>/etc/resolv.conf</filename> vornehmen</title>
<screen>&prompt.root; <userinput>vi /etc/resolv.conf</userinput>
[...]
&prompt.root; <userinput>mount /cfg</userinput>
&prompt.root; <userinput>cp /etc/resolv.conf /cfg</userinput>
&prompt.root; <userinput>umount /cfg</userinput></screen>
</example>
<note>
<para>Die <filename>/cfg</filename>
Partition sollte nur w&auml;hrend des Bootvorgangs und zu
&Auml;nderungen an den Konfigurationsdateien gemountet
werden.</para>
<para>Die <filename>/cfg</filename>
Partition jederzeit gemountet zu haben ist keine gute Idee,
besonders wenn das <application>NanoBSD</application> System
auf einem Massenspeicher betrieben wird, der eventuell druch
eine gro&szlig;e Anzahl von Schreiboperationen nachteilig
beeintr&auml;chtigt wird (z. B. wenn der Dateisystem-Syncer den
Speicher mit Daten &uuml;berflutet).</para>
</note>
</sect2>
<sect2>
<title>Ein NanoBSD Abbild erstellen</title>
<para>Ein <application>NanoBSD</application> Abbild wird &uuml;ber
ein einfaches <filename>nanobsd.sh</filename> Shell-Skript
gebaut, das sich unter <filename>/usr/src/tools/tools/nanobsd</filename>
befindet. Das Skript erstellt ein Abbild, welches dann
mittels &man.dd.1; auf einen Massenspeicher kopiert werden
kann.</para>
<para>Die folgenden Kommandos sind notwendig um ein
<application>NanoBSD</application> Abbild zu erstellen:</para>
<screen>&prompt.root; <userinput>cd /usr/src/tools/tools/nanobsd</userinput> <co xml:id="nbsd-cd"/>
&prompt.root; <userinput>sh nanobsd.sh</userinput> <co xml:id="nbsd-sh"/>
&prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co xml:id="nbsd-cd2"/>
&prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co xml:id="nbsd-dd"/></screen>
<calloutlist>
<callout arearefs="nbsd-cd">
<para>Wechsel in das Basisverzeichnis des
<application>NanoBSD</application> Skripts.</para>
</callout>
<callout arearefs="nbsd-sh">
<para>Den Bauprozess starten.</para>
</callout>
<callout arearefs="nbsd-cd2">
<para>Wechsel in das Verzeichnis, in dem das gebaute Abbild
liegt.</para>
</callout>
<callout arearefs="nbsd-dd">
<para><application>NanoBSD</application> auf einem
Massenspeicher installieren.</para>
</callout>
</calloutlist>
</sect2>
<sect2>
<title>Ein NanoBSD Abbild anpassen</title>
<para>Dies ist wahrscheinlich das wichtigste und interessanteste
Merkmal von <application>NanoBSD</application>. Hierbei
werden Sie auch die meiste Zeit mit der Entwicklung von
<application>NanoBSD</application> verbringen.</para>
<para>Der Aufruf des folgenden Kommandos wird
<filename>nanobsd.sh</filename> dazu zwingen, seine
Konfiguration aus <filename>myconf.nano</filename> aus dem
aktuellen Verzeichnis zu lesen:</para>
<screen>&prompt.root; <userinput>sh nanobsd.sh -c myconf.nano</userinput></screen>
<para>Die Anpassung wird auf zwei Arten geschehen:</para>
<itemizedlist>
<listitem>
<para>Konfigurations-Optionen</para>
</listitem>
<listitem>
<para>Benutzerdefinierte Funktionen</para>
</listitem>
</itemizedlist>
<sect3>
<title>Konfigurations-Optionen</title>
<para>Durch Konfigurationseinstellungen ist es m&ouml;glich
Optionen zu &uuml;bergeben, die sowohl die
<buildtarget>buildworld</buildtarget> und
<buildtarget>installworld</buildtarget> Phasen des
<application>NanoBSD</application> Bauprozesses betreffen,
sowie interne Optionen, die den Haupt-Bauprozess von
<application>NanoBSD</application> beeinflussen. Durch diese
Optionen ist es m&ouml;glich, das System so zu reduzieren, dass
es mit wenig Platz, etwa 64 MB auskommt. Sie k&ouml;nnen die
Konfigurationsdateien dazu nutzten &os; noch weiter zu
trimmen, bis es nur noch aus dem Kernel und zwei oder drei
Dateien im Userland besteht.</para>
<para>Die Konfigurationsdatei besteht aus
Konfigurations-Optionen, welche die Standardwerte
&uuml;berschreiben.</para>
<itemizedlist>
<listitem>
<para><literal>NANO_NAME</literal> &mdash; Name des Build
(wird verwendet, um die workdir Namen zu
konstruieren).</para>
</listitem>
<listitem>
<para><literal>NANO_SRC</literal> &mdash; Pfad zum
Quelltextverzeichnis, das f&uuml;r den Bau des Abbilds
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>NANO_KERNEL</literal> &mdash; Name der
Kernelkonfigurationsdatei, die f&uuml;r den Bau des Kernels
verwendet wird.</para>
</listitem>
<listitem>
<para><literal>CONF_BUILD</literal> &mdash; Optionen f&uuml;r
die <buildtarget>buildworld</buildtarget> Phase des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_INSTALL</literal> &mdash; Optionen
f&uuml;r die <buildtarget>installworld</buildtarget> Phase
des Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>CONF_WORLD</literal> &mdash; Optionen f&uuml;r
die <buildtarget>buildworld</buildtarget> und
<buildtarget>installworld</buildtarget> Phasen des
Bauprozesses.</para>
</listitem>
<listitem>
<para><literal>FlashDevice</literal> &mdash; Definiert den
zu benutzenden Medientyp. &Uuml;berpr&uuml;fen Sie die
Datei <filename>FlashDevice.sub</filename> f&uuml;r
weitere Informationen.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Benutzerdefinierte Funktionen</title>
<para>Mit Hilfe von Shell-Funktionen in der
Konfigurationsdatei besteht die M&ouml;glichkeit zur
Feinabstimmung von <application>NanoBSD</application>. Das
folgende Beispiel illustriert das Grundmodell von
benutzerdefinierten Funktionen:</para>
<programlisting>cust_foo () (
echo "bar=baz" &gt; \
&dollar;{NANO_WORLDDIR}/etc/foo
)
customize_cmd cust_foo</programlisting>
<para>Ein besseres Beispiel f&uuml;r eine Anpassung ist folgende,
welche die Standardgr&ouml;&szlig;e des <filename>/etc</filename> Verzeichnisses von 5 MB
auf 30 MB &auml;ndert:</para>
<programlisting>cust_etc_size () (
cd &dollar;{NANO_WORLDDIR}/conf
echo 30000 &gt; default/etc/md_size
)
customize_cmd cust_etc_size</programlisting>
<para>Es gibt ein paar vordefinierte Standardfunktionen die
Sie nutzen k&ouml;nnen:</para>
<itemizedlist>
<listitem>
<para><literal>cust_comconsole</literal> &mdash;
Deaktiviert &man.getty.8; auf den VGA Ger&auml;ten (den
<filename>/dev/ttyv*</filename> Ger&auml;tedateien) und
erm&ouml;glicht die Nutzung der seriellen Schnittstelle COM1
als Systemkonsole.</para>
</listitem>
<listitem>
<para><literal>cust_allow_ssh_root</literal> &mdash;
Erlaubt es <systemitem class="username">root</systemitem> sich &uuml;ber
&man.sshd.8; anzumelden.</para>
</listitem>
<listitem>
<para><literal>cust_install_files</literal> &mdash;
Installiert Dateien aus dem <filename>nanobsd/Files</filename>
Verzeichnis, das einige n&uuml;tzliche Skripte f&uuml;r die
Systemverwaltung enth&auml;lt.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Pakete hinzuf&uuml;gen</title>
<para>Durch benutzerdefinierte Funktionen k&ouml;nnen Pakete zum
<application>NanoBSD</application> Abbild hinzugef&uuml;gt
werden. Die nachfolgende Funktion installiert alle Pakete
aus
<filename>/usr/src/tools/tools/nanobsd/packages</filename>:</para>
<programlisting>install_packages () (
mkdir -p ${NANO_WORLDDIR}/packages
cp /usr/src/tools/tools/nanobsd/packages/* ${NANO_WORLDDIR}/packages
chroot ${NANO_WORLDDIR} sh -c 'cd packages; pkg_add -v *;cd ..;'
rm -rf ${NANO_WORLDDIR}/packages
)
customize_cmd install_packages</programlisting>
</sect3>
<sect3>
<title>Beispiel einer Konfigurationsdatei</title>
<para>Ein komplettes Beispiel f&uuml;r eine Konfigurationsdatei
zum Erstellen eines benutzerdefinierten
<application>NanoBSD</application> Abbilds k&ouml;nnte folgende
sein:</para>
<programlisting>NANO_NAME=custom
NANO_SRC=/usr/src
NANO_KERNEL=MYKERNEL
NANO_IMAGES=2
CONF_BUILD='
NO_KLDLOAD=YES
NO_NETGRAPH=YES
NO_PAM=YES
'
CONF_INSTALL='
NO_ACPI=YES
NO_BLUETOOTH=YES
NO_CVS=YES
NO_FORTRAN=YES
NO_HTML=YES
NO_LPR=YES
NO_MAN=YES
NO_SENDMAIL=YES
NO_SHAREDOCS=YES
NO_EXAMPLES=YES
NO_INSTALLLIB=YES
NO_CALENDAR=YES
NO_MISC=YES
NO_SHARE=YES
'
CONF_WORLD='
NO_BIND=YES
NO_MODULES=YES
NO_KERBEROS=YES
NO_GAMES=YES
NO_RESCUE=YES
NO_LOCALES=YES
NO_SYSCONS=YES
NO_INFO=YES
'
FlashDevice SanDisk 1G
cust_nobeastie() (
touch &dollar;{NANO_WORLDDIR}/boot/loader.conf
echo "beastie_disable=\"YES\"" &gt;&gt; &dollar;{NANO_WORLDDIR}/boot/loader.conf
)
customize_cmd cust_comconsole
customize_cmd cust_install_files
customize_cmd cust_allow_ssh_root
customize_cmd cust_nobeastie</programlisting>
</sect3>
</sect2>
<sect2>
<title>NanoBSD aktualisieren</title>
<para>The Update-Prozess von <application>NanoBSD</application>
ist relativ einfach:</para>
<procedure>
<step>
<para>Erstellen Sie ein neues
<application>NanoBSD</application> Abbild.</para>
</step>
<step>
<para>Laden Sie das neue Abbild in eine unbenutzte Partition
eines laufenden <application>NanoBSD</application>
Systems.</para>
<para>Der wichtigste Unterschied dieses Schrittes zur ersten
<application>NanoBSD</application> Installation besteht
darin, das jetzt anstatt der Datei
<filename>_.disk.full</filename> (enth&auml;lt ein Abbild der
gesamten Platte) die Datei
<filename>_.disk.image</filename> (enth&auml;lt ein Abbild
einer einzelnen System-Partition) installiert wird.</para>
</step>
<step>
<para>Neustart, um das System von der neu installierten
Partition zu starten.</para>
</step>
<step>
<para>Wenn alles gut geht, ist die Aktualisierung
abgeschlossen.</para>
</step>
<step>
<para>Wenn etwas schief l&auml;uft, starten Sie wieder in die
vorherige Partition (die das alte, funktionierende Abbild
enth&auml;lt) um die System-Funktionalit&auml;t so schnell wie
m&ouml;glich wieder herzustellen. Beheben Sie alle Probleme
des neu gebauten Abbilds, und wiederholen Sie den
Vorgang.</para>
</step>
</procedure>
<para>Um das neue Abbild auf das laufende
<application>NanoBSD</application> System zu installieren, ist
es m&ouml;glich, entweder das <filename>updatep1</filename> oder
<filename>updatep2</filename> Skript im <filename>/root</filename> Verzeichnis zu verwenden,
je nachdem, von welcher Partition das aktuelle System
l&auml;uft.</para>
<para>In Abh&auml;ngigkeit davon welche Dienste der Host, der das
<application>NanoBSD</application> Abbild anbietet, und welche
Art von Transfer bevorzugt wird, bestehen eine von drei zu
pr&uuml;fenden M&ouml;glichkeiten:</para>
<sect3>
<title>Verwendung von &man.ftp.1;</title>
<para>Wenn die &Uuml;bertragungsgeschwindigkeit an erster
Stelle steht, verwenden Sie dieses Beispiel:</para>
<screen>&prompt.root; <userinput>ftp myhost
get _.disk.image "| sh updatep1"</userinput></screen>
</sect3>
<sect3>
<title>Verwendung von &man.ssh.1;</title>
<para>Wenn eine sichere &Uuml;bertragung bevorzugt wird,
sollten Sie die Verwendung dieses Beispiels in Betracht
ziehen:</para>
<screen>&prompt.root; <userinput>ssh myhost cat _.disk.image.gz | zcat | sh updatep1</userinput></screen>
</sect3>
<sect3>
<title>Verwendung von &man.nc.1;</title>
<para>Verwenden Sie dieses Beispiel, wenn auf dem Remote-Host
kein &man.ftpd.8; oder &man.sshd.8; Dienst l&auml;uft:</para>
<procedure>
<step>
<para>Zun&auml;chst &ouml;ffnen Sie eine TCP-Listener auf dem Host
der das Abbild bereitstellt und zum Client
sendet:</para>
<screen>myhost&prompt.root; <userinput>nc -l 2222 &lt; _.disk.image</userinput></screen>
<note>
<para>Stellen Sie sicher das der benutzte Port nicht
blockiert wird, um eingehende Verbindungen, vom
<application>NanoBSD</application> Host durch die
Firewall, zu erm&ouml;glichen.</para>
</note>
</step>
<step>
<para>Verbinden Sie sich zum Host der das Abbild
bereitstellt und f&uuml;hren Sie das
<filename>updatep1</filename> Skript aus:</para>
<screen>&prompt.root; <userinput>nc myhost 2222 | sh updatep1</userinput></screen>
</step>
</procedure>
</sect3>
</sect2>
</sect1>
<index/>
</article>

View file

@ -1,24 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/new-users/Makefile,v 1.2 2005/02/08 00:43:39 mheinen Exp $
# basiert auf: 1.11
#
# Article: Informationen für &os;- und &unix;-Einsteiger
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

File diff suppressed because it is too large Load diff

View file

@ -1,22 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# basiert auf: r39631
#
# Article: Port Mentor Guidelines
#
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,262 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!-- The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
basiert auf: r396332
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Richtlinien f&uuml;r Port-Mentoren</title>
<authorgroup>
<author><orgname>Das &os; Ports-Management Team</orgname></author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<copyright>
<year>2011</year>
<holder role="mailto:tabthorpe@FreeBSD.org">Thomas
Abthorpe</holder>
<holder role="mailto:crees@FreeBSD.org">Chris Rees</holder>
</copyright>
</info>
<sect1 xml:id="port-mentor.guidelines">
<title>Richtlinien f&uuml;r Mentor/Mentee Beziehungen</title>
<para>Dieser Abschnitt soll dazu dienen, den Mythos des
Mentoringprozesses zu entzaubern und gleichzeitig einen offenen
Dialog zu f&uuml;hren, um diese Richtlinien anzupassen und zu
erweitern. Es gibt bereits sehr viele Regeln in unserem Leben
und wir sind auch keine Regierungsorganisation, die Gesetze
aufzwingt. Stattdessen verstehen wir uns als eine Gemeinschaft
von gleichgesinnten Individuen, die an einem gemeinsamen Ziel
arbeiten, um die Qualit&auml;tsanspr&uuml;che an das Produkt,
welches als Portbaum bekannt ist, zu gew&auml;hrleisten.</para>
<sect2 xml:id="why.mentor">
<title>Warum Mentor sein?</title>
<itemizedlist>
<listitem>
<para>Die meisten von uns kamen durch die Hife eines Mentors
in das Projekt hinein. Also sollte man jemand anderem auch
diesen Gefallen tun.</para>
</listitem>
<listitem>
<para>Sie haben das unwiderstehliche Bed&uuml;rfnis, anderen
Ihr Wissen mitzuteilen.</para>
</listitem>
<listitem>
<para>Die &uuml;bliche Bestrafung wird angewendet, da Sie es
mittlerweile Leid sind, die gute Arbeit von anderen Leuten
zu committen.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="mentor.comentor">
<title>Mentor/Mit-Mentor</title>
<para>Gr&uuml;nde f&uuml;r eine Mit-Mentorenschaft:</para>
<itemizedlist>
<listitem>
<para>Signifikanter Zeitzonenunterschied. Verf&uuml;gbare
Mentoren, mit denen man interaktiv Dinge via Instant
Messenger besprechen kann, sind extrem hilfreich.</para>
</listitem>
<listitem>
<para>Potentielle Sprachbarriere. Ja, &os; ist, wie die
meiste Softwareentwicklung auch, sehr Englisch-orientiert.
Jedoch kann ein Mentor, der die eigene Sprache spricht,
hilfreich sein.</para>
</listitem>
<listitem>
<para>ENOTIME! Solange es keinen 30-Stunden Tag und eine
8-Tage Woche gibt, haben manche von uns nur eine begrenzte
Menge Zeit zur Verf&uuml;gung. Diese Last mit jemandem zu
teilen macht die Sache einfacher.</para>
</listitem>
<listitem>
<para>Ein Mentor-Neuling kann von den Erfahrungen eines
erfahrenen Committers bzw. Mentors profitieren.</para>
</listitem>
<listitem>
<para>Zwei K&ouml;pfe sind besser als einer allein.</para>
</listitem>
</itemizedlist>
<para>Gr&uuml;nde f&uuml;r einen Einzelmentor:</para>
<itemizedlist>
<listitem>
<para>Sie arbeiten nicht so gut mit anderen zusammen.</para>
</listitem>
<listitem>
<para>Sie bevorzugen eine 1:1-Beziehung.</para>
</listitem>
<listitem>
<para>Die Gr&uuml;nde f&uuml;r die Mit-Mentorenschaft
treffen auf Sie nicht zu.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="mentor.expectations">
<title>Erwartungen</title>
<para>Wir erwarten, dass Mentoren alle vorgeschlagenen Patche,
zumindest f&uuml;r einen Anfangszeitraum, welcher mehr als
eine oder zwei Wochen dauert, pr&uuml;fen und testweise bauen
sollten.</para>
<para>Wir erwarten, dass Mentoren die Verantwortung f&uuml;r die
Aktionen Ihres Mentees &uuml;bernehmen. Ein Mentor sollte
hinter den Commits des Mentees stehen, sowohl implizit als
auch explizit.</para>
<para>Wir erwarten, dass Mentoren ihre Mentees die Lekt&uuml;re
des <link xlink:href="&url.books.porters-handbook;">Handbuch
f&uuml;r Ports Committer</link>, die <link xlink:href="&url.articles.pr-guidelines;">PR-Richtlinien</link> sowie
den <link xlink:href="&url.articles.committers-guide;">Committer's
Guide</link> empfehlen. Obwohl es nicht notwendig ist, all
diese Details im Ged&auml;chtnis zu behalten, sollte jeder
Committer einen &Uuml;berblick &uuml;ber diese Dinge haben, um
ein effizienter Teil der Gemeinschaft zu sein (und um
Anf&auml;ngerfehler so weit wie m&ouml;glich zu vermeiden).</para>
</sect2>
<sect2 xml:id="mentees">
<title>Auswahl eines Mentees</title>
<para>Es existiert keine definierte Regel, die festlegt, dass
ein Kandidat bereit ist. Es kann eine Kombination der Anzahl
von PRs sein, die an <application>GNATS</application>
geschickt wurden, die Anzahl an Ports, die von dieser Person
gepflegt werden, die H&auml;figkeit von Ports-Aktualisierungen
bzw. die Menge von Beteiligungen in einem bestimmten Bereich,
z.B. <application>GNOME</application>,
<application>KDE</application>,
<application>Gecko</application> oder andere.</para>
<para>Ein Kandidat sollte fasst keine Auszeiten haben, auf
Anfragen antworten und generell sehr hilfreich in der
Unterst&uuml;tzung seiner Ports sein.</para>
<para>Es sollte eine Historie von Einsatzbereitschaft vorliegen,
da es bekanntermassen Zeit und Aufwand ben&ouml;tigt, um einen
Committer zu trainieren. Falls jemand schon l&auml;ngere Zeit
dabei ist und Zeit damit verbringt, zu beobachten, wie die
Dinge funktionieren, ergibt sich eine Erwartungshaltung von
angeh&auml;uftem Wissen. Viel zu oft schon haben wir
beobachten m&uuml;ssen, dass jemand viele PRs schickt, um
anschliessend im IRC aufzutauchen um zu fragen, wann das
Commit-Bit gew&auml;hrt wird.</para>
<para>Eine Mailingliste abonniert zu haben und dieser zu folgen
ist vorteilhaft. Es gibt keine echte Erwartungshaltung, dass
durch das schreiben auf einer Mailingliste jemand zum
Committer wird, doch es zeigt dennoch die Bereitschaft. Manche
Mails bieten Einsichten in das Wissen eines Kandidaten
genauso, wie gut jemand mit anderen interagiert. Gleichfalls
kann durch Teilnahme im IRC jemand ein h&ouml;heres Ansehen
erhalten.</para>
<para>Fragen Sie sechs verschiedene Committer, wieviele PRs
jemand vor seiner Nominierung einschicken sollte und Sie
erhalten sechs verschiedene Antworten. Fragen Sie diese
Individuen wie lange jemand schon etwas beigetragen haben
sollte, ergibt sich das gleiche Dilemma. Wieviele Ports sollte
jemand als Minimum betreuen? Jetzt haben wir wirklich eine
Diskussion ausgel&ouml;st! Manche Dinge sind einfach schwer als
Mengen abzubilden, also muss ein Mentor eine Einsch&auml;tzung
machen und hoffen, dass portmgr zustimmt.</para>
</sect2>
<sect2 xml:id="mentorship.duration">
<title>Dauer der Mentorenschaft</title>
<para>Mit der Zeit wird das Vertrauen in jemanden wachsen und
der Mentee wird <quote>implizite</quote> Commitrechte
erhalten. Dies kann triviale &Auml;nderungen f&uuml;r
<filename>Makefile</filename>, <filename>pkg-descr</filename>
und andere Dateien beinhalten. Genauso kann dies
Aktualisierungen der <varname>PORTVERSION</varname>, die keine
<varname>plist</varname>-&Auml;nderungen sind, betreffen.
Andere Umst&auml;nde k&ouml;nnen nach Gutd&uuml;nken des
Mentors formuliert werden. Allerdings sollten
Versions&auml;nderungen bei Ports, die andere Ports betreffen,
vorher von einem Mentor gepr&uuml;ft werden.</para>
<para>Genauso wie wir alle verschiedene Individuen sind, besitzt
jeder Mentee unterschiedliche Lernkurven, Zeitinvestitionen
und andere Einflussfaktoren, die zu der Zeit beitragen, bevor
jemand <quote>allein fliegt</quote>. Empirisch sollte ein
Mentee f&uuml;r mindestens 3 Monate beobachtet werden. 90-100
Commits ist ein weiteres Ziel, dass ein Mentor nutzen kann,
bevor jemand als Mentee entlassen wird. Andere Faktoren, die
man vor der Freilassung seines Mentees ber&uuml;cksichtigen
sollte, ist die Anzahl der gemachten Fehler, die erhaltenen
QATs, usw. Falls immer noch Fehler gemacht werden, ist die
Betreuung durch einen Mentor weiterhin notwendig.</para>
</sect2>
<sect2 xml:id="mentor.comentor.debate">
<title>Mentor/Mit-Mentor Debatten</title>
<para>Wenn eine Anfrage an portmgr geht, sieht dies
normalerweise so aus: <quote>I propose 'foo' for a ports
commit bit, I will co-mentor with 'bar'</quote>. Anfrage wurde
erhalten, abgestimmt und die Entscheidung wird
getragen.</para>
<para>Der Mentor ist die prim&auml;re Kontaktperson, oder
zumindest der <quote>erste unter gleichgestellten</quote>, der
Co-Mentor dient als Absicherung.</para>
<para>Mancher Schurke, dessen Name hier nicht genannt werden
soll, machte den <link xlink:href="http://lists.freebsd.org/pipermail/cvs-ports/2007-September/134614.html">
ersten aufgezeichneten Mit-Mentoren Commit</link>. Es wurden
auch schon Mit-Mentoren commits im src-Baum beobachtet. Macht
dieses Vorgehen die Sache richtig? Ist es falsch? Es scheint
Teil dessen zu sein, wie die Dinge sich entwickeln.</para>
</sect2>
<sect2 xml:id="mentee.expectations">
<title>Erwartungen</title>
<para>Wir erwarten von Mentees, dass diese f&uuml;r konstruktive
Kritik aus der Gemeinschaft offen sind. Es gibt immer noch
viel <quote>Wissen</quote>, welches nicht geschrieben steht.
Richtig auf konstruktive Kritik zu antworten ist was wir
hoffen zu erkennen, wenn wir jemanden anhand seiner
Beitr&auml;ge im IRC und auf den Mailinglisten
ausw&auml;hlen.</para>
<para>Wir warnen Mentees davor, dass manche Kritik, die sie
erhalten werden, weniger <quote>konstruktiv</quote> als andere
sein wird (egal ob durch Verst&auml;ndigungsprobleme, die
durch die Sprache bedingt sind oder durch Pingeligkeit). Mit
dieser Art von Kritik kultiviert umzugehen ist auch Teil
davon, einer grossen Gemeinschaft anzugeh&ouml;ren. Bei
spezifischen Problemen mit bestimmten Leuten oder falls fragen
aufkommen, hoffen wir dass diese sich an ein Mitglied von
portmgr wenden, entweder via IRC oder per eMail.</para>
</sect2>
</sect1>
</article>

View file

@ -1,24 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/articles/solid-state/Makefile,v 1.2 2011/12/31 12:33:27 bcr Exp $
# basiert auf: 1.5
#
# Article: FreeBSD und Solid State Devices
DOC?= article
FORMATS?= html html-split
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,531 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!-- Copyright (c) 2001 The FreeBSD Documentation Project
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde: de-docproj/articles/solid-state/article.xml,v 1.2 2010/09/18 21:55:49 jkois Exp $
basiert auf: 1.18
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>&os; und Solid State-Geräte</title>
<authorgroup>
<author><personname><firstname>John</firstname><surname>Kozubik</surname></personname><affiliation>
<address><email>john@kozubik.com</email></address>
</affiliation></author>
</authorgroup>
<copyright>
<year>2001</year>
<year>2009</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
&legalnotice;
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Dieser Artikel behandelt die Verwendung von Solid State Festplatten
in &os;, um eingebettete Systeme zu erstellen.</para>
<para>Eingebettete Systeme haben den Vorteil, dass sie eine
höhere Stabilität aufgrund des fehlens von beweglichen
Bauteilen (Festplatten) besitzen. Es muss jedoch beachtet
werden, dass generell weniger Speicherplatz zur Verfügung
steht und die Lebensdauer des Speichermediums geringer
ist.</para>
<para>Spezielle Themen die behandelt werden beinhalten die Typen
und Attribute von Solid State Datenträgern, die in &os;
verwendet werden, Kernel-Optionen die in solch einer Umgebung
von Interesse sind, der
<filename>rc.initdiskless</filename>-Mechanismus, welcher die
Initalisierung solcher Systeme automatisiert, sowie die
Notwendigkeit von Nur-Lese-Dateisystemen und das Erstellen von
Dateisystemen von Grund auf. Der Artikel schliesst mit ein
paar generellen Strategien für kleine und Nur-Lese-&os;
Umgebungen.</para>
<para><emphasis>Übersetzt von Benedict
Reuschling</emphasis>.</para>
</abstract>
</info>
<sect1 xml:id="intro">
<title>Solid State Festplattengeräte</title>
<para>Der Umfang des Artikels ist auf Solid State Geräte
beschränkt, die auf Flash-Speicher basieren. Flash-Speicher ist
ein Solid State Speicher (keine beweglichen Teile), der nicht
flüchtig ist (der Speicher behält die Daten sogar nachdem alle
Energiequellen ausgeschaltet wurden). Flash-Speicher kann
grossen physischen Schock aushalten und ist vergleichsweise
schnell (die Flash-Speicher Lösungen, die in diesem Artikel
behandelt werden, sind nur wenig langsamer als eine
EIDE-Festplatte in der Schreibgeschwindigkeit und viel schneller
bei Lese-Operationen). Ein sehr wichtiger Aspekt von
Flash-Speichern, dessen Auswirkungen später in diesem Artikel
diskutiert werden, ist, dass jeder Sektor eine begrenzte
Kapazität zur Wiederbeschreibung besitzt. Man kann nur eine
bestimmte Anzahl von Schreib-, Lösch- und
Wiederbeschreibungsvorgängen durchführen, bevor der Sektor
permanent unbrauchbar wird. Obwohl viele Flash-Speicher
Produkte automatisch schlechte Blöcke markieren und manche
Geräte Schreiboperationen gleichmässig verteilen, bleibt
weiterhin die Anzahl der durchführbaren Schreibvorgänge
begrenzt. Verschiedene Geräteeinheiten besitzen zwischen
1,000,000 und 10,000,000 Schreibzyklen pro Sektor in ihren
Spezifikationen. Diese Zahlen variieren aufgrund der
Umgebungstemperatur.</para>
<para>Im Speziellen werden wir ATA-kompatible Compact-Flash-Karten
betrachten, welche als Speichermedien für Digitalkameras
ziemlich populär sind. Von besonderem Interesse ist der
Umstand, dass diese direkt an den IDE-Bus angeschlossen werden
und kompatibel zu den ATA-Befehlen sind. Aus diesem Grund
können diese Geräte mit einem einfachen und billigen Adapter
direkt an den IDE-Bus eines Computers angeschlossen werden. Auf
diese Weise sehen Betriebssysteme wie &os; diese Geräte dann als
normale (wenn auch sehr kleine) Festplatten an.</para>
<para>Andere Solid State Plattenlösungen existieren, jedoch
platzieren deren Kosten, Obskurität und ihre Unhandlichkeit sie
aussserhalb des Umfangs dieses Artikels.</para>
</sect1>
<sect1 xml:id="kernel">
<title>Kerneloptionen</title>
<para>Ein paar Kerneloptionen sind von besonderem Interesse für
diejenigen, welche diese eingebetteten &os;-Systeme erstellen
möchten.</para>
<para>Alle eingebetteten &os;-Systeme, die Flash-Speicher als
Systemplatte verwenden, sind interessant für Dateisysteme im
Hauptspeicher und RAM-Disks. Wegen der begrenzten Anzahl von
Schreibzyklen, die auf Flash-Speicher durchgeführt werden
können, werden die Platte und die Dateisysteme darauf mit
grosser Wahrscheinlichkeit nur lesend eingehängt werden. In
dieser Umgebung werden Dateisysteme wie
<filename>/tmp</filename> und <filename>/var</filename> als
RAM-Disks eingebunden, um dem System zu erlauben, Logdateien
anzulegen und Zähler sowie temporäre Dateien zu aktualisieren.
RAM-Disks sind eine kritische Komponente für eine erfolgreiche
Solid State Umsetzung in &os;.</para>
<para>Sie sollten dafür sorgen, dass die folgenden Zeilen in Ihrer
Kernelkonfigurationsdatei vorhanden sind:</para>
<programlisting>options MFS # Memory Filesystem
options MD_ROOT # md device usable as a potential root device
pseudo-device md # memory disk</programlisting>
</sect1>
<sect1 xml:id="ro-fs">
<title>Die <literal>rc</literal>-Subsysteme und nur-Lese
Dateisysteme</title>
<para>Die Initialisierung nach dem Bootvorgang eines eingebetteten
&os;-Systems wird von <filename>/etc/rc.initdiskless</filename>
kontrolliert.</para>
<para><filename>/etc/rc.d/var</filename> hängt
<filename>/var</filename> als RAM-Disk ein, erstellt eine
konfigurierbare Liste von Verzeichnissen in
<filename>/var</filename> mittels des &man.mkdir.1;-Kommandos
und ändert die Attribute von ein paar dieser Verzeichnisse. Bei
der Ausführung von <filename>/etc/rc.d/var</filename> kommt eine
andere <filename>rc.conf</filename>-Variable ins Spiel:
<literal>varsize</literal>. Die Datei <filename>/etc/rc.d/var</filename>
erstellt eine <filename>/var</filename>-Partition basierend auf
dem Wert dieser Variable in <filename>rc.conf</filename>:</para>
<programlisting>varsize=8192</programlisting>
<para>Standardmässig wird dieser Wert in Sektoren
angegeben.</para>
<para>Der Fakt, dass es sich bei <filename>/var</filename> um ein
nur-Lese Dateisystem handelt, ist eine wichtige Unterscheidung,
da die <filename>/</filename>-Partition (und jede andere
Partition, die Sie auf Ihrem Flash-Medium haben) nur lesend
eingehängt wird. Erinnern Sie sich, dass in <xref linkend="intro"/> die Beschränkungen von Flash-Speichern
erläutert wurden, speziell deren begrenzte Kapazität zum
Schreiben. Die Notwendigkeit, Dateisysteme auf Flash-Speichern
nur lesend einzubinden und keine Swap-Dateien zu verwenden, kann
nicht oft genug erwähnt werden. Eine Swap-Datei auf einem
ausgelasteten System kann in weniger als einem Jahr den gesamten
Flash-Speicher aufbrauchen. Häufige Protokollierung oder das
Erstellen und Löschen von temporären Dateien kann das gleiche
verursachen. Aus diesem Grund sollten Sie zusätzlich zum
entfernen des <literal>swap</literal>-Eintrags aus ihrer
<filename>/etc/fstab</filename>-Datei auch noch die
Optionsfelder für jedes Dateisystem auf <literal>ro</literal>
wie folgt stellen:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1a / ufs ro 1 1</programlisting>
<para>Ein paar Anwendungen im normalen System werden sofort nach
dieser Änderung ausfallen. Beispielsweise wird Cron nicht
richtig funktionieren, aufgrund von fehlenden Cron-Tabellen in
<filename>/var</filename> die von
<filename>/etc/rc.d/var</filename> erstellt wurden. Syslog und
DHCP werden ebenfalls Probleme durch das nur-Lese Dateisystem
und fehlende Elemente im Verzeichnis <filename>/var</filename>
verursachen, die <filename>/etc/rc.d/var</filename> erstellt
hat. Diese Probleme sind jedoch nur vorübergehend und werden
zusammen mit Lösungen zur Ausführung von anderen gebräuchlichen
Softwarepaketen in <xref linkend="strategies"/>
angesprochen.</para>
<para>Eine wichtige Sache, an die man sich erinnern sollte, ist,
dass ein Dateisystem, welches als nur lesend in
<filename>/etc/fstab</filename> eingebunden wurde, jederzeit als
schreibend durch das folgende Kommando eingehängt werden
kann:</para>
<screen>&prompt.root; <userinput>/sbin/mount -uw partition</userinput></screen>
<para>und auch wieder zurück auf nur lesend durch den Befehl:</para>
<screen>&prompt.root; <userinput>/sbin/mount -ur partition</userinput></screen>
</sect1>
<sect1>
<title>Ein Dateisystem von Grund auf neu erstellen</title>
<para>Wenn ATA-kompatible Compact-Flash-Karten von &os; als
normale IDE-Festplatten erkannt werden, könnten Sie theoretisch
&os; aus dem Netzwerk mittels der Kern- und mfsroot-Floppies
oder einer CD installieren.</para>
<para>Jedoch kann selbst eine kleine Installation von &os; durch
die normale Installationsprozedur ein System erzeugen, dass
grösser als 200&nbsp;MB ist. Da die meisten Leute kleinere
Flash-Speichermedien einsetzen (128&nbsp;MB wird hier als gross
angesehen - 32 oder sogar 16&nbsp;MB sind gebräuchlich) ist eine
gewöhnliche Installation mit normalen Methoden nicht möglich, da
es einfach nicht genug freien Plattenplatz gibt, selbst für die
kleinste Installationsart.</para>
<para>Der einfachste Weg, diese Speicherlimitierung zu umgehen,
ist, &os; auf konventionelle Weise auf eine normale Festplatte
zu installieren. Nachdem die Installation abgeschlossen wurde,
kürzen Sie das Betriebssystem auf das nötigste, bis Sie eine
Grösse erreicht hat, die auf das Flash-Medium passt und benutzen
Sie dann tar auf dem gesamten Dateisystem. Die folgenden
Schritte werden Sie durch den Prozess der Vorbereitung eines
Flash-Mediums für ihr getartes Dateisystem führen. Beachten
Sie, dass Operationen wie Partitionierung, Benennung, Erstellung
von Dateisystemen, etc. von Hand durchgeführt werden müssen, da
eine normale Installation nicht möglich ist. Zusätzlich zu den
Kern- und mfsroot-Disketten benötigen Sie auch die
fixit-Floppy.</para>
<procedure>
<step>
<title>Partitionierung Ihrer Flash-Medien</title>
<para>Wählen Sie nach dem Starten der Kern- und
mfsroot-Disketten, <literal>custom</literal> aus dem
Installationsmenü. In diesem Menü wählen Sie dann
<literal>partition</literal> aus. Dort sollten Sie alle
bestehenden Partitionen mit Hilfe der Taste
<keycap>d</keycap> löschen. Nachdem alle bestehenden
Partitionen gelöscht wurden, erstellen Sie mittels der Taste
<keycap>c</keycap> eine Partition und akzeptieren Sie den
Standardwert für die Grösse der Partition. Wenn Sie nach
dem Typ der Partition gefragt werden, stellen Sie sicher,
dass der Wert auf <literal>165</literal> eingestellt ist.
Schreiben Sie jetzt diese Partitionstabelle auf die Platte
durch betätigen der Taste <keycap>w</keycap> (dies ist die
versteckte Option auf diesem Bildschirm). Wenn Sie eine
ATA-kompatible Compact Flash-Karte verwenden, sollten Sie
den &os; Bootmanager auswählen. Drücken Sie nun die Taste
<keycap>q</keycap>, um das Partitionsmenü zu verlassen. Sie
werden das Menü des Bootmanagers noch ein weiteres Mal
gezeigt bekommt. In diesem Fall wiederholen Sie die Auswahl
von vorher.</para>
</step>
<step>
<title>Anlegen von Dateisystemen auf Ihrem
Flashspeicher-Gerät</title>
<para>Verlassen Sie das Installationsmenü und wählen Sie aus
dem Hauptinstallationsmenü die Option
<literal>fixit</literal>. In der fixit-Umgebung angelangt,
geben Sie den folgenden Befehl ein:</para>
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
<para>Zu diesem Zeitpunkt sollten Sie sich im vi-Editor unter
der Herrschaft des disklabel-Kommandos befinden. Als
nächstes müssen Sie die eine <literal>a:</literal>-Zeile an
das Ende der Datei hinzufügen. Diese
<literal>a:</literal>-Zeile sollte wie folgt
aussehen:</para>
<programlisting>a: <replaceable>123456</replaceable> 0 4.2BSD 0 0</programlisting>
<para>Wobei <replaceable>123456</replaceable> eine Zahl
darstellt, die exakt der gleichen Zahl in der bestehenden
Zeile mit dem <literal>c:</literal>-Eintrag entspricht. Sie
kopieren quasi die bestehende Zeile <literal>c:</literal>
als eine neue Zeile <literal>a:</literal> und stellen
sicher, dass fstype <literal>4.2BSD</literal> entspricht.
Speichern Sie die Datei und verlassen Sie den Editor.</para>
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
</step>
<step>
<title>Schreiben des Dateisystems auf Ihr Flash-Medium</title>
<para>Hängen Sie das neu erstellte Flash-Medium ein:</para>
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
<para>Verbinden Sie diese Maschine mit dem Netzwerk, um die
tar-Datei zu übertragen und extrahieren Sie es auf das
Dateisystem des Flash-Mediums. Ein Beispiel dazu wäre
folgendes:</para>
<screen>&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput>
&prompt.root; <userinput>route add default 192.168.0.1</userinput></screen>
<para>Jetzt da die Maschine ans Netzwerk angeschlossen ist,
kopieren Sie die tar-Datei. An diesem Punkt werden Sie
möglicherweise mit einem Dilemma konfrontiert - sollte Ihr
Flash-Speicher beispielsweise 128&nbsp;MB gross sein und
Ihre tar-Datei grösser als 64&nbsp;MB, können Sie ihre
tar-Datei auf dem Flash-Speicher nicht entpacken - Ihnen
wird vorher der Speicherplatz ausgehen. Eine Lösung für
dieses Problem, sofern Sie FTP verwenden, ist, dass Sie die
Datei entpacken können, während es von FTP übertragen wird.
Wenn Sie die Übertragung auf diese Weise durchführen, haben
Sie niemals die tar-Datei und deren Inhalt zur gleichen Zeit
auf Ihrem Medium:</para>
<screen><prompt>ftp&gt;</prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput></screen>
<para>Sollte Ihre tar-Datei gezippt sein, können Sie dies
ebenso bewerkstelligen:</para>
<screen><prompt>ftp&gt;</prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput></screen>
<para>Nachdem der Inhalt Ihrer tar-Datei auf dem Dateisystem
des Flash-Mediums abgelegt wurden, können Sie den
Flash-Speicher aushängen und neu starten:</para>
<screen>&prompt.root; <userinput>cd /</userinput>
&prompt.root; <userinput>umount /flash</userinput>
&prompt.root; <userinput>exit</userinput></screen>
<para>In der Annahme, dass Sie Ihr Dateisystem richtig
konfiguriert haben, als es noch auf der gewöhnlichen
Festplatte gebaut wurde (mit Ihren Nur-Lese-Dateisystemen
und den nötigen Optionen im Kernel), sollten Sie nun
erfolgreich von Ihrem &os; Embedded-System starten
können.</para>
</step>
</procedure>
</sect1>
<sect1 xml:id="strategies">
<title>Systemstrategien für kleine und Nur-Lese-Umgebungen</title>
<para>In <xref linkend="ro-fs"/> wurde darauf hingewiesen, dass
das <filename>/var</filename>-Dateisystem von
<filename>/etc/rc.d/var</filename> konstruiert wurde und die
Präsenz eines Nur-Lese-Wurzeldateisystems Probleme mit vielen in
&os; gebrächlichen Softwarepaketen verursacht. In diesem
Artikel werden Vorschläge für das erfolgreiche Betreiben von
cron, syslog, Installationen von Ports und dem Apache-Webserver
unterbreitet.</para>
<sect2>
<title>cron</title>
<para>Während des Bootvorgangs wird <filename>/var</filename> von
<filename>/etc/rc.d/var</filename> anhand der Liste aus
<filename>/etc/mtree/BSD.var.dist</filename> gefüllt, damit
<filename>cron</filename>, <filename>cron/tabs</filename>, <filename>at</filename> und ein paar weitere
Standardverzeichnisse erstellt werden.</para>
<para>Jedoch löst das noch nicht das Problem, Crontabs über
Neustarts des Systems hinaus zu erhalten. Wenn das System neu
gestartet wird, verschwindet das
<filename>/var</filename>-Dateiystem, welches sich im
Hauptspeicher befunden hat und jegliche Crontabs, die Sie
hatten werden ebenfalls verschwinden. Aus diesem Grund besteht
eine Lösung darin, Crontabs für diejenigen Benutzer zu
erstellen, die diese auch benötigen. Dazu sollte das
<filename>/</filename>-Dateisystem lesend und schreibend
eingehängt und diese Crontabs an einen sicheren Ort kopiert
werden, wie beispielsweise <filename>/etc/tabs</filename>.
Fügen Sie dann eine Zeile an das Ende der Datei
<filename>/etc/rc.initdiskless</filename> hinzu, die diese
Crontabs in <filename>/var/cron/tabs</filename> kopiert,
nachdem dieses Verzeichnis während der Systeminitialisierung
erstellt wurde. Sie werden auch eine Zeile hinzufügen mössen,
welche die Besitzer und Berechtigungen auf diesen
Verzeichnissen, die Sie erstellen und den dazugehörigen
Dateien, die Sie mittels
<filename>/etc/rc.initdiskless</filename> kopieren,
setzen.</para>
</sect2>
<sect2>
<title>syslog</title>
<para>Die Datei <filename>syslog.conf</filename> spezifiziert
den Ort von bestimmten Logdateien, welche in
<filename>/var/log</filename> existieren. Diese Dateien
werden nicht von <filename>/etc/rc.d/var</filename> während
der Systeminitialisierung erstellt. Aus diesem Grund müssen
Sie irgendwo in <filename>/etc/rc.d/var</filename> nach dem
Abschnitt, der die Verzeichnisse in <filename>/var</filename>
erstellt, eine Zeile ähnlich der folgenden hinzufügen:</para>
<screen>&prompt.root; <userinput>touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages</userinput>
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput></screen>
</sect2>
<sect2>
<title>Installation von Ports</title>
<para>Bevor die notwendigen Änderungen erkärt werden, einen
Ports-Baum zu verwenden, ist es notwendig, Sie an die
Nur-Lese-Besonderheit Ihres Dateisystems auf dem Flash-Medium
zu erinnern. Da dieses nur lesend verfügbar ist, müssen Sie
es vorübergehend mit Schreibrechten ausstatten, indem Sie die
mount-Syntax, wie in <xref linkend="ro-fs"/> dargestellt wird,
verwenden. Sie sollten immer diese Dateisysteme erneut mit
nur-Lese-Rechten einhängen wenn Sie damit fertig sind -
unnötige Schreibvorgänge auf dem Flash-Medium kann dessen
Lebenszeit erheblich verkürzen.</para>
<para>Um es zu ermöglichen, in das Ports-Verzeichnis zu wechseln
und erfolgreich <command>make</command>
<buildtarget>install</buildtarget> auszuführen, müssen wir ein
Paketverzeichnis auf einem Nicht-Hauptspeicherdateisystem
erstellen, welches die Pakete über Neustarts hinweg im Auge
behält. Weil es sowieso nötig ist, Ihre Dateisysteme mit
Lese-Schreibrechten für die Installation eines Pakets
einzuhängen, ist es sinnvoll anzunehmen, dass ein Bereich
Ihres Flash-Mediums ebenfalls für Paketinformationen, die
darauf abgespeichert werden, verwendet wird.</para>
<para>Erstellen Sie zuerst ein Verzeichnis für die
Paketdatenbank. Normalerweise ist dies
<filename>/var/db/pkg</filename>, jedoch können wir es dort
nicht unterbringen, da es jedesmal verschwinden wird, wenn das
System neu gestartet wird.</para>
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
<para>Fügen Sie nun eine Zeile in
<filename>/etc/rc.d/var</filename> hinzu, welche das
<filename>/etc/pkg</filename>-Verzeichnis mit
<filename>/var/db/pkg</filename> verknüpft. Ein
Beispiel:</para>
<screen>&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput></screen>
<para>Nun wird jedes Mal, wenn Sie Ihre Dateisysteme mit
Lese-Schreibrechten einbinden und ein Paket installieren, der
Befehl <command>make</command>
<buildtarget>install</buildtarget> funktionieren und
Paketinformationen werden erfolgreich nach
<filename>/etc/pkg</filename> geschrieben (da zu diesem
Zeitpunkt das Dateisystem mit Lese-Schreibrechten eingebunden
ist), welche dann stets dem Betriebssystem als
<filename>/var/db/pkg</filename> zur Verfügung stehen.</para>
</sect2>
<sect2>
<title>Apache Webserver</title>
<note>
<para>Die Anweisungen in diesem Abschnitt sind nur notwendig,
wenn Apache so eingerichtet ist, dass dieser seine PID oder
Protokollierungsinformationen ausserhalb von <filename>/var</filename> ablegt. Standardmässig
bewahrt Apache seine PID-Datei in <filename>/var/run/httpd.pid</filename> und seine
Protokolldateien in <filename>/var/log</filename> auf.</para>
</note>
<para>Es wird nun davon ausgegangen, dass Apache seine
Protokolldateien in einem Verzeichnis namens <filename>apache_log_dir</filename>
ausserhalb von <filename>/var</filename>
speichert. Wenn dieses Verzeichnis auf einem
nur-Lese-Dateisystem existiert, wird Apache nicht in der Lage
sein, Protokolldateien zu speichern und wird vermutlich nicht
richtig funktionieren. Wenn dies der Fall ist, muss ein neues
Verzeichnis zu der Liste der Verzeichnisse in
<filename>/etc/rc.d/var</filename> hinzugefügt werden, um
dieses in <filename>/var</filename> zu erstellen und um
<filename>apache_log_dir</filename>
nach <filename>/var/log/apache</filename> zu verknüpfen. Es
ist auch nötig, Berechtigungen und Besitzer auf diesem neuen
Verzeichnis zu setzen.</para>
<para>Fügen Sie zuerst das Verzeichnis
<literal>log/apache</literal> zu der Liste von Verzeichnissen
hinzu, die in <filename>/etc/rc.d/var</filename> angelegt
werden sollen.</para>
<para>Danach tragen Sie die folgenden Befehle in
<filename>/etc/rc.d/var</filename> nach dem Abschnitt zum
Erstellen der Verzeichnisse ein:</para>
<screen>&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput>
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput></screen>
<para>Schliesslich löschen Sie das bestehende <filename>apache_log_dir</filename>
Verzeichnis und ersetzen es mit einer Verknüpfung:</para>
<screen>&prompt.root; <userinput>rm -rf apache_log_dir</userinput>
&prompt.root; <userinput>ln -s /var/log/apache apache_log_dir</userinput></screen>
</sect2>
</sect1>
</article>

View file

@ -1,18 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/Makefile,v 1.7 2009/02/10 11:36:13 jkois Exp $
#
SUBDIR= developers-handbook
SUBDIR+= faq
SUBDIR+= fdp-primer
SUBDIR+= handbook
SUBDIR+= porters-handbook
ROOT_SYMLINKS= handbook
DOC_PREFIX?= ${.CURDIR}/../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,10 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/Makefile.inc,v 1.8 2002/04/12 05:57:24 mheinen Exp $
# basiert auf: 1.4
#
DESTDIR?= ${DOCDIR}/de_DE.ISO8859-1/books/${.CURDIR:T}

View file

@ -1,47 +0,0 @@
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/developers-handbook/Makefile,v 1.3 2009/02/21 19:12:23 jkois Exp $
# basiert auf: 1.24
#
# Build the FreeBSD Developers' Handbook.
#
MAINTAINER=doc@FreeBSD.org
DOC?= book
FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# Images
IMAGES_EN= sockets/layers.eps sockets/sain.eps sockets/sainfill.eps sockets/sainlsb.eps sockets/sainmsb.eps sockets/sainserv.eps sockets/serv.eps sockets/serv2.eps sockets/slayers.eps
#
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# XML content
SRCS= book.xml
SRCS+= introduction/chapter.xml
SRCS+= ipv6/chapter.xml
SRCS+= kernelbuild/chapter.xml
SRCS+= kerneldebug/chapter.xml
SRCS+= l10n/chapter.xml
SRCS+= policies/chapter.xml
SRCS+= secure/chapter.xml
SRCS+= sockets/chapter.xml
SRCS+= testing/chapter.xml
SRCS+= tools/chapter.xml
SRCS+= x86/chapter.xml
# Entities
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,228 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY % chapters SYSTEM "chapters.ent"> %chapters;
]>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/book.xml,v 1.15 2010/12/18 13:28:29 jkois Exp $
basiert auf: 1.58
-->
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>FreeBSD Developers' Handbook</title>
<author><orgname>The FreeBSD Documentation Project</orgname></author>
<pubdate>August 2000</pubdate>
<copyright>
<year>2000</year>
<year>2001</year>
<year>2002</year>
<year>2003</year>
<year>2004</year>
<year>2005</year>
<year>2006</year>
<year>2007</year>
<year>2008</year>
<year>2009</year>
<year>2010</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<copyright>
<year>2008</year>
<year>2009</year>
<year>2010</year>
<holder>The FreeBSD German Documentation Project</holder>
</copyright>
&legalnotice;
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.apple;
&tm-attrib.ibm;
&tm-attrib.ieee;
&tm-attrib.intel;
&tm-attrib.linux;
&tm-attrib.microsoft;
&tm-attrib.opengroup;
&tm-attrib.sun;
&tm-attrib.general;
</legalnotice>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Willkommen zum Entwickler-Handbuch. Dieses Handbuch ist
<emphasis>jederzeit unter Bearbeitung</emphasis> und das
Ergebnis der Arbeit vieler Einzelpersonen. Dies kann dazu
führen, dass bestimmte Bereiche nicht mehr aktuell sind
und auf den neuesten Stand gebracht werden müssen. Bei
Unklarheiten empfiehlt es sich daher stets, auch die <link xlink:href="&url.base;/doc/en_US.ISO8859-1/books/developers-handbook/index.html">
englische Originalversion</link> des Handbuchs zu
lesen.</para>
<para>Wenn Sie bei der Übersetzung dieses Handbuchs
mithelfen möchten, senden Sie bitte eine E-Mail an die
Mailingliste &a.de.translators;.</para>
<para>Die aktuelle Version dieses Handbuchs ist immer auf dem
<link xlink:href="http://www.FreeBSD.org/">&os;-Webserver</link>
verfügbar und kann in verschiedenen Formaten und in
komprimierter Form vom <link xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc">&os;-FTP-Server</link>
oder einem der zahlreichen <link xlink:href="&url.base;/doc/de_DE.ISO8859-1/books/handbook/mirrors-ftp.html">Spiegel</link>
heruntergeladen werden (ältere Versionen finden Sie
hingegen unter <uri xlink:href="http://docs.FreeBSD.org/doc/">http://docs.FreeBSD.org/doc/</uri>).</para>
</abstract>
</info>
<part xml:id="Basics">
<title>Grundlagen</title>
&chap.introduction;
&chap.tools;
&chap.secure;
&chap.l10n;
&chap.policies;
&chap.testing;
</part>
<part xml:id="ipc">
<title>Interprozess-Kommunikation</title>
&chap.sockets;
&chap.ipv6;
</part>
<part xml:id="kernel">
<title>Kernel</title>
&chap.kernelbuild;
&chap.kerneldebug;
</part>
<part xml:id="architectures">
<title>Architekturen</title>
&chap.x86;
</part>
<part xml:id="appendices">
<title>Anhang</title>
<bibliography>
<biblioentry xml:id="COD" xreflabel="1">
<authorgroup>
<author><personname><firstname>Dave</firstname><othername role="MI">A</othername><surname>Patterson</surname></personname></author>
<author><personname><firstname>John</firstname><othername role="MI">L</othername><surname>Hennessy</surname></personname></author>
</authorgroup>
<copyright>
<year>1998</year>
<holder>Morgan Kaufmann Publishers, Inc.</holder>
</copyright>
<biblioid class="isbn">1-55860-428-6</biblioid>
<publisher>
<publishername>Morgan Kaufmann Publishers,
Inc.</publishername>
</publisher>
<citetitle>Computer Organization and Design</citetitle>
<subtitle>The Hardware / Software Interface</subtitle>
<pagenums>1-2</pagenums>
</biblioentry>
<biblioentry xreflabel="2">
<authorgroup>
<author><personname><firstname>W.</firstname><othername role="Middle">Richard</othername><surname>Stevens</surname></personname></author>
</authorgroup>
<copyright>
<year>1993</year>
<holder>Addison Wesley Longman, Inc.</holder>
</copyright>
<biblioid class="isbn">0-201-56317-7</biblioid>
<publisher>
<publishername>Addison Wesley Longman, Inc.</publishername>
</publisher>
<citetitle>Advanced Programming in the Unix Environment</citetitle>
<pagenums>1-2</pagenums>
</biblioentry>
<biblioentry xreflabel="3">
<authorgroup>
<author><personname><firstname>Marshall</firstname><othername role="Middle">Kirk</othername><surname>McKusick</surname></personname></author>
<author><personname><firstname>George</firstname><surname>Neville-Neil</surname></personname></author>
</authorgroup>
<copyright>
<year>2004</year>
<holder>Addison-Wesley Publishing Company, Inc.</holder>
</copyright>
<biblioid class="isbn">0-201-70245-2</biblioid>
<publisher>
<publishername>Addison-Wesley</publishername>
</publisher>
<citetitle>The Design and Implementation of the &os; Operating
System</citetitle>
<pagenums>1-2</pagenums>
</biblioentry>
<biblioentry xml:id="Phrack" xreflabel="4">
<authorgroup>
<author><personname><firstname>Aleph</firstname><surname>One</surname></personname></author>
</authorgroup>
<citetitle>Phrack 49; "Smashing the Stack for Fun and
Profit"</citetitle>
</biblioentry>
<biblioentry xml:id="StackGuard" xreflabel="5">
<authorgroup>
<author><personname><firstname>Chrispin</firstname><surname>Cowan</surname></personname></author>
<author><personname><firstname>Calton</firstname><surname>Pu</surname></personname></author>
<author><personname><firstname>Dave</firstname><surname>Maier</surname></personname></author>
</authorgroup>
<citetitle>StackGuard; Automatic Adaptive Detection and Prevention
of Buffer-Overflow Attacks</citetitle>
</biblioentry>
<biblioentry xml:id="OpenBSD" xreflabel="6">
<authorgroup>
<author><personname><firstname>Todd</firstname><surname>Miller</surname></personname></author>
<author><personname><firstname>Theo</firstname><surname>de Raadt</surname></personname></author>
</authorgroup>
<citetitle>strlcpy and strlcat -- consistent, safe string copy and
concatenation.</citetitle>
</biblioentry>
</bibliography>
</part>
&chap.index;
</book>

View file

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
Creates entities for each chapter in the FreeBSD Developer's
Handbook. Each entity is named chap.foo, where foo is the value
of the id attribute on that chapter, and corresponds to the name of
the directory in which that chapter's .xml file is stored.
Chapters should be listed in the order in which they are referenced.
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/chapters.ent,v 1.3 2009/02/21 19:12:23 jkois Exp $
basiert auf: 1.23
-->
<!-- Part one -->
<!ENTITY chap.introduction SYSTEM "introduction/chapter.xml">
<!ENTITY chap.tools SYSTEM "tools/chapter.xml">
<!ENTITY chap.secure SYSTEM "secure/chapter.xml">
<!ENTITY chap.l10n SYSTEM "l10n/chapter.xml">
<!ENTITY chap.policies SYSTEM "policies/chapter.xml">
<!ENTITY chap.testing SYSTEM "testing/chapter.xml">
<!-- Part two - IPC -->
<!ENTITY chap.sockets SYSTEM "sockets/chapter.xml">
<!ENTITY chap.ipv6 SYSTEM "ipv6/chapter.xml">
<!-- Part three - Kernel -->
<!ENTITY chap.kernelbuild SYSTEM "kernelbuild/chapter.xml">
<!ENTITY chap.kerneldebug SYSTEM "kerneldebug/chapter.xml">
<!-- Part five - Architectures -->
<!ENTITY chap.x86 SYSTEM "x86/chapter.xml">
<!-- Part six - Appendices -->
<!ENTITY chap.index "<index xmlns='http://docbook.org/ns/docbook'/>">

View file

@ -1,241 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/introduction/chapter.xml,v 1.12 2012/04/22 20:07:16 bcr Exp $
basiert auf: 1.21
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="introduction">
<info><title>Einführung</title>
<authorgroup>
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Beigetragen von </contrib></author>
<author><personname><firstname>Jeroen</firstname><surname>Ruigrok van der Werven</surname></personname></author>
</authorgroup>
<authorgroup>
<author><personname><firstname>Fabian</firstname><surname>Borschel</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="introduction-devel">
<title>Unter FreeBSD entwickeln</title>
<para>Hier sind wir also. Ihr System ist vollständig
installiert und Sie wollen mit dem Programmieren beginnen.
Aber womit sollen Sie anfangen? Was bietet Ihnen FreeBSD?
Was kann es für einen Programmierer tun?</para>
<para>Dies sind einige der Fragen, welche dieses Handbuch
zu beantworten versucht. Natürlich gibt es, analog zu
anderen Berufen, auch bei Programmierern unterschiedliche
Leistungsniveaus. Für die einen ist es ein Hobby,
für die anderen ist es der Beruf. Die Informationen
in diesem Kapitel dürften eher für den
Programmieranfänger geeignet sein; allerdings könnte
es auch für Programmierer, die bisher nichts mit der
&os;-Plattform zu tun hatten, interessante Informationen
enthalten.</para>
</sect1>
<sect1 xml:id="introduction-bsdvision">
<title>Die Vision von BSD</title>
<para>Ziel ist es, das bestmögliche &unix;-artige
Betriebssystempaket zu erstellen, mit dem gebührenden
Respekt gegenüber der Ideologie der ursprünglichen
Software, sowie der Bedienbarkeit, Leistungsfähigkeit und
Stabilität.</para>
</sect1>
<sect1 xml:id="introduction-archguide">
<title>Grundlegende Richtlinien</title>
<para>Unsere Ideologie kann durch die folgenden Leitfäden
beschrieben werden.</para>
<itemizedlist>
<listitem>
<para>Füge keine neue Funktionalität hinzu, solange
ein Programmierer diese nicht zur Fertigstellung einer
realen Anwendung benötigt.</para>
</listitem>
<listitem>
<para>Zu entscheiden, was ein System ist, ist genauso
wichtig wie zu entscheiden, was ein System nicht ist.
Versuchen Sie nicht, alle möglichen Wünsche zu
erfüllen; machen Sie lieber das System erweiterbar, so
dass zusätzliche Bedürfnisse in einer
aufwärtskompatiblen Weise bedient werden
können.</para>
</listitem>
<listitem>
<para>Das Einzige, das schlimmer ist, als von einem Beispiel
auf die Allgemeinheit zu schließen, ist, von
überhaupt keinem Beispiel auf die Allgemeinheit zu
schließen.</para>
</listitem>
<listitem>
<para>Solange ein Problem nicht vollständig verstanden
wurde, ist es besser, keine Lösung
bereitzustellen.</para>
</listitem>
<listitem>
<para>Wenn Sie 90% des gewünschten Effektes bei nur 10%
des Aufwands erreichen können, sollten Sie besser die
einfachere Lösung verwenden.</para>
</listitem>
<listitem>
<para>Grenzen Sie Komplexität so gut wie möglich
ein.</para>
</listitem>
<listitem>
<para>Stellen Sie Mechanismen anstelle von Strategien bereit.
Überlassen Sie insbesondere Strategien für die
Benutzerschnittstelle dem Benutzerprogramm.</para>
</listitem>
</itemizedlist>
<para>Aus Scheifler &amp; Gettys: "X Window System"</para>
</sect1>
<sect1 xml:id="introduction-layout">
<title>Der Aufbau von
<filename>/usr/src</filename></title>
<para>Der vollständige Quelltext von FreeBSD ist über
unser öffentliches Repository verfügbar. Der
Quelltext wird normalerweise in <filename>/usr/src</filename> abgelegt und enthält
die folgenden Unterverzeichnisse:</para>
<para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Verzeichnis</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>bin/</filename></entry>
<entry>Quelldateien für Dateien in
<filename>/bin</filename></entry>
</row>
<row>
<entry><filename>cddl/</filename></entry>
<entry>Quelldateien für Programme, die unter
der Common Development and Distribution License
stehen</entry>
</row>
<row>
<entry><filename>contrib/</filename></entry>
<entry>Quelldateien für Dateien von beigesteuerter
Software</entry>
</row>
<row>
<entry><filename>crypto/</filename></entry>
<entry>Quelldateien für die Kryptographie</entry>
</row>
<row>
<entry><filename>etc/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/etc</filename></entry>
</row>
<row>
<entry><filename>games/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/games</filename></entry>
</row>
<row>
<entry><filename>gnu/</filename></entry>
<entry>Programme, die unter der GNU Public License
stehen</entry>
</row>
<row>
<entry><filename>include/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/include</filename></entry>
</row>
<row>
<entry><filename>kerberos5/</filename></entry>
<entry>Quelldateien für Kerberos Version 5</entry>
</row>
<row>
<entry><filename>lib/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/lib</filename></entry>
</row>
<row>
<entry><filename>libexec/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/libexec</filename></entry>
</row>
<row>
<entry><filename>release/</filename></entry>
<entry>Dateien, die für die Erstellung eines
FreeBSD-Releases nötig sind</entry>
</row>
<row>
<entry><filename>rescue/</filename></entry>
<entry>Bausystem für die <filename>/rescue</filename>-Programme</entry>
</row>
<row>
<entry><filename>sbin/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/sbin</filename></entry>
</row>
<row>
<entry><filename>secure/</filename></entry>
<entry>Quelldateien für FreeSec</entry>
</row>
<row>
<entry><filename>share/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/share</filename></entry>
</row>
<row>
<entry><filename>sys/</filename></entry>
<entry>Kernel-Quelldateien</entry>
</row>
<row>
<entry><filename>tools/</filename></entry>
<entry>Programme zum Verwalten und Testen von
FreeBSD</entry>
</row>
<row>
<entry><filename>usr.bin/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/bin</filename></entry>
</row>
<row>
<entry><filename>usr.sbin/</filename></entry>
<entry>Quelldateien für Dateien in <filename>/usr/sbin</filename></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect1>
</chapter>

File diff suppressed because it is too large Load diff

View file

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/kernelbuild/chapter.xml,v 1.5 2009/02/21 19:22:07 jkois Exp $
basiert auf: 1.3
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="kernelbuild">
<info><title>Einen &os;-Kernel bauen und installieren</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Ein Kernelentwickler muss wissen, wie der Bau eines angepassten
Kernels funktioniert, da das Debuggen des &os;-Kernels nur durch den
Bau eines neuen Kernels möglich ist. Es gibt zwei Wege, einen
angepassten Kernel zu bauen:</para>
<itemizedlist>
<listitem>
<para>Den <quote>traditionellen</quote> Weg</para>
</listitem>
<listitem>
<para>Den <quote>neuen</quote> Weg</para>
</listitem>
</itemizedlist>
<note>
<para>Die folgenden Ausführungen setzen voraus, dass Sie
den Abschnitt <link xlink:href="../handbook/kernelconfig-building.html">
Erstellen und Installation eines angepassten Kernels</link> des
FreeBSD-Handbuchs gelesen haben und daher wissen, wie man einen
FreeBSD-Kernel baut.</para>
</note>
<sect1 xml:id="kernelbuild-traditional">
<title>Einen Kernel auf die <quote>traditionelle</quote> Art und
Weise bauen</title>
<para>Bis &os;&nbsp;4.X wurde dieser Weg zum Bau eines angepassten
Kernels empfohlen. Sie können Ihren Kernel nach wie vor
auf diese Art und Weise bauen (anstatt das Target
<quote>buildkernel</quote> der Makefiles im Verzeichnis
<filename>/usr/src/</filename> zu verwenden).
Dies kann beispielsweise sinnvoll sein, wenn Sie am
Kernel-Quellcode arbeiten. Haben Sie nur ein oder zwei Optionen
der Kernelkonfigurationsdatei geändert, ist dieser Weg in
der Regel schneller als der <quote>neue</quote> Weg.
Andererseits kann es aber auch zu unerwarteten Fehlern beim
Bau des Kernels kommen, wenn Sie Ihren Kernel unter aktuellen
&os;-Versionen auf diese Art und Weise bauen.</para>
<procedure>
<step>
<para>Erzeugen Sie den Kernel-Quellcode mit
&man.config.8;:</para>
<screen>&prompt.root; <userinput>/usr/sbin/config MYKERNEL</userinput></screen>
</step>
<step>
<para>Wechseln Sie in das Build-Verzeichnis. &man.config.8;
gibt den Namen dieses Verzeichnisses aus, wenn die Erzeugung
des Kernel-Quellcodes im vorherigen Schritt erfolgreich
abgeschlossen wurde.</para>
<screen>&prompt.root; <userinput>cd ../compile/MYKERNEL</userinput></screen>
</step>
<step>
<para>Kompilieren Sie den neuen Kernel:</para>
<screen>&prompt.root; <userinput>make depend</userinput>
&prompt.root; <userinput>make</userinput></screen>
</step>
<step>
<para>Installieren Sie den neuen Kernel:</para>
<screen>&prompt.root; <userinput>make install</userinput></screen>
</step>
</procedure>
</sect1>
<sect1 xml:id="kernelbuild-new">
<title>Einen Kernel auf die <quote>neue</quote> Art und Weise
bauen</title>
<para>Dieser Weg wird für alle aktuellen &os;-Versionen
empfohlen. Lesen Sie bitte den Abschnitt <link xlink:href="../handbook/kernelconfig-building.html">Erstellen und
Installation eines angepassten Kernels</link> des
&os;-Handbuchs, wenn Sie Ihren Kernel auf diese Art und Weise
bauen wollen.</para>
</sect1>
</chapter>

View file

@ -1,19 +0,0 @@
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/developers-handbook/kerneldebug/Makefile,v 1.2 2007/08/31 06:13:09 as Exp $
# basiert auf: 1.1
#
CHAPTERS= kerneldebug/chapter.xml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -1,378 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/l10n/chapter.xml,v 1.15 2010/12/15 19:03:51 bcr Exp $
basiert auf: 1.14
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="l10n">
<info><title>Lokalisierung und Internationalisierung - L10N und
I18N</title>
<authorgroup>
<author><personname><firstname>Jochen</firstname><surname>Neumeister</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="l10n-programming">
<title>I18N-konforme Anwendungen programmieren</title>
<indexterm><primary>Qt</primary></indexterm>
<indexterm><primary>GTK</primary></indexterm>
<para>Um Ihre Anwendung verwendbarer für andere
Sprachen zu machen, hoffen wir, dass Sie I18N-konform
programmieren. Der GNU gcc-Compiler und Bibliotheken
für grafische Benutzeroberflächen wie QT und GTK
unterstützen I18N durch eine spezielle Verarbeitung von
Zeichenketten. Das Erstellen eines I18N-konformen Programms
ist sehr einfach und erlaubt anderen Mitwirkenden, Ihre
Programme leichter in andere Sprachen zu übersetzen.
Lesen Sie die Bibliothek-spezifischen I18N-Dokumentationen
für weitere Details.</para>
<para>Im Gegensatz zur allgemeinen Meinung ist I18N-konformer
Code einfach zu programmieren. Üblicherweise umfasst
dies nur das Einbetten Ihrer Zeichenketten in
Bibliothek-spezifische Funktionen. Stellen Sie außerdem
bitte sicher, dass Sie Unterstützung für Unicode- und
Multibyte-Zeichen vorsehen.</para>
<sect2>
<title>Ein Aufruf, die I18N-Bemühungen zu
vereinheitlichen</title>
<para>Wir sind darauf aufmerksam geworden, dass die
einzelnen I18N-/L10N-Bemühungen für jedes Land
wiederholt wurden. Viele von uns haben somit unproduktiverweise
das Rad immer wieder neu erfunden. Wir hoffen, dass die
verschiedenen großen Gruppen für I18N Ihre
Bemühungen in einer Gruppe vereinen können,
ähnlich der Zuständigkeit des Core-Teams.</para>
<para>Derzeit hoffen wir, dass wenn Sie I18N-konforme
Programme schreiben oder portieren, diese an die
betreffenden FreeBSD-Mailinglisten jedes Landes schicken, um
sie testen zu lassen. Wir hoffen in Zukunft, Anwendungen zu
entwickeln, die in allen Sprachen direkt und ohne unsaubere
Änderungen funktionieren.</para>
<para>Die &a.i18n;-Mailingliste ist eingerichtet worden. Wenn
Sie I18N-/L10N-Entwickler sind, schicken Sie bitte Ihre
Kommentare, Ideen, Fragen und alles, das Sie mit dem Thema in
Verbindung bringen, dorthin.</para>
</sect2>
<sect2>
<title>Perl und Python</title>
<indexterm>
<primary>Perl</primary>
</indexterm>
<indexterm>
<primary>Python</primary>
</indexterm>
<para>Perl und Python bieten Bibliotheken für I18N und zur
Behandlung von Unicode-Zeichen. Bitte nutzen Sie diese
für I18N-Konformität.</para>
</sect2>
</sect1>
<sect1 xml:id="posix-nls">
<info><title>Lokalisierte Nachrichten mit POSIX.1 Native Language
Support (NLS)</title>
<authorgroup>
<author><personname><firstname>G&aacute;bor</firstname><surname>Kövesd&aacute;n</surname></personname><contrib>Beigetragen von </contrib></author>
</authorgroup>
</info>
<para>Über die Basisfunktionen von I18N hinaus, wie das Bereitstellen
von verschiedenen Eingabecodierungen oder die diversen nationalen
Konventionen, zum Beispiel die verschiedenen Dezimalpunkte, ist es
auf einem höheren Level von I18N möglich, die Ausgabe
von Programmen zu lokalisieren. Ein Weg dies zu tun besteht in der
Nutzung der POSIX.1 NLS-Funktionen von &os;.</para>
<sect2 xml:id="nls-catalogs">
<title>Organisation von lokalisierten Mitteilungen in Katalog
Dateien</title>
<para>POSIX.1 NLS basiert auf Katalogdateien, welche die lokalisierten
Mitteilungen in der entsprechenden Codierung enthalten. Die
Mitteilungen sind in Sets organisiert und jede Mitteilung ist
durch eine eindeutige Zahl in dem jeweiligen Set identifiziert.
Die Katalogdateien werden nach der Lokale, von den jeweiligen
lokalisierten Mitteilungen, die sie enthalten, gefolgt von der
<literal>.msg</literal> Endung benannt. Zum Beispiel werden die
ungarischen Mitteilungen für das ISO8859-2 Encoding in
einer Datei mit dem Dateinamen <filename>hu_HU.ISO8859-2</filename>
gespeichert.</para>
<para>Diese Katalogdateien sind normale Textdateien, welche die
nummerierten Mitteilungen enthalten. Es ist möglich
Kommentare in die Dateien zu schreiben, indem Sie ein
<literal>$</literal>-Zeichen an den Anfang der Zeile setzen.
Das Setzen von Grenzen wird ebenfalls durch spezielle Kommentare
möglich wobei das Schlüsselwort <literal>set</literal>
direkt nach dem <literal>$</literal>-Zeichen folgen muss. Dem
Schlüsselwort <literal>set</literal> folgt dann die Set-Nummer.
Ein Beispiel:</para>
<programlisting>$set 1</programlisting>
<para>Der aktuelle Mitteilungseintrag startet mit der
Mitteilungsnummer gefolgt von der lokalisierten Nachricht. Die
bekannten Modifikatoren von &man.printf.3; werden akzeptiert:</para>
<programlisting>15 "File not found: %s\n"</programlisting>
<para>Die Katalogdateien müssen in binärer Form vorliegen,
bevor sie von einem Programm benutzt werden können. Dies wird
mit dem &man.gencat.1; Tool durchgeführt. Das erste Argument
ist der Dateiname des kompilierten Katalogs und die weiteren
Argumente sind die Eingabekataloge. Die lokalisierten
Mitteilungen können auf mehrere Katalogdateien aufgeteilt
sein. Danach werden dann alle auf einmal mit dem &man.gencat.1;
Tool kompiliert.</para>
</sect2>
<sect2 xml:id="nls-using">
<title>Nutzung der Katalogdateien im Quellcode</title>
<para>Das Benutzen der Katalogdateien ist einfach. Um die
relevante Funktion zu nutzen, muss <filename>nl_types.h</filename> in die Quelldatei
eingefügt werden. Bevor ein Katalog benutzt werden
kann, muss er mit &man.catopen.3; geöffnet werden.
Die Funktion hat 2 Argumente. Der erste Parameter ist der
Name des installierten und kompilierten Katalogs. Normalerweise
wird der Name des Programmes, zum Beispiel
<application>grep</application>, genutzt. Dieser Name wird
zum Suchen der kompilierten Katalogdatei benutzt. Der Aufruf
von &man.catopen.3; sucht nach dieser Datei in <filename>/usr/share/nls/locale/catname</filename>
und in <filename>/usr/local/share/nls/locale/catname</filename>,
wobei <literal>locale</literal> die gesetzte Lokale und
<literal>catname</literal> der Katalogname ist. Der zweite
Parameter ist eine Konstante, die zwei Werte haben kann:</para>
<itemizedlist>
<listitem>
<para><literal>NL_CAT_LOCALE</literal>, hat die Bedeutung,
dass die benutzte Katalogdatei auf
<envar>LC_MESSAGES</envar> basiert.</para>
</listitem>
<listitem>
<para><literal>0</literal>, hat die Bedeutung, dass
<envar>LANG</envar> benutzt wird, um die Katalogdatei
zu öffnen.
</para>
</listitem>
</itemizedlist>
<para>Der &man.catopen.3; Aufruf gibt einen Katalogidentifizierer
vom Type <literal>nl_catd</literal> zurück. Sehen Sie in der
Manualpage nach, um eine Liste mit möglichen Fehlercodes
zu erhalten.</para>
<para>Nach dem Öffnen eines Katalogs, kann &man.catgets.3;
benutzt werden, um Mitteilungen zu erhalten. Der erste
Parameter ist der Katalogidentifizierer, der von
&man.catopen.3; zurück gegeben wurde, das zweite ist die
Nummer des Sets, das dritte die Nummer der Mitteilung und das
vierte ist eine Fallbackmitteilung, die angezeigt wird,
falls die gewünschte Mitteilung in der Katalogdatei
nicht verfügbar ist.</para>
<para>Nach der Nutzung der Katalogdatei, muss sie mit dem
Kommando &man.catclose.3;, geschlossen werden. Es besitzt
ein Argument, die Katalog ID.</para>
</sect2>
<sect2 xml:id="nls-example">
<title>Ein Beispiel aus der Praxis</title>
<para>Das folgende Beispiel zeigt einen einfachen Weg wie man
NLS-Kataloge flexibel nutzen kann.</para>
<para>Die nachfolgenden Zeilen müssen in eine allgemeine
Headerdatei, die in allen Quelldateien vorhanden ist, die
lokalisierte Mitteilungen benutzen, eingefügt werden:</para>
<programlisting>
#ifdef WITHOUT_NLS
#define getstr(n) nlsstr[n]
#else
#include &lt;nl_types.h&gt;
extern nl_catd catalog;
#define getstr(n) catgets(catalog, 1, n, nlsstr[n])
#endif
extern char *nlsstr[];
</programlisting>
<para>Als nächstes fügen Sie die folgenden Zeilen
in den globalen Deklarationsteil der Hauptquelldatei ein:</para>
<programlisting>
#ifndef WITHOUT_NLS
#include &lt;nl_types.h&gt;
nl_catd catalog;
#endif
/*
* Default messages to use when NLS is disabled or no catalog
* is found.
*/
char *nlsstr[] = {
"",
/* 1*/ "some random message",
/* 2*/ "some other message"
};
</programlisting>
<para>Als nächstes kommt der Code der den Katalog
öffnet, liest und schließt:</para>
<programlisting>
#ifndef WITHOUT_NLS
catalog = catopen("myapp", NL_CAT_LOCALE);
#endif
...
printf(getstr(1));
...
#ifndef WITHOUT_NLS
catclose(catalog);
#endif
</programlisting>
<sect3>
<title>Reduzierung von zu lokalisierenden Zeichenketten</title>
<para>Es gibt einen guten Weg, Zeichenketten die lokaliesert
werden müssen, durch den Einsatz von
<application>libc</application>-Fehlermeldungen zu reduzieren.
Dadurch vermeidet man Duplikate und erstellt gleiche Meldungen
für häufige Fehlermeldungen, die bei vielen
Programmen auftreten können.</para>
<para>Als erstes ist hier ein Beispiel, dass keine
<application>libc</application>-Fehlermeldungen benutzt:</para>
<programlisting>
#include &lt;err.h&gt;
...
if (!S_ISDIR(st.st_mode))
err(1, "argument is not a directory");
</programlisting>
<para>Dies kann so abgeändert werden, dass eine
Fehlermeldung durch Auslesen der Variabel <varname>errno</varname>
ausgegeben wird. Die Fehlermeldung wird entsprechend dem Beispiel
ausgegeben:</para>
<programlisting>
#include &lt;err.h&gt;
#include &lt;errno.h&gt;
...
if (!S_ISDIR(st.st_mode)) {
errno = ENOTDIR;
err(1, NULL);
}
</programlisting>
<para>In diesem Beispiel wurde die benutzerdefinierte
Zeichenkette entfernt. Übersetzer haben weniger Arbeit,
wenn sie ein Programm lokalisieren und die Benutzer sehen die
übliche <quote>&quot;Not a directory&quot;</quote>
Fehlermeldung, wenn dieser Fehler auftritt. Diese Meldung wird
ihnen wahrscheinlich vertraut erscheinen. Bitte beachten Sie,
dass es notwendig ist,
<filename>errno.h</filename>
hinzuzufügen um einen direkten Zugriff auf
<varname>errno</varname> zu haben.</para>
<para>Es lohnt sich darauf hinzuweisen, dass es Fälle gibt,
in denen <varname>errno</varname> automatisch aufgerufen wird,
so dass es nicht notwendig ist, es explizit zu tun:</para>
<programlisting>
#include &lt;err.h&gt;
...
if ((p = malloc(size)) == NULL)
err(1, NULL);
</programlisting>
</sect3>
</sect2>
<sect2 xml:id="nls-mk">
<title>Benutzung von <filename>bsd.nls.mk</filename></title>
<para>Das Benutzen von Katalogdateien setzt einige sich
wiederholende Schritte, wie das kompilieren und installieren
der Kataloge, voraus. Um diese Schritte zu vereinfachen,
stellt <filename>bsd.nls.mk</filename> einige Makros zur
Verfügung. Es ist nicht notwendig
<filename>bsd.nls.mk</filename> explizit hinein zu kopieren,
es wird automatisch aus den allgemeinen Makefiles wie
<filename>bsd.prog.mk</filename> oder
<filename>bsd.lib.mk</filename> gezogen.</para>
<para>Normalerweise reicht es, <varname>NLSNAME</varname> zu
definieren, die den Namen des Kataloges als erstes
Argument von &man.catopen.3; enthalten sollte und die
Katalogdateien in <varname>NLS</varname> ohne ihre Endung
<literal>.msg</literal> auflistet. Hier ist ein Beispiel, das
es ermöglicht, NLS mit dem obigen Code zu deaktivieren.
Die <varname>WITHOUT_NLS</varname> Variable von &man.make.1;
muss so definiert werden, dass das Programm ohne
NLS-Unterstützung gebaut wird.</para>
<programlisting>
.if !defined(WITHOUT_NLS)
NLS= es_ES.ISO8859-1
NLS+= hu_HU.ISO8859-2
NLS+= pt_BR.ISO8859-1
.else
CFLAGS+= -DWITHOUT_NLS
.endif
</programlisting>
<para>Normalerweise werden die Katalogdateien in dem
<filename>nls</filename>-Unterverzeichnis
abgelegt. Dies ist der Standard von
<filename>bsd.nls.mk</filename>. Es ist möglich, mit der
<varname>NLSSRCDIR</varname>-Variablen von &man.make.1; diese zu
überschreiben. Der Standardname der vorkompilierten
Katalogdateien folgt den Namenskonventionen, wie oben beschrieben.
Er kann durch die <varname>NLSNAME</varname>-Variablen
überschrieben werden. Es gibt noch weitere Optionen, um
eine Feinabstimmung zur Verarbeitung der Katalogdateien
zu erreichen. Da sie nicht notwendig sind, werden sie hier
nicht weiter beschrieben. Weitere Informationen über
<filename>bsd.nls.mk</filename> finden Sie in der Datei selbst.
Der Text ist kurz und leicht zu verstehen.</para>
</sect2>
</sect1>
</chapter>

View file

@ -1,17 +0,0 @@
#
# Build the Handbook with just the content from this chapter.
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/developers-handbook/policies/Makefile,v 1.2 2009/02/14 22:12:52 miwi Exp $
# basiert auf: 1.1
#
CHAPTERS= policies/chapter.xml
VPATH= ..
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
DOC_PREFIX?= ${.CURDIR}/../../../..
.include "../Makefile"

View file

@ -1,759 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/policies/chapter.xml,v 1.14 2011/12/24 13:42:24 bcr Exp $
basiert auf: 1.38
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="policies">
<info><title>Vorgaben und Richtlinien für das
Quelltextverzeichnis</title>
<authorgroup>
<author><personname><firstname>Poul-Henning</firstname><surname>Kamp</surname></personname><contrib>Beigesteuert von </contrib></author>
<author><personname><firstname>Giorgos</firstname><surname>Keramidas</surname></personname></author>
</authorgroup>
<authorgroup>
<author><personname><firstname>Axel</firstname><surname>Gruner</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Dieses Kapitel dokumentiert verschiedene Vorgaben und
Richtlinien für das FreeBSD-Quelltextverzeichnis.</para>
<sect1 xml:id="policies-style">
<title>Stil-Richtlinien</title>
<indexterm><primary>style</primary></indexterm>
<para>Ein konsistenter Code-Stil ist extrem wichtig, besonders
in einem so grossen Projekt wie &os;. Der Code sollte dem
&os; Code-Stil entsprechen, welcher in &man.style.9; und
&man.style.Makefile.5; genauer beschrieben ist.</para>
</sect1>
<sect1 xml:id="policies-maintainer">
<title><varname>MAINTAINER</varname> eines Makefiles</title>
<indexterm><primary>Ports-Maintainer</primary></indexterm>
<para>Wenn ein bestimmter Bereich der &os;
<filename>src/</filename>-Distribution von einer Person oder Gruppe
gepflegt wird, kann dies durch einen Eintrag in die Datei
<filename>src/MAINTAINERS</filename> der Öffentlichkeit
mitgeteilt werden. Maintainer eines Ports in der Ports-Sammlung
können ihre Verantwortung über den Port durch einen Eintrag in
die <varname>MAINTAINER</varname>-Zeile im <filename>Makefile</filename>
des Ports der Welt mitteilen.</para>
<programlisting><varname>MAINTAINER</varname>= <replaceable>email-addresses</replaceable></programlisting>
<tip>
<para>Für andere Teile des Repositories oder andere Abschnitte, die
noch keinen Maintainer aufweisen, oder falls Sie sich nicht sicher
sind, wer der Maintainer ist, sehen Sie sich die Commit-Historie des
betreffenden Ports an. Es ist recht häufig der Fall, dass ein
Maintainer nicht explizit aufgeführt ist, aber trotzdem diejenigen
Personen, die den Port seit den letzten paar Jahren aktiv betreuen,
daran interessiert sind, Änderungen zu begutachten. Selbst wenn
dies nicht explizit in der Dokumentation oder im Quellcode erwähnt
ist, wird es trotzdem als höfliche Geste angesehen, wenn man
nach einer Überprüfung der eigenen Änderungen
fragt.</para>
</tip>
<para>Die Rolle eines Maintainers ist die folgende:</para>
<itemizedlist>
<listitem>
<para>Der Maintainer ist verantwortlich für diesen Code. Er
oder sie muss einerseits für die Behebung von Fehlern und das
Beantworten von Problemberichten für diesen Code die
Verantwortung tragen und andererseits, falls es sich um beigesteuerte
Software handelt, neue Versionen verfolgen und bereitstellen.</para>
</listitem>
<listitem>
<para>Änderungen an Verzeichnissen, die ein Maintainer definiert
hat, sollten an den Maintainer für eine Überprüfung
gesendet werden, bevor diese committet werden. Nur wenn der
Maintainer in einer inakzeptablen Zeitspanne auf mehrere E-Mails
nicht antwortet, können die Änderungen, die mit dem Commit
in Kraft treten, auch ohne Überprüfung durch den Maintainer
vollzogen werden. Dennoch wird empfohlen, dass die Änderungen,
falls möglich, von jemand anderem überprüft
werden.</para>
</listitem>
<listitem>
<para>Es ist natü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>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="policies-contributed">
<info><title>Beigesteuerte Software</title>
<authorgroup>
<author><personname><firstname>Poul-Henning</firstname><surname>Kamp</surname></personname><contrib>Beigesteuert von </contrib></author>
<author><personname><firstname>David</firstname><surname>O'Brien</surname></personname></author>
<author><personname><firstname>Gavin</firstname><surname>Atkinson</surname></personname></author>
</authorgroup>
</info>
<indexterm><primary>Beigesteuerte Software</primary></indexterm>
<para>Einige Teile der FreeBSD-Distribution enthalten Software,
die aktiv außerhalb des FreeBSD-Projektes gepflegt wird.
Aus historischen Gründen nennen wir dies
<emphasis>contributed</emphasis> Software. Beispiele dafür
sind <application>sendmail</application>,
<application>gcc</application> und
<application>patch</application>.</para>
<para>Ü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 ü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ähert, da es signifikante Vorteile gegenüber der
alten Methode gibt. Dazu gehört auch, dass jeder
einfach Diffs bezüglich der
<quote>offiziellen</quote> Quelltext-Versionen erzeugen kann
(auch ohne direkten Repository-Zugang). Dies wird es deutlich
vereinfachen, Änderungen an die Hauptentwickler
zurückfließen zu lassen.</para>
<para>Letztendlich kommt es jedoch auf die Menschen an, welche die
Arbeit leisten. Wenn die Durchführung dieses Modells bei
einem Paket mal nicht möglich ist, können Ausnahmen
dieser Regeln nur mit Genehmigung des Core-Teams und der
Übereinstimmung der anderen Entwickler gewährt werden.
Die Fähigkeit, dieses Paket auch in Zukunft pflegen zu
können, ist eine der Schlüsselfragen bei dieser
Entscheidung.</para>
<note>
<para>Durch einige bedauernswerte Einschränkungen des <acronym role="Revision Control System">RCS</acronym>-Dateiformats und die
Handhabung von Herstellerzweigen ist von unwesentlichen, trivialen
und/oder kosmetischen Ä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 vermieden
werden. Das Repository kann sich durch Änderungen einzelner
Zeichen dramatisch aufblähen.</para>
</note>
<sect2 xml:id="vendor-imports-cvs">
<title>Herstellerimports mit CVS</title>
<para>Das <application>file</application>-Werkzeug soll als Beispiel
dienen, wie dieses Modell funktioniert:</para>
<para><filename>src/contrib/file</filename> enthält den
Quelltext so, wie vom Maintainer dieses Pakets bereitgestellt.
Teile, die unter &os; gänzlich unnutzbar sind, können entfernt
werden. Im Fall von &man.file.1; wurde u.a. das Unterverzeichnis
<filename>python</filename> und Dateien mit dem Präfix
<filename>lt</filename> vor dem Import entfernt.</para>
<para><filename>src/lib/libmagic</filename> enthä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/file</filename> enthält ein
<filename>Makefile</filename> im <application>bmake</application>-Stil,
welches das <command>file</command>-Programm erstellt und installiert,
ebenso die dazugehörigen Manualpages, welche die Regeln von
<filename>bsd.prog.mk</filename> nutzen.</para>
<para>Das Entscheidende ist hier das
<filename>src/contrib/file</filename>-Verzeichnis, welches nach
den folgenden Regeln erstellt wird: Es muss den
Quelltext aus dem Original enthalten (ohne
<acronym>RCS</acronym>-Schlüsselworte und im korrekten
Herstellerzweig) mit so wenig FreeBSD-spezifischen Änderungen wie
möglich. Sollte es Zweifel geben, wie hier zu verfahren
ist, unbedingt zuerst nachfragen und nicht auf gut Glück etwas
probieren in der vagen Hoffnung, dass es
<quote>irgendwie funktioniert</quote>.</para>
<para>Aufgrund der eingangs schon erwähnten Einschränkungen
bei Herstellerzweigen ist es erforderlich, dass <quote>offizielle</quote>
Fehlerbehebungen vom Hersteller in die Originalquellen der Distribution
einfließ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ören würde und der Import
von zukünftigen Versionen wäre um ein Vielfaches
schwerer, da es zu Konflikten kommen würde.</para>
<para>Da einige Pakete Dateien enthalten, die zur
Kompatibilität mit anderen Architekturen und Umgebungen
als FreeBSD gedacht sind, ist es zulässig, diese Teile zu
löschen, wenn sie fü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öscht werden.</para>
<para>Falls es einfacher erscheint, kö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ür zukünftige Maintainer
verfügbar ist.</para>
<para>Im Verzeichnis <filename>src/contrib/file</filename> sollte
eine Datei mit dem Namen <filename>FREEBSD-upgrade</filename>
hinzugefü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önnen.</para>
</listitem>
<listitem>
<para>Möglicherweise eine Übersicht, welche
FreeBSD-spezifischen Änderungen vorgenommen
wurden.</para>
</listitem>
</itemizedlist>
<para>Ein Beispielinhalt von
<filename>src/contrib/groff/FREEBSD-upgrade</filename> ist hier
aufgelistet:</para>
<programlisting>&dollar;FreeBSD: src/contrib/groff/FREEBSD-upgrade,v 1.5.12.1 2005/11/15 22:06:18 ru Exp $
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.
To upgrade to a newer version of groff, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Use the command:
cvs import -m 'Virgin import of FSF groff v&lt;version&gt;' \
src/contrib/groff FSF v&lt;version&gt;
For example, to do the import of version 1.19.2, I typed:
cvs import -m 'Virgin import of FSF groff v1.19.2' \
src/contrib/groff FSF v1_19_2
3. Follow the instructions printed out in step 2 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 groff, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the FSF branch.
All local changes should be submitted to Werner Lemberg &lt;wl@gnu.org&gt; or
Ted Harding &lt;ted.harding@nessie.mcc.ac.uk&gt; for inclusion in the next
vendor release.
ru@FreeBSD.org - 20 October 2005</programlisting>
<para>Eine weitere Möglichkeit ist es, eine Liste von Dateien, die
nicht enthalten sein sollen zu pflegen, was besonders dann sehr hilfreich
sein kann, wenn die Liste ziemlich gross oder kompliziert ist bzw.
Imports sehr häufig stattfinden. Durch erstellen einer Datei namens
<filename>FREEBSD-Xlist</filename> im gleichen Verzeichnis, in welches
das Herstellerverzeichnis importiert werden soll, die eine Liste von
auszuschliessenden Dateinamen-Mustern pro Zeile enthält, können
zukünftige Imports folgendermassen durchgeführt werden:</para>
<screen>&prompt.user; <userinput>tar -X FREEBSD-Xlist -xzf vendor-source.tgz</userinput></screen>
<para>Als Beispiel einer <filename>FREEBSD-Xlist</filename>-Datei wird
hier diejenige von <filename>src/contrib/tcsh</filename> gezeigt:</para>
<programlisting>*/BUGS
*/config/a*
*/config/bs2000
*/config/bsd
*/config/bsdreno
*/config/[c-z]*
*/tests
*/win32</programlisting>
<note>
<para>Bitte importieren Sie weder <filename>FREEBSD-upgrade</filename>
noch <filename>FREEBSD-Xlist</filename> mit den beigesteuerten
Quellen. Stattdessen sollten Sie diese Dateien nach dem initialen
Import hinzufügen.</para>
</note>
</sect2>
<sect2 xml:id="vendor-import-svn">
<info><title>Herstellerimports mit SVN</title>
<authorgroup>
<author><personname><firstname>Dag-Erling</firstname><surname>Sm&oslash;rgrav</surname></personname><contrib>Beigetragen von </contrib></author>
</authorgroup>
</info>
<para>Dieser Abschnitt beschreibt die Prozedur für Herstellerimports
mit <application>Subversion</application> im Detail.</para>
<procedure>
<step>
<title>Vorbereiten des Quellbaums</title>
<para>Wenn dies Ihr erster Import nach dem Wechsel zu
<acronym>SVN</acronym> ist, sollen Sie den Herstellerbaum
aufräumen, verflachen und die Merge-Historie in den Hauptzweig
vorbereiten. Falls das nicht Ihr erster Import ist, können
Sie diesen Schritt ohne Probleme überspringen.</para>
<para>Während der Konvertierung von <acronym>CVS</acronym> zu
<acronym>SVN</acronym> wurden Herstellerzweige mit der gleichen
Struktur wie der Hauptzweig importiert. Beispielsweise wurden die
<application>foo</application> Herstellerquellen in
<filename>vendor/foo/dist/contrib/foo</filename>
abgelegt, jedoch ist dies unpraktisch und zwecklos. Was wir wirklich
wollen, ist dass die Herstellerquellen direkt in
<filename>vendor/foo/dist</filename>
liegen, beispielsweise so:</para>
<screen>&prompt.user; <userinput>cd vendor/foo/dist/contrib/foo</userinput>
&prompt.user; <userinput>svn move $(svn list) ../..</userinput>
&prompt.user; <userinput>cd ../..</userinput>
&prompt.user; <userinput>svn remove contrib</userinput>
&prompt.user; <userinput>svn propdel -R svn:mergeinfo</userinput>
&prompt.user; <userinput>svn commit</userinput></screen>
<para>Beachten Sie, dass das <literal>propdel</literal>-Bit notwendig
ist, da mit Subversion 1.5 automatisch
<literal>svn:mergeinfo</literal> zu jedem Verzeichnis
hinzugefügt wird, das Sie kopieren oder verschieben. In diesem
Fall brauchen Sie diese Informationen nicht, da Sie nichts in den
Zweig mergen werden, den Sie gelöscht haben.</para>
<note>
<para>Sie werden wahrscheinlich die Tags genauso verflachen wollen.
Die Prozedur dafür ist die selbe. Wenn Sie dies tun, sollten
Sie den Commit bis zum Schluss aufschieben.</para>
</note>
<para>Prüfen Sie den <filename>dist</filename>-Baum und
führen Sie alle nötigen Aufräumarbeiten durch, die Sie
für sinnvoll erachten. Sie werden möglicherweise die
Erweiterung von Schlüsselwörtern deaktivieren wollen, da
dies auf unmodifizierten Quellen keinen Sinn ergibt. In machen
Fällen kann dies sogar schädlich sein.</para>
<screen>&prompt.user; <userinput>svn propdel svn:keywords -R .</userinput>
&prompt.user; <userinput>svn commit</userinput></screen>
<para>Bootstrappen der <literal>svn:mergeinfo</literal> auf dem
Zielverzeichnis (des Hauptzweiges) auf die Revision die mit der
letzten Änderung, die im Herstellerzweig vor dem Import der
neuen Quellen durchgeführt wurde, korrespondiert, wird ebenso
benötigt:</para>
<screen>&prompt.user; <userinput>cd head/contrib/foo</userinput>
&prompt.user; <userinput>svn merge --record-only svn_base/vendor/foo/dist@12345678 .</userinput>
&prompt.user; <userinput>svn commit</userinput></screen>
<para>Dabei entspricht <replaceable>svn_base</replaceable> dem
Basisverzeichnis Ihres <acronym>SVN</acronym>-Repositories, z.B.
<literal>svn+ssh://svn.FreeBSD.org/base</literal>.</para>
</step>
<step>
<title>Neue Quellen importieren</title>
<para>Bereiten Sie einen kompletten, sauberen Baum mit
Herstellerquellen vor. Mit <acronym>SVN</acronym> können wir
eine komplette Distribution in dem Herstellerzweig aufbewahren, ohne
den Hauptzweig aufzublähen. Importieren Sie alles, aber mergen
Sie nur das, was wirklich benötigt wird.</para>
<para>Beachten Sie, dass Sie alle Dateien, die seit dem letzten
Herstellerimport hinzugefügt wurden, auch einbeziehen und
diejenigen, welche entfernt wurden, auch löschen
müssen. Um dies zu bewerkstelligen, sollten Sie sortierte
Listen der Bestandteile des Herstellerbaums und von den Quellen,
Sie die vorhaben zu importieren, vorbereiten:</para>
<screen>&prompt.user; <userinput>cd vendor/foo/dist</userinput>
&prompt.user; <userinput>svn list -R | grep -v '/$' | sort &gt; ../old</userinput>
&prompt.user; <userinput>cd ../foo-9.9</userinput>
&prompt.user; <userinput>find . -type f | cut -c 3- | sort &gt; ../new</userinput></screen>
<para>Mit diesen beiden Dateien, wird Ihnen das folgende Kommando alle
Dateien auflisten, die entfernt wurden (nur die Dateien in
<filename>old</filename>):</para>
<screen>&prompt.user; <userinput>comm -23 ../old ../new</userinput></screen>
<para>Der folgende Befehl wird die hinzugefügten Dateien auflisten
(nur diejenigen Dateien in
<filename>new</filename>):</para>
<screen>&prompt.user; <userinput>comm -13 ../old ../new</userinput></screen>
<para>Wir führen dies nun zusammen:</para>
<screen>&prompt.user; <userinput>cd vendor/foo/foo-9.9</userinput>
&prompt.user; <userinput>tar cf - . | tar xf - -C ../dist</userinput>
&prompt.user; <userinput>cd ../dist</userinput>
&prompt.user; <userinput>comm -23 ../old ../new | xargs svn remove</userinput>
&prompt.user; <userinput>comm -13 ../old ../new | xargs svn add</userinput></screen>
<warning>
<para>Wenn in der neuen Version neue Verzeichnisse hinzugekommen
sind, wird dieser letzte Befehl fehlschlagen. Sie müssen
diese Verzeichnisse hinzufügen und anschliessend den Befehl
erneut ausführen. Genauso müssen Sie Verzeichnisse, die
entfernt wurden, händisch löschen.</para>
</warning>
<para>Prüfen Sie die Eigenschaften jeder neuen Datei:</para>
<itemizedlist>
<listitem>
<para>Alle Textdateien sollten <literal>svn:eol-style</literal> auf
den Wert <literal>native</literal> gesetzt haben.</para>
</listitem>
<listitem>
<para>Alle Binärdateien sollten
<literal>svn:mime-type</literal> auf
<literal>application/octet-stream</literal> gesetzt haben,
ausser es existiert ein passenderer Medientyp.</para>
</listitem>
<listitem>
<para>Ausführbare Dateien sollten
<literal>svn:executable</literal> auf <literal>*</literal>
gesetzt haben.</para>
</listitem>
<listitem>
<para>Es sollten keine anderen Eigenschaften auf den Dateien im
Baum gesetzt sein.</para>
</listitem>
</itemizedlist>
<note>
<para>Sie sind bereit, zu committen, jedoch sollten Sie zuerst die
Ausgabe von <command>svn stat</command> und <command>svn
diff</command> überprüfen, um sicher zu gehen, dass alles
in Ordnung ist.</para>
</note>
<para>Sobald Sie den die neue Release-Version des Herstellers
committed haben, sollten Sie Ihn für zukünftige Referenzen
taggen. Die beste und schnellste Methode ist, dies direkt im
Repository zu tun:</para>
<screen>&prompt.user; <userinput>svn copy svn_base/vendor/foo/dist svn_base/vendor/foo/9.9</userinput></screen>
<para>Um den neuen Tag zu bekommen, brauchen Sie nur ihre Arbeitskopie
von <filename>vendor/foo</filename> zu
aktualisieren.</para>
<note>
<para>Wenn Sie lieber die Kopie in der ausgecheckten Kopie
durchführen wollen, vergessen Sie nicht, die generierte
<literal>svn:mergeinfo</literal> wie oben beschrieben zu
entfernen.</para>
</note>
</step>
<step>
<title>Mit <emphasis>-HEAD</emphasis> mergen</title>
<para>Nachdem Sie Ihren Import vorbereitet haben, wird es Zeit zu
mergen. Die Option <option>--accept=postpone</option> weist
<acronym>SVN</acronym> an, noch keine merge-Konflikte
aufzulösen, weil wir uns um diese manuell kümmern
werden:</para>
<screen>&prompt.user; <userinput>cd head/contrib/foo</userinput>
&prompt.user; <userinput>svn update</userinput>
&prompt.user; <userinput>svn merge --accept=postpone svn_base/vendor/foo/dist</userinput></screen>
<para>Lösen Sie die Konflikte und stellen Sie sicher, dass alle
Dateien, die im Herstellerzweig hinzugefügt oder entfernt
wurden, auch sauber im Hauptzweig hinzugefügt bzw. gelöscht
wurden. Es ist immer ratsam, diese Unterschiede gegen den
Herstellerbaum zu prüfen:</para>
<screen>&prompt.user; <userinput>svn diff --no-diff-deleted --old=svn_base/vendor/foo/dist --new=.</userinput></screen>
<para>Die Option <option>--no-diff-deleted</option> weist
<acronym>SVN</acronym> an, keine Dateien zu prüfen, die sich
zwar im Herstellerbaum, aber nicht im Hauptzweig befinden.</para>
<note>
<para>Bei <acronym>SVN</acronym> gibt es das Konzept von innerhalb
und ausserhalb des Herstellerbaums nicht. Wenn eine Datei, die
zuvor eine lokale Änderung hatte, aber nun keine mehr
besitzt, entfernen Sie einfach das was übrig ist, wie &os;
Versionstags, damit diese nicht länger in den diffs gegen
den Herstellerbaum erscheinen.</para>
</note>
<para>Wenn irgendwelche Änderungen notwendig sind, um die Welt
mit den neuen Quellen zu bauen, machen Sie diese jetzt und testen
Sie diese bis Sie sicher sind, dass alles korrekt gebaut wird und
richtig funktionert.</para>
</step>
<step>
<title>Commit</title>
<para>Nun sind Sie bereit für den Commit. Stellen Sie sicher,
dass Sie alles in einem einzigen Schritt durchführen.
Idealerweise sollten Sie alle diese Schritte in einem sauberen Baum
durchgeführt haben. Falls dies der Fall ist, können Sie
einfach aus dem obersten Verzeichnis dieses Baums committen. Dies
ist der beste Weg, um Überraschungen zu vermeiden. Wenn Sie
dies korrekt durchführen, wird der Baum atomar von einem
konsistenten Zustand mit dem alten Code in einen neuen konsistenten
Zustand mit dem neuen Code überführt.</para>
</step>
</procedure>
</sect2>
</sect1>
<sect1 xml:id="policies-encumbered">
<title>Belastende Dateien</title>
<para>Es kann gelegentlich notwendig sein, belastende Dateien
in den FreeBSD-Quelltextbaum zu integrieren. Braucht ein
Gerät zum Beispiel ein Stück binären Code, der
zuerst geladen werden muss, bevor das Gerät funktioniert,
und wir haben keine Quellen zu diesem Code, dann wird die
binä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ü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är-Daten
enthä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 <link xlink:href="&url.base;/administration.html#t-core">Core-Team</link>,
bevor diese in das 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ück
aufbewahrt werden. Es gibt keinen Grund, dieses zu teilen,
außer es gibt einen Code-Austausch mit Quelltext, der
nicht belastend ist.</para>
</listitem>
<listitem>
<para>Objekt-Dateien werden wie folgt benannt:
<filename>arch/filename.o.uu&gt;</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 <link xlink:href="&url.base;/administration.html#t-core">Core-Team</link>
je nach Fall, ob es
auskommentiert wird oder nicht. Das <link xlink:href="&url.base;/administration.html#t-core">Core-Team</link>
kann sich zu einem spä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 <link xlink:href="&url.base;/administration.html#t-core">Core-Team</link>
entscheidet, ob der Code von
<command>make world</command> gebaut wird oder nicht.</para>
</listitem>
<listitem>
<indexterm><primary>Release-Engineer</primary></indexterm>
<para>Der <link xlink:href="&url.base;/administration.html#t-re">Release-Engineer</link>
entscheidet, ob es in das Release
aufgenommen wird oder nicht.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</sect1>
<sect1 xml:id="policies-shlib">
<info><title>Shared-Libraries</title>
<authorgroup>
<author><personname><firstname>Satoshi</firstname><surname>Asami</surname></personname><contrib>Beigesteuert von </contrib></author>
<author><personname><firstname>Peter</firstname><surname>Wemm</surname></personname></author>
<author><personname><firstname>David</firstname><surname>O'Brien</surname></personname></author>
</authorgroup>
</info>
<para>Sollten Sie die Unterstützung für
Shared-Libraries bei einem Port oder einem Stück Software,
das dies nicht hat, hinzufü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ä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 Änderung, die
abwärtskompatibel ist, so springen Sie zur
nächsten Minor-Version (beachten Sie, dass ELF-Systeme
die Minor-Version ignorieren).</para>
</listitem>
<listitem>
<para>Gibt es eine inkompatible Änderung, so springen
Sie bitte zur nächsten Major-Version.</para>
</listitem>
</itemizedlist>
<para>Zum Beispiel wird beim Hinzufügen von Funktionen und
oder Fehlerbehebungen zur nächsten Minor-Version
gesprungen, beim Löschen einer Funktion, Ändern
von Funktionsaufrufen usw. ä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ö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ö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öchste
verfügbare Nummer)</replaceable> beginnt.</para>
<note>
<para><command>ld.so</command> wird immer die höchste
<quote>Minor</quote>-Revision benutzen. Beispielsweise wird
es die <filename>libc.so.2.2</filename> bevorzugen
gegenüber der <filename>libc.so.2.0</filename>, auch
dann, wenn das Programm ursprü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ür nicht-Port-Bibliotheken lautet die Richtlinie,
die Shared-Library-Versionsnummer nur einmal zwischen den
Releases zu ändern. Weiterhin ist es vorgeschrieben, die
Major-Version der Shared-Libraries nur bei Major-OS-Releases zu
ändern (beispielsweise von 6.0 auf 7.0). Wenn Sie also eine
Änderung an einer Systembibliothek vornehmen, die eine neue
Versionsnummer benötigt, überprüfen Sie die
Commit-Logs des <filename>Makefile</filename>s. Es liegt in der
Verantwortung des Committers, dass sich eine erste solche
Änderung seit dem letzten Release in der aktualisierten
Versionsnummer der Shared-Library im
<filename>Makefile</filename> äußert, folgende
Änderungen werden nicht berücksichtigt.</para>
</sect1>
</chapter>

View file

@ -1,627 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/secure/chapter.xml,v 1.16 2010/12/18 13:28:29 jkois Exp $
basiert auf: 1.30
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="secure">
<info><title>Sicheres Programmieren</title>
<authorgroup>
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Contributed by </contrib></author>
</authorgroup>
<authorgroup>
<author><personname><firstname>Hagen</firstname><surname>Kühl</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="secure-synopsis">
<title>Zusammenfassung</title>
<para>Dieses Kapitel beschreibt einige Sicherheitsprobleme, die
&unix;-Programmierer seit Jahrzehnten quälen, und
inzwischen verfügbare Werkzeuge, die Programmierern helfen,
Sicherheitslücken in ihrem Quelltext zu vermeiden.</para>
</sect1>
<sect1 xml:id="secure-philosophy">
<title>Methoden des sicheren Entwurfs</title>
<para>Sichere Anwendungen zu schreiben erfordert eine sehr
skeptische und pessimistische Lebenseinstellung. Anwendungen
sollten nach dem Prinzip der <quote>geringsten
Privilegien</quote> ausgeführt werden, sodass kein Prozess
mit mehr als dem absoluten Minimum an Zugriffsrechten arbeitet,
die er zum Erfüllen seiner Aufgabe benötigt. Wo es
möglich ist, sollte Quelltext, der bereits
überprüft wurde, wiederverwendet werden, um
häufige Fehler, die andere schon korrigiert haben, zu
vermeiden.</para>
<para>Eine der Stolperfallen der &unix;-Umgebung ist, dass es
sehr einfach ist Annahmen über die Konsistenz der Umgebung
zu machen. Anwendungen sollten Nutzereingaben (in allen Formen)
niemals trauen, genauso wenig wie den System-Ressourcen,
der Inter-Prozess-Kommunikation oder dem zeitlichen Ablauf von
Ereignissen. &unix;-Prozesse arbeiten nicht synchron. Daher sind
logische Operationen selten atomar.</para>
</sect1>
<sect1 xml:id="secure-bufferov">
<title>Puffer-Überläufe</title>
<para>Puffer-Überläufe gibt es schon seit den
Anfängen der Von-Neuman-Architektur <xref linkend="COD"/>.
<indexterm><primary>Puffer-Überlauf</primary></indexterm>
<indexterm><primary>Von-Neuman</primary></indexterm>
Sie erlangten zum ersten Mal durch den Internetwurm Morris im
Jahre 1988 öffentliche Bekanntheit. Unglücklicherweise
<indexterm><primary>Morris Internetwurm</primary></indexterm>
funktioniert der gleiche grundlegende Angriff noch heute. Die bei weitem
häufigste Form eines Puffer-Überlauf-Angriffs basiert darauf,
den Stack zu korrumpieren.</para>
<indexterm><primary>Stack</primary></indexterm>
<indexterm><primary>Arguments</primary></indexterm>
<para>Die meisten modernen Computer-Systeme verwenden einen
Stack, um Argumente an Prozeduren zu übergeben und
lokale Variablen zu speichern. Ein Stack ist ein
last-in-first-out-Puffer (LIFO) im hohen Speicherbereich
eines Prozesses. Wenn ein Programm eine Funktion
<indexterm><primary>LIFO</primary></indexterm>
<indexterm>
<primary>Prozessabbild</primary>
<secondary>Stack-Pointer</secondary>
</indexterm>
aufruft wird ein neuer "Stackframe" erzeugt. Dieser besteht aus
den Argumenten, die der Funktion übergeben wurden und
einem variabel grossem Bereich für lokale Variablen. Der
"Stack-Pointer" ist ein Register, dass die
<indexterm><primary>Stack-Frame</primary></indexterm>
<indexterm><primary>Stack-Pointer</primary></indexterm>
aktuelle Adresse der Stack-Spitze enthält.
Da sich dieser Wert oft ändert, wenn neue Werte
auf dem Stack abgelegt werden, bieten viele Implementierungen
einen "Frame-Pointer", der nahe am Anfang des Stack-Frames
liegt und es so leichter macht lokale Variablen relativ zum
aktuellen Stackframe zu adressieren. <xref linkend="COD"/>
Die Rücksprungadresse
<indexterm><primary>Frame-Pointer</primary></indexterm>
<indexterm>
<primary>Prozessabbild</primary>
<secondary>Frame-Pointer</secondary>
</indexterm>
<indexterm><primary>Rücksprungadresse</primary></indexterm>
<indexterm><primary>Stack-Überlauf</primary></indexterm>
der Funktionen werden ebenfalls auf dem Stack
gespeichert und das ist der Grund für
Stack-Überlauf-Exploits. Denn ein böswilliger Nutzer
kann die Rücksprungadresse der Funktion überschreiben
indem er eine lokale Variable in der Funktion
überlaufen lässt, wodurch es ihm möglich ist
beliebigen Code auszuführen.</para>
<para>Obwohl Stack-basierte Angriffe bei weitem die
Häufigsten sind, ist es auch möglich den Stack mit
einem Heap-basierten (malloc/free) Angriff zu
überschreiben.</para>
<para>Die C-Programmiersprache führt keine automatischen
Bereichsüberprüfungen bei Feldern oder Zeigern durch, wie
viele andere Sprachen das tun. Außerdem enthält
die C-Standardbibliothek eine Handvoll sehr
gefährlicher Funktionen.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<tbody>
<row>
<entry><function>strcpy</function>(char *dest, const
char *src)</entry>
<entry><simpara>Kann den Puffer dest überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>strcat</function>(char *dest, const
char *src)</entry>
<entry><simpara>Kann den Puffer dest überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>getwd</function>(char *buf)</entry>
<entry><simpara>Kann den Puffer buf überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>gets</function>(char *s)</entry>
<entry><simpara>Kann den Puffer s überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>[vf]scanf</function>(const char
*format, ...)</entry>
<entry><simpara>Kann sein Argument überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>realpath</function>(char *path,
char resolved_path[])</entry>
<entry><simpara>Kann den Puffer path überlaufen
lassen</simpara></entry>
</row>
<row>
<entry><function>[v]sprintf</function>(char *str,
const char *format, ...)</entry>
<entry><simpara>Kann den Puffer str überlaufen
lassen</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<sect2>
<title>Puffer-Überlauf Beispiel</title>
<para>Das folgende Quellcode-Beispiel enthält einen
Puffer-Überlauf, der darauf ausgelegt ist die
Rücksprungadresse zu überschreiben und die
Anweisung direkt nach dem Funktionsaufruf zu
überspringen. (Inspiriert durch
<xref linkend="Phrack"/>)</para>
<programlisting>#include &lt;stdio.h&gt;
void manipulate(char *buffer) {
char newbuffer[80];
strcpy(newbuffer,buffer);
}
int main() {
char ch,buffer[4096];
int i=0;
while ((buffer[i++] = getchar()) != '\n') {};
i=1;
manipulate(buffer);
i=2;
printf("The value of i is : %d\n",i);
return 0;
}</programlisting>
<para>Betrachten wir nun, wie das Speicherabbild dieses
Prozesses aussehen würde, wenn wir 160 Leerzeichen
in unser kleines Programm eingeben, bevor wir Enter
drücken.</para>
<para>[XXX figure here!]</para>
<para>Offensichtlich kann man durch böswilligere Eingaben
bereits kompilierten Programmtext ausführen (wie z.B.
exec(/bin/sh)).</para>
</sect2>
<sect2>
<title>Puffer-Überläufe vermeiden</title>
<para>Die direkteste Lösung, um
Stack-Überläufe zu vermeiden, ist immer
grössenbegrenzten Speicher und String-Copy-Funktionen
zu verwenden.
<function>strncpy</function> und <function>strncat</function>
sind Teil der C-Standardbibliothek.
<indexterm>
<primary>Zeichenketten-Kopierfunktioen</primary>
<secondary>strncpy</secondary>
</indexterm>
<indexterm>
<primary>Zeichenketten-Kopierfunktionen</primary>
<secondary>strncat</secondary>
</indexterm>
Diese Funktionen akzeptieren einen Längen-Parameter. Dieser
Wert sollte nicht größer sein als die Länge
des Zielpuffers. Die Funktionen kopieren dann bis zu
`length' Bytes von der Quelle zum Ziel. Allerdings gibt es
einige Probleme. Keine der Funktionen garantiert, dass
die Zeichenkette NUL-terminiert ist, wenn die
Größe
<indexterm><primary>NUL-Terminierung</primary></indexterm>
des Eingabepuffers so groß ist wie das Ziel.
Außerdem wird der Parameter length zwischen strncpy
und strncat inkonsistent definiert, weshalb Programmierer
leicht bezüglich der korrekten Verwendung durcheinander
kommen können. Weiterhin gibt es einen spürbaren
Leistungsverlust im Vergleich zu
<function>strcpy</function>, wenn eine kurze Zeichenkette in
einen großen Puffer kopiert wird. Denn
<function>strncpy</function> fült den Puffer bis zur
angegebenen Länge mit NUL auf.
</para>
<para>In OpenBSD wurde eine weitere Möglichkeit zum
<indexterm><primary>OpenBSD</primary></indexterm>
kopieren von Speicherbereichen implementiert, die dieses
Problem umgeht. Die Funktionen <function>strlcpy</function>
und <function>strlcat</function> garantieren, dass das Ziel
immer NUL-terminiert wird, wenn das Argument length ungleich
null ist. Für weitere Informationen über diese
Funktionen lesen Sie bitte <xref linkend="OpenBSD"/>. Die
OpenBSD-Funktionen <function>strlcpy</function> und
<function>strlcat</function> sind seit Version 3.3 auch in
FreeBSD verfügbar.</para>
<indexterm>
<primary>Zeichenketten-Kopierfunktionen</primary>
<secondary>strlcpy</secondary>
</indexterm>
<indexterm>
<primary>Zeichenketten-Kopierfunktionen</primary>
<secondary>strlcat</secondary>
</indexterm>
<sect3>
<title>Compiler-basierte Laufzeitüberprüfung
von Grenzen</title>
<indexterm>
<primary>Prüfung von Grenzen</primary>
<secondary>Compiler-basiert</secondary>
</indexterm>
<para>Unglücklicherweise gibt es immer noch sehr viel
Quelltext, der allgemein verwendet wird und blind Speicher
umherkopiert, ohne eine der gerade besprochenen Funktionen,
die Begrenzungen unterstützen, zu verwenden.
Glücklicherweise gibt es einen Weg, um solche Angriffe zu
verhindern - Überprüfung der Grenzen zur Laufzeit, die in
verschiedenen C/C++ Compilern eingebaut ist.</para>
<indexterm><primary>ProPolice</primary></indexterm>
<indexterm><primary>StackGuard</primary></indexterm>
<indexterm><primary>GCC</primary></indexterm>
<para>ProPolice ist eine solche Compiler-Eigenschaft und ist in den
&man.gcc.1; Versionen 4.1 und höher integriert. Es ersetzt und
erweitert die &man.gcc.1; StackGuard-Erweiterung von
früher.</para>
<para>ProPolice schützt gegen stackbasierte
Pufferüberläufe und andere Angriffe durch das Ablegen von
Pseudo-Zufallszahlen in Schlüsselbereichen des Stacks bevor es
irgendwelche Funktionen aufruft. Wenn eine Funktion beendet wird,
werden diese <quote>Kanarienvögel</quote> überprüft
und wenn festgestellt wird, dass diese verändert wurden wird das
Programm sofort abgebrochen. Dadurch wird jeglicher Versuch, die
Rücksprungadresse oder andere Variablen, die auf dem Stack
gespeichert werden, durch die Ausführung von Schadcode zu
manipulieren, nicht funktionieren, da der Angreifer auch die
Pseudo-Zufallszahlen unberührt lassen müsste.</para>
<indexterm><primary>Puffer-Überlauf</primary></indexterm>
<para>Ihre Anwendungen mit ProPolice neu zu kompilieren ist
eine effektive Maßnahme, um sie vor den meisten
Puffer-Überlauf-Angriffen zu schützen, aber die
Programme können noch immer kompromittiert werden.</para>
</sect3>
<sect3>
<title>Bibliotheks-basierte Laufzeitüberprüfung
von Grenzen</title>
<indexterm>
<primary>Prüfung von Grenzen</primary>
<secondary>Bibliotheks-basiert</secondary>
</indexterm>
<para>Compiler-basierte Mechanismen sind bei Software,
die nur im Binärformat vertrieben wird, und die somit
nicht neu kompiliert werden kann völlig nutzlos.
Für diesen Fall gibt es einige Bibliotheken, welche
die unsicheren Funktionen der C-Bibliothek
(<function>strcpy</function>, <function>fscanf</function>,
<function>getwd</function>, etc..) neu implementieren und
sicherstellen, dass nicht hinter den Stack-Pointer
geschrieben werden kann.</para>
<itemizedlist>
<listitem><simpara>libsafe</simpara></listitem>
<listitem><simpara>libverify</simpara></listitem>
<listitem><simpara>libparanoia</simpara></listitem>
</itemizedlist>
<para>Leider haben diese Bibliotheks-basierten
Verteidigungen mehrere Schwächen. Diese Bibliotheken
schützen nur vor einer kleinen Gruppe von
Sicherheitslücken und sie können das
eigentliche Problem nicht lösen. Diese
Maßnahmen können versagen, wenn die Anwendung
mit -fomit-frame-pointer kompiliert wurde.
Außerdem kann der Nutzer die Umgebungsvariablen
LD_PRELOAD und LD_LIBRARY_PATH überschreiben oder
löschen.</para>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="secure-setuid">
<title>SetUID-Themen</title>
<indexterm><primary>seteuid</primary></indexterm>
<para>Es gibt zu jedem Prozess mindestens sechs verschiedene
IDs, die diesem zugeordnet sind. Deshalb müssen Sie
sehr vorsichtig mit den Zugriffsrechten sein, die Ihr Prozess
zu jedem Zeitpunkt besitzt. Konkret bedeutet dass, das alle
seteuid-Anwendungen ihre Privilegien abgeben sollten, sobald
sie diese nicht mehr benötigen.</para>
<indexterm>
<primary>Benutzer-IDs</primary>
<secondary>reale Benutzer-ID</secondary>
</indexterm>
<indexterm>
<primary>Benutzer-IDs</primary>
<secondary>effective Benutzer-ID</secondary>
</indexterm>
<para>Die reale Benutzer-ID kann nur von einem
Superuser-Prozess geändert werden. Das Programm
<application>login</application> setzt sie, wenn sich ein
Benutzer am System anmeldet, und sie wird nur selten
geändert.</para>
<para>Die effektive Benutzer-ID wird von der Funktion
<function>exec()</function> gesetzt, wenn ein Programm
das seteuid-Bit gesetzt hat. Eine Anwendung kann
<function>seteuid()</function> jederzeit aufrufen, um die
effektive Benutzer-ID entweder auf die reale Benutzer-ID oder
die gespeicherte set-user-ID zu setzen. Wenn eine der
<function>exec()</function>-Funktionen die effektive
Benutzer-ID setzt, wird der vorherige Wert als
gespeicherte set-user-ID abgelegt.</para>
</sect1>
<sect1 xml:id="secure-chroot">
<title>Die Umgebung ihrer Programme einschränken</title>
<indexterm><primary>chroot()</primary></indexterm>
<para>Die herkömmliche Methode, um einen Prozess
einzuschränken, besteht in dem Systemaufruf
<function>chroot()</function>. Dieser Aufruf
ändert das Wurzelverzeichnis, auf das sich alle
Pfadangaben des Prozesses und jegliche Kind-Prozesse beziehen.
Damit dieser Systemaufruf gelingt, muss der Prozess
Ausführungsrechte (Durchsuchungsrechte) für das
Verzeichnis haben, auf das er sich bezieht. Die neue Umgebung
wird erst wirksam, wenn Sie mittels
<function>chdir()</function> in Ihre neue Umgebung wechseln.
Es sollte erwähnt werden, dass ein Prozess recht einfach
aus der chroot-Umgebung ausbrechen kann, wenn er root-Rechte
besitzt. Das kann man erreichen, indem man Gerätedateien
anlegt, um Kernel-Speicher zu lesen, oder indem man einen
Debugger mit einem Prozess außerhalb seiner
&man.chroot.8;-Umgebung verbindet, oder auf viele andere
kreative Wege.</para>
<para>Das Verhalten des Systemaufrufs
<function>chroot()</function> kann durch die
kern.chroot.allow_open_directories
<command>sysctl</command>-Variable beeinflusst werden. Wenn
diese auf 0 gesetzt ist, wird <function>chroot()</function>
mit EPERM fehlschlagen, wenn irgendwelche Verzeichnisse
geöffnet sind. Wenn die Variable auf den Standardwert 1
gesetzt ist, wird <function>chroot()</function> mit EPERM
fehlschlagen, wenn irgendwelche Verzeichnisse geöffnet
sind und sich der Prozess bereits in einer
<function>chroot()</function>-Umgebung befindet. Bei jedem
anderen Wert wird die Überprüfung auf
geöffnete Verzeichnisse komplett umgangen.</para>
<sect2>
<title>Die Jail-Funktionalität in FreeBSD</title>
<indexterm><primary>Jail</primary></indexterm>
<para>Das Konzept einer Jail (Gefängnis) erweitert
<function>chroot()</function>, indem es die Macht des
Superusers einschränkt, um einen echten 'virtuellen
Server' zu erzeugen. Wenn ein solches Gefängnis einmal
eingerichtet ist, muss die gesamte Netzwerkkommunikation
über eine bestimmte IP-Adresse erfolgen und die
"root-Privilegien" innerhalb der Jail sind sehr stark
eingeschränkt.</para>
<para>Solange Sie sich in einer Jail befinden, werden alle
Tests auf Superuser-Rechte durch den Aufruf von
<function>suser()</function> fehlschlagen. Allerdings wurden
einige Aufrufe von <function>suser()</function>
abgeändert, um die neue
<function>suser_xxx()</function>-Schnittstelle zu
implementieren. Diese Funktion ist dafür verantwortlich,
festzustellen, ob bestimmte Superuser-Rechte einem
eingesperrten Prozess zur Verfügung stehen.</para>
<para>Ein Superuser-Prozess innerhalb einer Jail darf
folgendes:</para>
<itemizedlist>
<listitem>
<simpara>Berechtigungen verändern mittels:
<function>setuid</function>,
<function>seteuid</function>,
<function>setgid</function>,
<function>setegid</function>,
<function>setgroups</function>,
<function>setreuid</function>,
<function>setregid</function>,
<function>setlogin</function></simpara>
</listitem>
<listitem>
<simpara>Ressourcenbegrenzungen setzen mittels
<function>setrlimit</function></simpara>
</listitem>
<listitem>
<simpara>Einige sysctl-Variablen (kern.hostname)
verändern</simpara>
</listitem>
<listitem>
<simpara><function>chroot()</function></simpara>
</listitem>
<listitem>
<simpara>Ein Flag einer vnode setzen:
<function>chflags</function>,
<function>fchflags</function></simpara>
</listitem>
<listitem>
<simpara>Attribute einer vnode setzen wie Dateiberechtigungen,
Eigentümer, Gruppe, Größe, Zugriffszeit
und Modifikationszeit</simpara>
</listitem>
<listitem>
<simpara>Binden eines Prozesses an einen öffentlichen
privilegierten Port (ports &lt; 1024)</simpara>
</listitem>
</itemizedlist>
<para><function>Jail</function>s sind ein mächtiges
Werkzeug, um Anwendungen in einer sicheren Umgebung
auszuführen, aber sie haben auch ihre Nachteile.
Derzeit wurden die IPC-Mechanismen noch nicht an
<function>suser_xxx</function> angepasst, so dass Anwendungen
wie MySQL nicht innerhalb einer Jail ausgeführt werden
können. Der Superuser-Zugriff hat in einer Jail nur eine
sehr eingeschränkte Bedeutung, aber es gibt keine
Möglichkeit zu definieren was
"sehr eingeschränkt" heißt.</para>
</sect2>
<sect2>
<title>&posix;.1e Prozess Capabilities</title>
<indexterm><primary>POSIX.1e Process
Capabilities</primary></indexterm>
<indexterm><primary>TrustedBSD</primary></indexterm>
<para>&posix; hat einen funktionalen Entwurf (Working Draft)
herausgegeben, der Ereignisüberprüfung,
Zugriffskontrolllisten, feiner einstellbare Privilegien,
Informationsmarkierung und verbindliche Zugriffskontrolle
enthält.</para>
<para>Dies ist im Moment in Arbeit und das Hauptziel des <link xlink:href="http://www.trustedbsd.org/">TrustedBSD</link>-Projekts.
Ein Teil der bisherigen Arbeit wurde in &os.current;
übernommen (cap_set_proc(3)).</para>
</sect2>
</sect1>
<sect1 xml:id="secure-trust">
<title>Vertrauen</title>
<para>Eine Anwendung sollte niemals davon ausgehen, dass
irgendetwas in der Nutzerumgebung vernünftig ist.
Das beinhaltet (ist aber sicher nicht darauf
beschränkt): Nutzereingaben, Signale,
Umgebungsvariablen, Ressourcen, IPC, mmaps, das
Arbeitsverzeichnis im Dateisystem, Dateideskriptoren,
die Anzahl geöffneter Dateien, etc..</para>
<indexterm><primary>positive Filterung</primary></indexterm>
<indexterm><primary>Datenvalidierung</primary></indexterm>
<para>Sie sollten niemals annehmen, dass Sie jede Art von
inkorrekten Eingaben abfangen können, die ein Nutzer
machen kann. Stattdessen sollte Ihre Anwendung positive
Filterung verwenden, um nur eine bestimmte Teilmenge an
Eingaben zuzulassen, die Sie für sicher halten.
Ungeeignete Datenüberprüfung ist die Ursache
vieler Exploits, besonders für CGI-Skripte im Internet.
Bei Dateinamen müssen Sie besonders vorsichtig sein,
wenn es sich um Pfade ("../", "/"), symbolische
Verknüpfungen und Shell-Escape-Sequenzen handelt.</para>
<indexterm><primary>Perl Taint-Modus</primary></indexterm>
<para>Perl bietet eine wirklich coole Funktion, den sogenannten
"Taint"-Modus, der verwendet werden kann, um zu verhindern,
dass Skripte Daten, die von außerhalb des Programmes
stammen, auf unsichere Art und Weise verwenden. Dieser
Modus überprüft Kommandozeilenargumente,
Umgebungsvariablen, Lokalisierungsinformationen, die
Ergebnisse von Systemaufrufen
(<function>readdir()</function>,
<function>readlink()</function>,
<function>getpwxxx()</function>)
und alle Dateieingaben.</para>
</sect1>
<sect1 xml:id="secure-race-conditions">
<title>Race-Conditions</title>
<para>Eine Race-Condition ist ein unnormales Verhalten, das von
einer unerwarteten Abhängigkeit beim Timing von Ereignissen
verursacht wird. Mit anderen Worten heißt das, ein
Programmierer nimmt irrtümlicher Weise an, dass ein
bestimmtes Ereignis immer vor einem anderen stattfindet.</para>
<indexterm><primary>Race-Conditions</primary>
<secondary>Signale</secondary></indexterm>
<indexterm><primary>Race-Conditions</primary>
<secondary>Zugriffsprüfungen</secondary></indexterm>
<indexterm><primary>Race-Conditions</primary>
<secondary>Öffnen von Dateien</secondary></indexterm>
<para>Einige der häufigsten Ursachen für
Race-Conditions sind Signale, Zugriffsprüfungen und das
Öffnen von Dateien. Signale sind von Natur aus
asynchrone Ereignisse, deshalb ist besondere Vorsicht im
Umgang damit geboten. Das Prüfen des Zugriffs mittels
der Aufrufe <function>access(2)</function> gefolgt von
<function>open(2)</function> ist offensichtlich nicht atomar.
Benutzer können zwischen den beiden Aufrufen Dateien
verschieben. Stattdessen sollten privilegierte Anwendungen
<function>seteuid()</function> direkt gefolgt von
<function>open()</function> aufrufen. Auf die gleiche Art
sollte eine Anwendung immer eine korrekte Umask vor dem
Aufruf von <function>open()</function> setzen, um
störende Aufrufe von <function>chmod()</function> zu
umgehen.</para>
</sect1>
</chapter>

View file

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/sockets/chapter.xml,v 1.5 2010/12/23 18:23:30 bcr Exp $
basiert auf: 1.16
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="sockets">
<title>Sockets</title>
<para>Dieses Kapitel ist noch nicht übersetzt.
Lesen Sie bitte <link xlink:href="&url.books.developers-handbook.en;/sockets.html">
das Original in englischer Sprache</link>. Wenn Sie helfen
wollen, dieses Kapitel zu übersetzen, senden Sie bitte
eine E-Mail an die Mailingliste &a.de.translators;.</para>
</chapter>

View file

@ -1,256 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/developers-handbook/testing/chapter.xml,v 1.10 2010/12/18 13:28:29 jkois Exp $
basiert auf: 1.3
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="testing">
<info><title>Regressions- und Performance-Tests</title>
<authorgroup>
<author><personname><firstname>Jürgen</firstname><surname>Lock</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Regressions-Tests werden durchgeführt, um zu überprüfen,
ob ein bestimmter Teil des Systems wie erwartet funktioniert, und
um sicherzustellen, dass bereits beseitigte Fehler nicht wieder eingebaut
werden.</para>
<para>Die &os;-Regressions-Testwerkzeuge finden Sie im
&os;-Quelltextbaum unter <filename>src/tools/regression</filename>.</para>
<section xml:id="testing-micro-benchmark">
<title>Mikro-Benchmark-Checkliste</title>
<para>Dieser Abschnitt enthält Tipps, wie
ordnungsgemäße Mikro-Benchmarks unter &os; oder für
&os; selbst erstellt werden.</para>
<para>Es ist nicht möglich, immer alle der folgenden
Vorschläge zu berücksichtigen, aber je mehr davon,
desto besser wird der Benchmark kleine
Unterschiede nachweisen können.</para>
<itemizedlist>
<listitem>
<para>Schalten Sie <acronym>APM</acronym> und alles andere,
das den Systemtakt beeinflusst, ab
(<acronym>ACPI</acronym>?).</para>
</listitem>
<listitem>
<para>Starten Sie in den Single-User-Modus. &man.cron.8;
und andere Systemdienste verursachen nur Störungen.
Genauso der &man.sshd.8;-Systemdienst.
Falls während des Tests
SSH-Zugriff benötigt wird, schalten Sie entweder die
Neuerstellung des SSHv1-Schlüssels ab oder beenden Sie
den <command>sshd</command>-Elternprozess während der
Tests.</para>
</listitem>
<listitem>
<para>Beenden Sie &man.ntpd.8;.</para>
</listitem>
<listitem>
<para>Falls &man.syslog.3;-Ereignisse erzeugt werden,
starten Sie &man.syslogd.8; mit leerer
<filename>/etc/syslogd.conf</filename> oder beenden Sie
es.</para>
</listitem>
<listitem>
<para>Sorgen Sie für möglichst wenig Disk-I/O;
vermeiden Sie es ganz wenn möglich.</para>
</listitem>
<listitem>
<para>Hängen Sie keine Dateisysteme ein, die Sie nicht
benötigen.</para>
</listitem>
<listitem>
<para>Hängen Sie <filename>/</filename>, <filename>/usr</filename> und die anderen
Dateisysteme nur lesbar ein wenn möglich. Dies
verhindert, dass atime-Aktualisierungen auf der Festplatte (usw.) das
Ergebnis verfälschen.</para>
</listitem>
<listitem>
<para>Initialisieren Sie das beschreibbare
Test-Dateisystem mit &man.newfs.8; neu und füllen Sie es
aus einer &man.tar.1;- oder &man.dump.8;-Datei vor jedem
Lauf. Hängen Sie es aus und wieder ein, bevor Sie den
Test starten. Dies sorgt für einen konsistenten
Dateisystemaufbau. Bei einem <quote>worldstone</quote>-Test
bezieht sich dies auf <filename>/usr/obj</filename> (Initialisieren Sie
es einfach mit <command>newfs</command> neu und hängen Sie
es ein). Um absolut reproduzierbare Ergebnisse zu bekommen,
füllen Sie das Dateisystem aus einer &man.dd.1;-Datei
(d.h. <command>dd
if=myimage of=/dev/ad0s1h
bs=1m</command>).</para>
</listitem>
<listitem>
<para>Benutzen Sie malloc-gestützte oder vorbelastete
&man.md.4;-Partitionen.</para>
</listitem>
<listitem>
<para>Starten Sie zwischen den einzelnen
Durchläufen neu, dies sichert einen konsistenteren
Zustand.</para>
</listitem>
<listitem>
<para>Entfernen Sie alle nicht unbedingt benötigten
Gerätetreiber aus dem Kernel. Wenn z.B. USB für
den Test nicht benötigt wird, entfernen Sie es aus dem
Kernel. Gerätetreiber, die sich Hardware zuteilen, haben
oft <quote>tickende</quote> Timeouts.</para>
</listitem>
<listitem>
<para>Konfigurieren Sie nicht Hardware, die
nicht benutzt wird. Entfernen Sie Festplatten
mit &man.atacontrol.8; und &man.camcontrol.8;, wenn diese
für den Test nicht gebraucht werden.</para>
</listitem>
<listitem>
<para>Konfigurieren Sie nicht das Netzwerk, es sei denn es
wird getestet, oder warten Sie, bis der Test fertig ist, wenn
Sie das Ergebnis auf einen anderen Rechner übertragen
wollen.</para>
<para>Falls das System an ein öffentliches Netzwerk
angeschlossen sein muss, achten Sie auf Spitzen im
Broadcast-Verkehr. Obwohl dieser kaum auffällt, wird
er CPU-Zyklen brauchen. Ähnliches gilt für
Multicast.</para>
</listitem>
<listitem>
<para>Legen Sie jedes Dateisystem auf eine eigene Festplatte.
Dies minimiert Jitter durch Optimierungen von
Lesekopfbewegungen.</para>
</listitem>
<listitem>
<para>Minimieren Sie Ausgaben auf serielle oder VGA-Konsolen.
Ausgabenumleitung in Dateien ergibt weniger Jitter
(serielle Konsolen werden leicht zum Flaschenhals).
Benutzen Sie die Tastatur nicht, während der Test
läuft, sogar <keycap>space</keycap> oder
<keycap>back-space</keycap> wirken sich auf die
Ergebnisse aus.</para>
</listitem>
<listitem>
<para>Stellen Sie sicher, dass der Test lang genug
läuft, aber nicht zu lange. Wenn er zu kurz ist, sind
Zeitstempel ein Problem. Wenn er zu lang ist, werden
Temperaturänderungen und Drift die Frequenz von
Quarzkristallen im Rechner beeinflussen. Daumenregel: mehr
als eine Minute, weniger als eine Stunde.</para>
</listitem>
<listitem>
<para>Versuchen Sie, die Temperatur in der Umgebung des
Rechners so stabil wie möglich zu halten. Diese beeinflusst
sowohl Quarzkristalle als auch Festplatten-Algorithmen.
Um einen wirklich stabilen Takt zu erhalten, wäre es auch
möglich, einen stabilisierten Takt anzuschließen.
D.h. besorgen Sie sich einen OCXO + PLL und koppeln Sie das
Ausgangssignal mit den Taktgeberschaltkreisen anstelle des
Quarzkristalls der Hauptplatine. Wenden Sie sich an
&a.phk;, wenn Sie mehr Informationen hierüber
benötigen.</para>
</listitem>
<listitem>
<para>Lassen Sie den Test mindestens drei Mal laufen, besser
mehr als 20 Mal, sowohl
für <quote>vor</quote> als auch für
<quote>nach</quote> dem Code. Versuchen Sie abzuwechseln
(d.h. nicht erst 20 Mal <quote>vorher</quote> und dann 20
Mal <quote>nachher</quote>), dies ermöglicht,
umgebungsbedingte Effekte zu erkennen. Wechseln Sie nicht
1:1 ab, sondern 3:3; dies erlaubt,
Wechselwirkungseffekte zu erkennen.</para>
<para>Ein gutes Muster ist:
<literal>bababa{bbbaaa}*</literal>. Dies gibt Hinweise nach
den ersten 1+1-Läufen (sodass Sie den Test stoppen
können, falls er völlig daneben geht), Sie
können die Standardabweichung nach den ersten 3+3-Läufen
überprüfen (zeigt an, ob sich ein
längerer Lauf lohnt), später
Trends und Wechselwirkungen.</para>
</listitem>
<listitem>
<para>Benutzen Sie &man.ministat.1;, um
festzustellen, ob Ihre Ergebnisse signifikant sind.
Überlegen Sie sich, das Buch <quote>Cartoon guide to
statistics</quote> ISBN: 0062731025 zu kaufen. Es ist sehr
empfehlenswert, falls Sie Dinge wie Standardabweichung und
Studentsche t-Verteilung vergessen oder nie gelernt
haben.</para>
</listitem>
<listitem>
<para>Benutzen Sie keinen Hintergrund-&man.fsck.8;, wenn Sie
ihn nicht selbst testen
wollen. Schalten Sie auch <varname>background_fsck</varname>
in <filename>/etc/rc.conf</filename> aus, es sei denn der
Benchmark wird nicht mindestens 60+<quote>Laufzeit von
<command>fsck</command></quote> Sekunden nach Systemstart
gestartet, da &man.rc.8; startet und prüft, ob
<command>fsck</command> auf irgendeinem der Dateisysteme
laufen muss, wenn Hintergrund-<command>fsck</command>
eingeschaltet ist. Stellen Sie ebenfalls sicher, dass keine
Snapshots herumliegen, falls der Benchmark nicht ein Test
mit Snapshots ist.</para>
</listitem>
<listitem>
<para>Falls der Benchmark unerwartet schlechte Performance
zeigt, überprüfen Sie Dinge wie große Mengen
Interrupts von unerwarteten Quellen. Es gibt Berichte, dass
einige <acronym>ACPI</acronym>-Versionen sich <quote>daneben
benehmen</quote> und ein Übermaß an Interrupts
erzeugen. Um zu helfen, ungewöhnliche Testergebnisse zu
diagnostizieren, machen Sie ein paar Momentaufnahmen von
<command>vmstat -i</command> und suchen Sie nach
Ungewöhnlichem.</para>
</listitem>
<listitem>
<para>Gehen Sie mit Parametern zur Optimierung
von Kernel, Userland und Fehlersuche vorsichtig um.
Es passiert schnell, irgendetwas durchrutschen zu
lassen und dann später festzustellen, dass der Test
nicht das gleiche verglichen hat.</para>
</listitem>
<listitem>
<para>Erstellen Sie nie Benchmarks unter Verwendung der Kernel-Optionen
<literal>WITNESS</literal> und <literal>INVARIANTS</literal>,
wenn der Test nicht diese Merkmale selbst
untersuchen soll. <literal>WITNESS</literal> kann zu 400% und
mehr Performance-Abnahme führen. Ähnliches gilt
für Userland-&man.malloc.3;-Parameter, Voreinstellungen
hierbei unterscheiden sich bei -CURRENT von denen bei
Production-Releases.</para>
</listitem>
</itemizedlist>
</section>
</chapter>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,33 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD German Documentation Project
#
# Build the FreeBSD FAQ in the German translation
#
# $FreeBSD$
# $FreeBSDde: de-docproj/books/faq/Makefile,v 1.11 2004/08/04 23:33:31 mheinen Exp $
# basiert auf: 1.12
#
MAINTAINER=de-bsd-translators@de.FreeBSD.org
DOC?= book
FORMATS?= html-split html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
WITH_BIBLIOXREF_TITLE?=YES
#
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# XML content
SRCS= book.xml
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,63 +0,0 @@
#
# $FreeBSD$
# $FreeBSDde$
# basiert auf: r50998
#
# Build the FreeBSD Documentation Project Primer.
#
MAINTAINER=de-bsd-translators@de.FreeBSD.org
DOC?= book
FORMATS?= html-split html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual XML files that make up the document. Changes
# to any of these files will force a rebuild
#
# XML content
SRCS= book.xml
SRCS+= overview/chapter.xml
SRCS+= tools/chapter.xml
SRCS+= working-copy/chapter.xml
SRCS+= structure/chapter.xml
SRCS+= doc-build/chapter.xml
SRCS+= the-website/chapter.xml
SRCS+= xml-primer/chapter.xml
SRCS+= xhtml-markup/chapter.xml
SRCS+= docbook-markup/chapter.xml
SRCS+= stylesheets/chapter.xml
SRCS+= translations/chapter.xml
SRCS+= po-translations/chapter.xml
SRCS+= manpages/chapter.xml
SRCS+= writing-style/chapter.xml
SRCS+= editor-config/chapter.xml
SRCS+= see-also/chapter.xml
SRCS+= examples/appendix.xml
# Images from the cross-document image library
IMAGES_LIB= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
IMAGES_LIB+= callouts/5.png
IMAGES_LIB+= callouts/6.png
IMAGES_LIB+= callouts/7.png
IMAGES_LIB+= callouts/8.png
IMAGES_LIB+= callouts/9.png
# Entities
SRCS+= chapters.ent
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
# Fixme!
DOCBOOK_DEPS_DISABLE=YES
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,281 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY % chapters SYSTEM "chapters.ent">
%chapters;
]>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r50998
-->
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="de">
<info><title>Die Fibel für neue Mitarbeiter des
FreeBSD-Dokumentationsprojekts</title>
<author><orgname>The FreeBSD Documentation Project</orgname></author>
<copyright>
<year>1998-2017</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
<copyright>
<year>1998-2019</year>
<holder>The FreeBSD German Documentation Project</holder>
</copyright>
<pubdate role="rcs">$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
&legalnotice;
<abstract>
<para>Vielen Dank für Ihr Interesse und Ihre Mitarbeit an
der FreeBSD-Dokumentation. Wir freuen uns über jeden Beitrag.</para>
<para>Diese Fibel enthält die Informationen, die Sie für die
Mitarbeit am FreeBSD-Dokumentationsprojekt (auch als
<acronym>FDP</acronym> bekannt) benötigen. Diese reichen von
verpflichtender und optionaler Software bis hin zur Philosophie
des FreeBSD-Dokumentationsprojekts.</para>
<para>Bitte beachten Sie, dass diese Fibel
<emphasis>jederzeit</emphasis> unter Bearbeitung und noch
nicht vollständig ist. Falls Sie einen Fehler finden, würden
wir uns freuen, wenn Sie uns darüber informieren.</para>
</abstract>
</info>
<preface xml:id="preface">
<title>Benutzungshinweise</title>
<sect1 xml:id="preface-prompts">
<title>Die Eingabeaufforderungen</title>
<para>Die folgende Tabelle enthält die Eingabeaufforderung eines
normalen Benutzers sowie die des Superusers. Die in
diesem Buch verwendeten Beispiele benutzen die jeweilige
Eingabeaufforderung, um zu zeigen, als welcher Benutzer die
Beispiele ausgeführt werden.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Benutzer</entry>
<entry>Eingabeaufforderung</entry>
</row>
</thead>
<tbody>
<row>
<entry><systemitem class="username">Normaler Benutzer</systemitem></entry>
<entry>&prompt.user;</entry>
</row>
<row>
<entry><systemitem class="username">Superuser</systemitem></entry>
<entry>&prompt.root;</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 xml:id="preface-conventions">
<title>Typographische Festlegungen</title>
<para>Um die Lesbarkeit zu erhöhen, werden in diesem
Dokument die im folgenden genannten typographischen
Festlegungen verwendet:</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Bedeutung</entry>
<entry>Beispiel</entry>
</row>
</thead>
<tbody>
<row>
<entry>Kommandonamen</entry>
<entry>Geben Sie <command>ls -a</command> ein, um alle
Dateien anzuzeigen.</entry>
</row>
<row>
<entry>Datei- und Verzeichnisnamen</entry>
<entry>Bearbeiten Sie
<filename>.login</filename>.</entry>
</row>
<row>
<entry>Bildschirmausgaben</entry>
<entry><screen>You have mail.</screen></entry>
</row>
<row>
<entry>Bildschirmein- und ausgaben</entry>
<entry><screen>&prompt.user; <userinput>date +"The time is %H:%M"</userinput>
The time is 09:18</screen></entry>
</row>
<row>
<entry>Referenzen auf Hilfeseiten</entry>
<entry>Mit &man.su.1; können Sie sich als ein anderer
Benutzer anmelden.</entry>
</row>
<row>
<entry>Benutzer- und Gruppennamen</entry>
<entry>Ich bin <systemitem class="username">root</systemitem>,
ich darf das.</entry>
</row>
<row>
<entry>Hervorhebungen</entry>
<entry>Hier <emphasis>müssen</emphasis> Sie
vorsichtig sein.</entry>
</row>
<row>
<entry>Text, der vom Benutzer durch seine Eingaben ersetzt
werden muss</entry>
<entry>Um die Hilfeseiten nach einem bestimmten Begriff zu
durchsuchen, geben Sie
<command>man -k <replaceable>Suchbegriff</replaceable></command>
ein.</entry>
</row>
<row>
<entry>Umgebungsvariablen</entry>
<entry><envar>$HOME</envar> ist Ihr
Benutzerverzeichnis.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 xml:id="preface-notes">
<title>Anmerkungen, Tipps, wichtige Hinweise, Warnungen und
Beispiel</title>
<para>An einigen Stellen innerhalb dieses Buchs werden
wichtige oder nützliche Hinweise gegeben, die besonders
hervorgehoben sind. Hier ein kurzer Überblick über
die verwendeten Darstellungen.</para>
<note>
<para>Anmerkungen werden so dargestellt. Sie enthalten
Informationen die Sie nur zu lesen brauchen, wenn Sie direkt
davon betroffen sind.</para>
</note>
<tip>
<para>Tipps sind Informationen, die vielleicht hilfreich sein
könnten oder aufzeigen, wie bestimmte Dinge einfacher
zu bewerkstelligen sind.</para>
</tip>
<important>
<para>Besonders wichtige Punkte werden so hervorgehoben. Meist
enthalten sie Hinweise auf vielleicht zusätzlich auszuführende
Schritte oder Dinge, die besonders zu beachten sind.</para>
</important>
<warning>
<para>Warnungen werden wie dieser Abschnitt dargestellt und
weisen auf mögliche Schäden hin, die entstehen
können, falls die beschriebenen Schritte nicht genau
befolgt oder Hinweise nicht beachtet werden. Die Palette der
möglichen Schäden reicht von Hardwareschäden
bis hin zu Datendatenverlust durch ein versehentliches
Löschen von wichtigen Dateien oder ganzen
Verzeichnissen.</para>
</warning>
<example>
<title>Ein Beispiel</title>
<para>Beispiele, die so wie hier dargestellt werden, enthalten
meist kleine Übungen, die nachvollzogen werden sollten,
um das vorher beschriebene besser zu verinnerlichen oder mit
den erzeugten Ausgaben vertraut zu werden.</para>
</example>
</sect1>
<sect1 xml:id="preface-acknowledgements">
<title>Danksagungen</title>
<para>Ich möchte mich bei Sue Blake, Patrick Durusau, Jon
Hamilton, Peter Flynn und Christopher Maden bedanken, die sich
die Zeit genommen haben, die frühen Entwürfe dieses
Dokuments zu lesen und viele hilfreiche Hinweise und
Ratschläge gegeben haben.</para>
</sect1>
</preface>
&chap.overview;
&chap.tools;
&chap.working-copy;
&chap.structure;
&chap.doc-build;
&chap.the-website;
&chap.xml-primer;
&chap.xhtml-markup;
&chap.docbook-markup;
&chap.stylesheets;
&chap.translations;
&chap.po-translations;
&chap.manpages;
&chap.writing-style;
&chap.editor-config;
&chap.see-also;
&app.examples;
<index/>
</book>

View file

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Creates entities for each chapter in the Documentation Project Primer.
Each entity is named chap.foo, where foo is the value of the id
attribute on that chapter, and corresponds to the name of the
directory in which that chapter's .xml file is stored.
Chapters should be listed in the order in which they are referenced.
$FreeBSD$
$FreeBSDde$
basiert auf: r50998
-->
<!ENTITY chap.overview SYSTEM "overview/chapter.xml">
<!ENTITY chap.tools SYSTEM "tools/chapter.xml">
<!ENTITY chap.working-copy SYSTEM "working-copy/chapter.xml">
<!ENTITY chap.structure SYSTEM "structure/chapter.xml">
<!ENTITY chap.doc-build SYSTEM "doc-build/chapter.xml">
<!ENTITY chap.the-website SYSTEM "the-website/chapter.xml">
<!ENTITY chap.xml-primer SYSTEM "xml-primer/chapter.xml">
<!ENTITY chap.xhtml-markup SYSTEM "xhtml-markup/chapter.xml">
<!ENTITY chap.docbook-markup SYSTEM "docbook-markup/chapter.xml">
<!ENTITY chap.stylesheets SYSTEM "stylesheets/chapter.xml">
<!ENTITY chap.translations SYSTEM "translations/chapter.xml">
<!ENTITY chap.po-translations SYSTEM "po-translations/chapter.xml">
<!ENTITY chap.manpages SYSTEM "manpages/chapter.xml">
<!ENTITY chap.writing-style SYSTEM "writing-style/chapter.xml">
<!ENTITY chap.editor-config SYSTEM "editor-config/chapter.xml">
<!ENTITY chap.see-also SYSTEM "see-also/chapter.xml">
<!ENTITY app.examples SYSTEM "examples/appendix.xml">

View file

@ -1,571 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1999 Neil Blakey-Milner, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r52149
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="doc-build">
<info><title>Die Erzeugung der Zieldokumente</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Dieses Kapitels erklärt detailliert,
<emphasis>wie der Bau der Dokumentation organisiert
ist</emphasis> und wie Sie diesen Prozess mit &man.make.1;
beeinflussen können.</para>
<sect1 xml:id="doc-build-rendering">
<title>DocBook in verschiedene Ausgabeformate konvertieren</title>
<para>Aus einer einzigen DocBook-Quellcodedatei können
verschiedene Ausgabeformate erstellt werden. Welches Dateiformat
erstellt wird, wird über die Variable
<varname>FORMATS</varname> festgelegt. Eine Liste aller
verfügbaren Formate ist in <varname>KNOWN_FORMATS</varname>
gespeichert:</para>
<screen xml:id="doc-build-rendering-known-formats">&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
&prompt.user; <userinput>make -V KNOWN_FORMATS</userinput></screen>
<table xml:id="doc-build-rendering-common-formats" frame="none">
<title>Häufige Ausgabeformate</title>
<tgroup cols="3">
<thead>
<row>
<entry><varname>FORMATS</varname></entry>
<entry>Dateityp</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>html</literal></entry>
<entry><acronym>HTML</acronym>, Einzeldatei</entry>
<entry>Eine einzelne <filename>book.html</filename> oder
<filename>article.html</filename>.</entry>
</row>
<row>
<entry><literal>html-split</literal></entry>
<entry><acronym>HTML</acronym>, multiple Dateien</entry>
<entry>Multiple <acronym>HTML</acronym>-Dateien, eine
für jedes Kapitel oder für jeden Abschnitt. Dieser
Typ wird in der Regel für die Nutzung des Dokuments
auf einer Internetseite verwendet.</entry>
</row>
<row>
<entry><literal>pdf</literal></entry>
<entry><acronym>PDF</acronym></entry>
<entry>Portable Document Format</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Welches Format verwendet wird, hängt vom jeweiligen
Dokument ab, in der Regel handelt es sich aber um
<literal>html-split</literal>. Weitere Formate werden über die
Variable <varname>FORMATS</varname> angegeben. Dabei können
Sie ein einzelnes Format, aber auch mehrere Formate gleichzeitig
definieren.</para>
<example xml:id="doc-build-formats-example-html">
<title>Das Dokument als eine einzelne HTML-Seite bauen</title>
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
&prompt.user; <userinput>make FORMATS=html</userinput></screen>
</example>
<example xml:id="doc-build-formats-example-html-split-pdf">
<title>Das Dokument in den Formaten HTML-Split sowie
<acronym>PDF</acronym> bauen</title>
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/books/handbook</userinput>
&prompt.user; <userinput>make FORMATS="html-split pdf"</userinput></screen>
</example>
</sect1>
<sect1 xml:id="doc-build-toolset">
<title>Für den Bau der &os;-Dokumentation benötigte
Werkzeuge</title>
<para>Die folgende Werkzeuge werden benötigt, um die
<acronym>FDP</acronym>-Dokumente zu bauen und zu installieren.</para>
<itemizedlist>
<listitem>
<para>Das wichtigste Werkzeug ist &man.make.1;, genauer
<application>Berkeley Make</application>.</para>
</listitem>
<listitem>
<para>Der Bau von Paketen erfolgt unter FreeBSD mit
&man.pkg-create.8;.</para>
</listitem>
<listitem>
<para>&man.gzip.1; dient zur Erstellung
komprimierter Versionen der Dokumentation. &man.bzip2.1; wird
ebenfalls unterstützt. Wollen Sie Pakete der Dokumentation
erstellen, benötigen Sie auch &man.tar.1;.</para>
</listitem>
<listitem>
<para>Mit &man.install.1; installieren Sie die Dokumentation auf
Ihrem System.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="doc-build-makefiles">
<title>Die <filename>Makefile</filename>s des Dokumentationsbaums
verstehen</title>
<para>Innerhalb des &os; Documentation Projects gibt es drei
verschiedene Arten von <filename>Makefile</filename>s:</para>
<itemizedlist>
<listitem>
<para>Ein <link linkend="sub-make">
<filename>Makefile</filename></link> in einem
Unterverzeichnis gibt Anweisungen an dessen Dateien und
Unterverzeichnisse weiter.</para>
</listitem>
<listitem>
<para>Ein <link linkend="doc-make">
Dokument-<filename>Makefile</filename></link> beschreibt das
Dokument, das aus dem Inhalt des jeweiligen Verzeichnisses
gebaut werden soll.</para>
</listitem>
<listitem>
<para><link linkend="make-includes">
<application>Make</application>-Includes</link> sind der
"Klebstoff", der für den Bau der Dokumentation
erforderlich ist. In der Regel heissen diese Dokumente
<filename>doc.<replaceable>xxx</replaceable>.mk</filename>.</para>
</listitem>
</itemizedlist>
<sect2 xml:id="sub-make">
<title>Unterverzeichnis-<filename>Makefile</filename>s</title>
<para>Derartige <filename>Makefile</filename>s sind in der Regel
wie folgt aufgebaut:</para>
<programlisting>SUBDIR =articles
SUBDIR+=books
COMPAT_SYMLINK = en
DOC_PREFIX?= ${.CURDIR}/..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
<para>Die ersten vier nicht-leeren Zeilen definieren die
&man.make.1;-Variablen
<varname>SUBDIR</varname>, <varname>COMPAT_SYMLINK</varname>,
und <varname>DOC_PREFIX</varname>.</para>
<para>Die <varname>SUBDIR</varname>-Anweisung weist
(ebenso wie die <varname>COMPAT_SYMLINK</varname>-Anweisung)
einer Variable einen Wert zu und überschreibt dabei
deren ursprünglichen Wert.</para>
<para>Die zweite <varname>SUBDIR</varname>-Anweisung zeigt,
wie man den aktuellen Wert einer Variable ergänzen
kann. Nach der Ausführung dieser Anweisung hat die
Variable <varname>SUBDIR</varname> den Wert
<literal>articles books</literal>.</para>
<para>Die Anweisung <varname>DOC_PREFIX</varname> zeigt, wie
man einer Variable einen Wert zuweist (vorausgesetzt, die
Variable ist nicht bereits definiert). Eine derartige
Anweisung ist beispielsweise sinnvoll, wenn sich
<varname>DOC_PREFIX</varname> nicht dort befindet, wo es
vom <filename>Makefile</filename> erwartet wird.
Durch das Setzen dieser Variable kann der korrekte Wert an
das Makefile übergeben werden.</para>
<para>Was heißt dies nun konkret? Mit den
<varname>SUBDIR</varname>-Anweisungen legen Sie fest, welche
Unterverzeichnisse beim Bau der Dokumentation eingeschlossen
werden müssen.</para>
<para><varname>COMPAT_SYMLINK</varname> wird zur Erstellung
von symbolischen Links zwischen den jeweiligen Dokumentsprachen
und deren offizieller Kodierung benötigt (so wird
beispielsweise <filename>doc/en</filename> nach
<filename>en_US.ISO-8859-1</filename> verlinkt).</para>
<para><varname>DOC_PREFIX</varname> gibt den Pfad zum
Wurzelverzeichnis des Quellcode-Baums des FreeBSD Documentation
Projects an. Diese Vorgabe kann jederzeit durch einen eigenen
Wert ersetzt werden. Bei <varname>.CURDIR</varname> handelt es
sich um eine in &man.make.1; eingebaute
Variable, die den Pfad des aktuellen Verzeichnisses
enthält.</para>
<para>Die letzte Zeile bindet <filename>doc.project.mk</filename>,
die zentrale, projektweite &man.make.1;-Datei
des &os; Documentation Projects, in den Bau ein. Diese Datei
enthält den "Klebstoff", der die diversen Variablen in
Anweisungen zum Bau der Dokumentation konvertiert.</para>
</sect2>
<sect2 xml:id="doc-make">
<title>Dokument-<filename>Makefile</filename>s</title>
<para>Diese <filename>Makefile</filename>s definieren diverse
<application>make</application>-Variablen mit Vorgaben
zum Bau der im Verzeichnis enthaltenen Dokumentation.</para>
<para>Dazu ein Beispiel:</para>
<programlisting>MAINTAINER=nik@FreeBSD.org
DOC?= book
FORMATS?= html-split html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# SGML content
SRCS= book.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "$(DOC_PREFIX)/share/mk/docproj.docbook.mk"</programlisting>
<para>Die Variable <varname>MAINTAINER</varname> ist von
zentraler Bedeutung. Sie legt fest, wer für ein
bestimmtes Dokument des FreeBSD Documentation Projects
verantwortlich ist.</para>
<para><varname>DOC</varname> (ohne die Erweiterung
<filename>.xml</filename>) ist der Name des Hauptdokuments des
Verzeichnisses, in dem sich das Makefile befindet. Mit
<varname>SRCS</varname>-Anweisungen geben Sie alle Dokumente an,
aus denen das Dokument besteht. Zusätzlich binden Sie
damit wichtige Dateien ein, deren Änderung einen erneuten
Bau der Dokumentation erforderlich macht.</para>
<para>Mit <varname>FORMATS</varname> geben Sie an, in welchen
Formaten die Dokumentation gebaut werden soll.
<varname>INSTALL_COMPRESSED</varname> enthält die
Standardvorgaben, die beim Bau komprimierter Pakte der
Dokumentation verwendet werden sollen. Der Variable
<varname>INSTALL_ONLY_COMPRESS</varname> (die in der
Voreinstellung leer ist) wird nur dann ein Wert zugewiesen,
wenn ausschließlich komprimierte Pakete der Dokumentation
erstellt werden sollen.</para>
<para>Die Variable <varname>DOC_PREFIX</varname> und die
verschiedenen Include-Anweisungen sollten Ihnen ebenfalls
bereits vertraut sein.</para>
</sect2>
</sect1>
<sect1 xml:id="make-includes">
<title>&man.make.1;-Includes des &os; Documentation Projects</title>
<para>Diese Dateien lassen sich am besten verstehen, indem man sich
deren Inhalt näher ansieht. Konkret handelt es sich dabei
um folgende Dateien:</para>
<itemizedlist>
<listitem>
<para><filename>doc.project.mk</filename> ist die
Haupt-Include-Datei, die bei Bedarf alle folgenden
Include-Dateien enthält.</para>
</listitem>
<listitem>
<para><filename>doc.subdir.mk</filename> sorgt dafür, dass
alle benötigten Verzeichnisse (und Unterverzeichnisse)
beim Bau der Dokumentation durchlaufen werden.</para>
</listitem>
<listitem>
<para><filename>doc.install.mk</filename> definiert Variablen,
die die Installation der Dokumentation beeinflussen.</para>
</listitem>
<listitem>
<para><filename>doc.docbook.mk</filename> wird verwendet, wenn
die Variable <varname>DOCFORMAT</varname> den Wert
<literal>docbook</literal> hat und die Variable
<varname>DOC</varname> gesetzt ist.</para>
</listitem>
</itemizedlist>
<sect2 xml:id="includes-doc-project-mk">
<title><filename>doc.project.mk</filename></title>
<para>Diese Datei hat folgenden Aufbau:</para>
<programlisting>DOCFORMAT?= docbook
MAINTAINER?= doc@FreeBSD.org
PREFIX?= /usr/local
PRI_LANG?= en_US.ISO8859-1
.if defined(DOC)
.if ${DOCFORMAT} == "docbook"
.include "doc.docbook.mk"
.endif
.endif
.include "doc.subdir.mk"
.include "doc.install.mk"</programlisting>
<sect3 xml:id="doc-project-mk-variables">
<title>Variablen</title>
<para><varname>DOCFORMAT</varname> und <varname>MAINTAINER</varname>
enthalten Standardwerte, falls ihnen über das
Dokument-Makefile keine anderen Werte zugewiesen werden.</para>
<para>Bei <varname>PREFIX</varname> handelt es sich um das
Präfix, unter dem die zum Bau der Dokumentation
erforderlichen <link linkend="tools">SGML-Werkzeuge</link>
installiert sind. In der Regel handelt es sich dabei um
<filename>/usr/local</filename>.</para>
<para><varname>PRI_LANG</varname> sollte auf die Sprache und
Kodierung eingestellt werden, die unter den Leser der
Dokumentation am häufigsten verwendet wird. Diese
Variable hat den Standardwert "US English".</para>
<note>
<para><varname>PRI_LANG</varname> beeinflusst nicht,
welche Dokumente gebaut werden können oder
sollen. Diese Variable wird lediglich dazu verwendet,
häufig verwendete Dokumente in das Wurzelverzeichnis
der installierten Dokumentation zu verlinken.</para>
</note>
</sect3>
<sect3 xml:id="doc-project-mk-conditionals">
<title>Bedingungen</title>
<para>Die Zeile <literal>.if defined(DOC)</literal> ist ein
Beispiel für eine &man.make.1;-Bedingung, die (analog zum
Einsatz in anderen Programmen) festlegt, was geschehen soll,
wenn eine Bedingung "wahr" oder "falsch" ist.
<literal>defined</literal> ist eine Funktion, die
zurückgibt, ob die angegebene Variable existiert oder
nicht.</para>
<para><literal>.if ${DOCFORMAT} == "docbook"</literal> testet,
ob die Variable <varname>DOCFORMAT</varname> den Wert
<literal>"docbook"</literal> hat. Ist dies der Fall, wird
<filename>doc.docbook.mk</filename> mit in den Bau
aufgenommen.</para>
<para>Die zwei <literal>.endif</literal>s schließen die
zwei weiter oben definierten Bedingungen.</para>
</sect3>
</sect2>
<sect2 xml:id="includes-doc-subdir-mk">
<title><filename>doc.subdir.mk</filename></title>
<para>Den Inhalt dieser Datei hier zu beschreiben, würde
zu weit führen. Sie sollten aber nach dem Lesen der
vorangegangenen Abschnitte und der folgenden Ausführungen
in der Lage sein, Inhalt und Aufgabe dieser Datei zu
verstehen.</para>
<sect3 xml:id="doc-subdir-mk-variables">
<title>Variablen</title>
<itemizedlist>
<listitem>
<para><varname>SUBDIR</varname> legt die Unterverzeichnisse
fest, deren Inhalt beim Bau der Dokumentation inkludiert
werden muss.</para>
</listitem>
<listitem>
<para>Mit <varname>ROOT_SYMLINKS</varname> wird der Name der
Verzeichnisse angegeben, die von ihrer tatsächlichen
Position aus in das Wurzelverzeichnis, unter dem die
Dokumentation installiert wird, verlinkt werden sollen.
Vorausgesetzt, bei der verwendeten Sprache handelt es sich
um die primäre Sprache (die über
<varname>PRI_LANG</varname> festgelegt wird).</para>
</listitem>
<listitem>
<para><varname>COMPAT_SYMLINK</varname> wird im Abschnitt
<link linkend="sub-make">Unterverzeichnis-Makefile</link>s
beschrieben.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 xml:id="doc-subdir-mk-targets-macro">
<title>Targets und Makros</title>
<para>Abhängigkeiten
(<foreignphrase>Dependencies</foreignphrase>) werden
folgendermaßen definiert:
<literal><replaceable>target</replaceable>
<replaceable>abhaengigkeit1 abhaengigkeit2 ...</replaceable></literal>.
Um <literal>target</literal> zu bauen, müssen Sie zuvor
die angegebenen Abhängigkeiten bauen.</para>
<para>Daran anschließend können Anweisungen zum
Bau des angegebenen Targets folgen, falls der
Konvertierungsprozess zwischen dem Target und seinen
Abhängigkeiten nicht bereits früher definiert
wurde oder falls die Konvertierung nicht der
Standardkonvertierungsmethode entspricht.</para>
<para>Die spezielle Abhängigkeit <literal>.USE</literal>
definiert das Äquivalent eines Makros.</para>
<programlisting>_SUBDIRUSE: .USE
.for entry in ${SUBDIR}
@${ECHO} "===&gt; ${DIRPRFX}${entry}"
@(cd ${.CURDIR}/${entry} &amp;&amp; \
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
.endfor</programlisting>
<para>In diesem Beispiel kann <buildtarget>_SUBDIRUSE</buildtarget>
nun als Makro, welches die angegebenen Befehle ausführt,
verwendet werden, indem es im Makefile als Abhängigkeit
angegeben wird.</para>
<para>Was unterscheidet dieses Makro nun von beliebigen anderen
Targets? Der Hauptunterschied ist, dass es
<emphasis>nach</emphasis> den Anweisungen der Bauprozedur,
in der es als Abhängigkeit angegeben ist, ausgeführt
wird. Außerdem ändert es die Variable
<varname>.TARGET</varname> (die den Namen des aktuell gebauten
Targets enthält) nicht.</para>
<programlisting>clean: _SUBDIRUSE
rm -f ${CLEANFILES}</programlisting>
<para>In diesem Beispiel führt <buildtarget>clean</buildtarget>
das Makro <buildtarget>_SUBDIRUSE</buildtarget> aus, nachdem es
den Befehl <command>rm -f ${CLEANFILES}</command> erfolgreich
ausgeführt hat. Dadurch löscht
<buildtarget>clean</buildtarget> zwar beim Wechsel in ein neues
<emphasis>Unterverzeichnis</emphasis> beim Bau erstellte
Dateien, aber nicht beim Wechsel aus einem Unterverzeichnis
in ein übergeordnetes Verzeichnis.</para>
<sect4 xml:id="doc-subdir-mk-provided-targets">
<title>Vorhandene Targets</title>
<itemizedlist>
<listitem>
<para><buildtarget>install</buildtarget> und
<buildtarget>package</buildtarget> arbeiten nacheinander
alle Unterverzeichnisse ab und rufen dabei jeweils ihre
realen Versionen (<buildtarget>realinstall</buildtarget>
beziehungsweise <buildtarget>realpackage</buildtarget>)
auf.</para>
</listitem>
<listitem>
<para><buildtarget>clean</buildtarget> entfernt alle
Dateien, die beim Bau der Dokumentation erzeugt wurden
(dies sowohl im aktuellen Verzeichnis als auch in allen
Unterverzeichnissen). <buildtarget>cleandir</buildtarget>
hat die gleiche Aufgabe, würde aber zusätzlich
die Objekt-Verzeichnisse löschen (falls diese
existieren).</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3 xml:id="doc-subdir-mk-conditionals">
<title>Weitere Bedingungen</title>
<itemizedlist>
<listitem>
<para><literal>exists</literal> gibt "wahr" zurück, wenn
die angegebene Datei bereits existiert.</para>
</listitem>
<listitem>
<para><literal>empty</literal> gibt "wahr" zurück, wenn
die angegebene Variable leer ist.</para>
</listitem>
<listitem>
<para><literal>target</literal> gibt "wahr" zurück, wenn
das angegebene Target noch nicht existiert.</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 xml:id="doc-subdir-mk-looping">
<title>Schleifenkonstrukte in
<command>make (.for)</command></title>
<para><literal>.for</literal> erlaubt es, bestimmte
Anweisungen für jedes Element einer Variable zu
wiederholen, indem dieser Variable in jedem Durchlauf
der Schleife das jeweilige Element der untersuchten Liste
zugewiesen wird.</para>
<programlisting>_SUBDIRUSE: .USE
.for entry in ${SUBDIR}
@${ECHO} "===&gt; ${DIRPRFX}${entry}"
@(cd ${.CURDIR}/${entry} &amp;&amp; \
${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ )
.endfor</programlisting>
<para>Falls das Verzeichnis <varname>SUBDIR</varname> leer ist,
würde in unserem Beispiel keine Aktion erfolgen.
Enthält das Verzeichnis hingegen ein oder mehrere
Elemente, werden die Anweisungen zwischen
<literal>.for</literal> und <literal>.endfor</literal>
für jedes Element ausgeführt, wobei
<varname>entry</varname> durch das jeweilige Element ersetzt
werden würde.</para>
</sect3>
</sect2>
</sect1>
</chapter>

View file

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 2013 Warren Block
All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf:
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="docbook-markup">
<title>DocBook Markup (noch nicht übersetzt)</title>
<para>Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte
das <link
xlink:href="&url.books.fdp-primer.en;/docbook-markup.html">Original in
englischer Sprache</link>. Wenn Sie bei der Übersetzung
mithelfen wollen, schicken Sie bitte eine E-Mail
an &a.de.translators;.</para>
</chapter>

View file

@ -1,270 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
$FreeBSD$
$FreeBSDde$
basiert auf: r49220
-->
<!-- Copyright (c) 2013 Warren Block
All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="editor-config">
<info><title>Editor-Konfiguration</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Die korrekte Konfiguration Ihres Texteditors macht die Arbeit
an der Dokumentation einfacher und schneller und hilft Ihnen dabei,
die <acronym>FDP</acronym>-Richtlinien einzuhalten.</para>
<sect1 xml:id="editor-config-vim">
<title><application>Vim</application></title>
<para>Installieren Sie entweder das Paket
<package>editors/vim</package> oder
<package>editors/vim-lite</package>, danach folgen Sie den
Anweisungen in
<xref linkend="editor-config-vim-config"/>.</para>
<sect2 xml:id="editor-config-vim-use">
<title>Verwendung</title>
<para>Drücken Sie die Taste <keycap>P</keycap>, um Absätze
oder Text, den Sie im visuellen Modus ausgewählt haben,
zu formatieren. Drücken Sie die Taste
<keycap>T</keycap>, um 8 Leerzeichen durch einen Tabulator
zu ersetzen.</para>
</sect2>
<sect2 xml:id="editor-config-vim-config">
<title>Konfiguration</title>
<para>Fügen Sie die folgenden Zeilen am Ende der Datei
<filename>~/.vimrc</filename> ein:</para>
<programlisting>if has("autocmd")
au BufNewFile,BufRead *.sgml,*.ent,*.xsl,*.xml call Set_SGML()
au BufNewFile,BufRead *.[1-9] call ShowSpecial()
endif " has(autocmd)
function Set_Highlights()
"match ExtraWhitespace /^\s* \s*\|\s\+$/
highlight default link OverLength ErrorMsg
match OverLength /\%71v.\+/
return 0
endfunction
function ShowSpecial()
setlocal list listchars=tab:>>,trail:*,eol:$
hi def link nontext ErrorMsg
return 0
endfunction " ShowSpecial()
function Set_SGML()
setlocal number
syn match sgmlSpecial "&amp;[^;]*;"
setlocal syntax=sgml
setlocal filetype=xml
setlocal shiftwidth=2
setlocal textwidth=70
setlocal tabstop=8
setlocal softtabstop=2
setlocal formatprg="fmt -p"
setlocal autoindent
setlocal smartindent
" Rewrap paragraphs
noremap P gqj
" Replace spaces with tabs
noremap T :s/ /\t/&lt;CR&gt;
call ShowSpecial()
call Set_Highlights()
return 0
endfunction " Set_SGML()</programlisting>
</sect2>
</sect1>
<sect1 xml:id="editor-config-emacs">
<title><application>Emacs</application></title>
<para>Installieren Sie entweder das Paket
<package>editors/emacs</package> oder
<package>editors/emacs-devel</package>.</para>
<sect2 xml:id="editor-config-emacs-validation">
<title>Validierung</title>
<para>Der xnml-Modus von Emacs verwendet ein kompaktes
RELAX-NG (<quote>Regular Language Description for XML
New Generation</quote>)-Schema, um XML zu validieren. Ein
solches, an DocBook 5.0 von FreeBSD angepasstes Schema ist
im Dokumentationsrepository bereits vorhanden. Damit der
nxml-Modus dieses Schema verwendet, müssen Sie die Datei
<filename>~/.emacs.d/schema/schemas.xml</filename> anlegen und
folgende Zeilen in die Datei einfügen:</para>
<programlisting><tag class="starttag">locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0"</tag>
<tag class="starttag">documentElement localName="section" typeId="DocBook"</tag>
<tag class="starttag">documentElement localName="chapter" typeId="DocBook"</tag>
<tag class="starttag">documentElement localName="article" typeId="DocBook"</tag>
<tag class="starttag">documentElement localName="book" typeId="DocBook"</tag>
<tag class="starttag">typeId id="DocBook" uri="/usr/local/share/xml/docbook/5.0/rng/docbook.rnc"</tag>
<tag class="endtag">locatingRules</tag></programlisting>
</sect2>
<sect2 xml:id="editor-config-emacs-igor">
<title>Automatisches Gegenlesen mit Flycheck und Igor</title>
<para>Das Flycheck-Paket ist über <quote>Milkypostman's
Emacs Lisp Package Archive</quote> (<acronym>MELPA</acronym>)
erhältlich. Ist <acronym>MELPA</acronym> noch nicht in
packages-archives von Emacs eingetragen, muss dies manuell
durch das Ausführen der folgenden Emacs-Anweisung
erfolgen:</para>
<programlisting>(add-to-list 'package-archives '("melpa" . "http://stable.melpa.org/packages/") t)</programlisting>
<para>Um die Änderung permanent zu machen, müssen Sie diese Zeile
in die Initialisierungsdatei von Emacs aufnehmen, konkret in eine
der folgenden Dateien: <filename>~/.emacs</filename>,
<filename>~/.emacs.el</filename> oder
<filename>~.emacs.d/init.el</filename>.</para>
<para>Um Flycheck zu installieren, führen Sie folgende Anweisung
aus:</para>
<programlisting>(package-install 'flycheck)</programlisting>
<para>Legen Sie einen Flycheck-Prüfer für
<package>textproc/igor</package> an, indem Sie die folgende
Anweisung ausführen:</para>
<programlisting>(flycheck-define-checker igor
"FreeBSD Documentation Project sanity checker.
See URLs http://www.freebsd.org/docproj/ and
http://www.freshports.org/textproc/igor/."
:command ("igor" "-X" source-inplace)
:error-parser flycheck-parse-checkstyle
:modes (nxml-mode)
:standard-input t)
(add-to-list 'flycheck-checkers 'igor 'append)</programlisting>
<para>Wie bei MELPA müssen Sie auch diese Anweisung in die
Initialisierungsdatei von Emacs aufnehmen, um sie permanent
zu aktivieren.</para>
</sect2>
<sect2 xml:id="editor-config-emacs-specifc">
<title>FreeBSD-Dokumentationsspezische Einstellungen</title>
<para>Um FreeBSD-spezifische Einstellungen zu aktivieren, legen
Sie die Datei <filename>.dir-locals.el</filename> im
Wurzelverzeichnis des Dokumentationsrepositories an und fügen
die folgenden Zeilen in diese Datei ein:</para>
<programlisting>;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((nxml-mode
(eval . (turn-on-auto-fill))
(fill-column . 70)
(eval . (require 'flycheck))
(eval . (flycheck-mode 1))
(flycheck-checker . igor)
(eval . (add-to-list 'rng-schema-locating-files "~/.emacs.d/schema/schemas.xml"))))</programlisting>
</sect2>
</sect1>
<sect1 xml:id="editor-config-nano">
<title><application>nano</application></title>
<para>Installieren Sie das Paket <package>editors/nano</package>
oder <package>editors/nano-devel</package>.</para>
<sect2 xml:id="editor-config-nano-config">
<title>Konfiguration</title>
<para>Kopieren Sie die Syntaxhighlighting-Datei für
<acronym>XML</acronym> in ihr Homeverzeichnis:</para>
<screen>&prompt.user; <userinput>cp /usr/local/share/nano/xml.nanorc ~/.nanorc</userinput></screen>
<para>Fügen Sie die folgenden Zeilen in die Datei
<filename>~/.nanorc</filename> ein:</para>
<programlisting>syntax "xml" "\.([jrs]html?|xml|xslt?)$"
# trailing whitespace
color ,blue "[[:space:]]+$"
# multiples of eight spaces at the start a line
# (after zero or more tabs) should be a tab
color ,blue "^([TAB]*[ ]{8})+"
# tabs after spaces
color ,yellow "( )+TAB"
# highlight indents that have an odd number of spaces
color ,red "^(([ ]{2})+|(TAB+))*[ ]{1}[^ ]{1}"
# lines longer than 70 characters
color ,yellow "^(.{71})|(TAB.{63})|(TAB{2}.{55})|(TAB{3}.{47}).+$"</programlisting>
<para>Verarbeiten Sie diese Datei, um eingebettete Tabulatoren
zu erzeugen:</para>
<screen>&prompt.user; <userinput>perl -i'' -pe 's/TAB/\t/g' ~/.nanorc</userinput></screen>
</sect2>
<sect2 xml:id="editor-config-nano-use">
<title>Verwendung</title>
<para>Starten Sie Nano mit zusätzlichen hilfreichen
Parametern:</para>
<screen>&prompt.user; <userinput>nano -AKipwz -r 70 -T8 <replaceable>chapter.xml</replaceable></userinput></screen>
<para>Verwenden Sie &man.csh.1;, können Sie in
<filename>~/.cshrc</filename> einen Alias für diese Parameter
anlegen:</para>
<programlisting>alias nano "nano -AKipwz -r 70 -T8"</programlisting>
<para>Nachdem der Alias definiert wurde, werden diese Parameter
künftig automatisch angewendet:</para>
<screen>&prompt.user; <userinput>nano <replaceable>chapter.xml</replaceable></userinput></screen>
</sect2>
</sect1>
</chapter>

View file

@ -1,373 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 2000 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r39632
-->
<appendix xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="examples">
<title>Beispiele</title>
<para>In diesem Anhang sind XML-Beispieldokumente und Befehle
enthalten, die zeigen, wie man aus DocBook-Dokumenten verschiedene
Ausgabeformate erzeugen kann. Sofern alle Werkzeuge für das
Dokumentationsprojekt ordnungsgemäß installiert wurden,
können die angebotenen Beispiele direkt übernommen
werden.</para>
<para>Die Beispiele dieses Abschnitts sind bewusst einfach aufgebaut.
Daher fehlen in den Beispielen einige Elemente, insbesondere
Elemente für die Titelei. Weitere DocBook-Beispiele
können in den DocBook-Quellen dieses und anderer Dokumente
des FDPs gefunden werden. Die Quellen des FDPs sind im
<application>svn</application> doc-Repository und online unter <uri xlink:href="http://svnweb.FreeBSD.org/doc/">http://svnweb.FreeBSD.org/doc/</uri> verfügbar.</para>
<para>Um Irritationen zu vermeiden, bauen die XML-Beispiele auf der
4.1er Standard-DocBook DTD anstatt auf der erweiterten
FreeBSD-Variante auf. Ebenso werden die Standardstylesheets von
Norman Welsh, anstatt der angepassten Stylesheets des
FreeBSD-Dokumentationsprojektes benutzt. Dadurch eignen sich die
Beispiele auch als generische DocBook-Vorlagen.</para>
<sect1 xml:id="examples-docbook-book">
<title>DocBook-Buch (<tag>book</tag>)</title>
<example>
<title>Ein DocBook-Buch (<tag>book</tag>)</title>
<programlisting><![CDATA[<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<book lang='de'>
<bookinfo>
<title>Ein Buchbeispiel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>vorname.nachname@domain.de</email></address>
</affiliation>
</author>
<copyright>
<year>2000</year>
<holder>Urheberhinweis</holder>
</copyright>
<abstract>
<para>Falls das Buch eine Zusammenfassung hat, sollte sie
hier stehen.</para>
</abstract>
</bookinfo>
<preface>
<title>Einleitung</title>
<para>Falls das Buch eine Einleitung hat, sollte diese hier
stehen.</para>
</preface>
<chapter>
<title>Das erste Kapitel</title>
<para>Das ist das erste Kapitel des Buches.</para>
<sect1>
<title>Der erste Abschnitt</title>
<para>Das ist der erste Abschnitte des Buches.</para>
</sect1>
</chapter>
</book>]]></programlisting>
</example>
</sect1>
<sect1 xml:id="examples-docbook-article">
<title>DocBook-Artikel (<tag>article</tag>)</title>
<example>
<title>Ein DocBook-Artikel (<tag>article</tag>)</title>
<programlisting><![CDATA[<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang='de'>
<articleinfo>
<title>Ein Beispielartikel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
<address><email>vorname.nachname@domain.de</email></address>
</affiliation>
</author>
<copyright>
<year>2000</year>
<holder>Urheberhinweis</holder>
</copyright>
<abstract>
<para>Falls der Artikel eine Zusammenfassung hat, sollte sie
hier stehen.</programlisting>
</abstract>
</articleinfo>
<sect1>
<title>Der erste Abschnitt</title>
<para>Das ist der erste Abschnitt des Artikels.</para>
<sect2>
<title>Der erste Unterabschnitt</title>
<para>Das ist der erste Unterabschnitt des Artikels.</para>
</sect2>
</sect1>
</article>]]></programlisting>
</example>
</sect1>
<sect1 xml:id="examples-formatted">
<title>Ausgabeformate erzeugen</title>
<para>Für diesen Abschnitt wird vorausgesetzt, dass die
im Port <package>textproc/docproj</package>
enthaltene Software manuell oder über das Portssystem
installiert wurde. Weiter wird vorausgesetzt, dass alle
Programme unterhalb des Verzeichnisses
<filename>/usr/local</filename> installiert
worden sind und die Verzeichnisse, die die ausführbaren
Programme enthalten, in der Variable <envar>PATH</envar>
enthalten sind.</para>
<sect2>
<title>Benutzung von Jade</title>
<example>
<title>Ein DocBook-Dokument in eine einzelne HTML-Datei
umwandeln</title>
<screen>&prompt.user; <userinput>jade -V nochunks \ <co xml:id="examples-co-jade-1-nochunks"/>
-c /usr/local/share/xml/docbook/dsssl/modular/catalog \ <co xml:id="examples-co-jade-1-catalog"/>
-c /usr/local/share/xml/docbook/catalog \
-c /usr/local/share/xml/jade/catalog \
-d /usr/local/share/xml/docbook/dsssl/modular/html/docbook.dsl \<co xml:id="examples-co-jade-1-dsssl"/>
-t sgml <co xml:id="examples-co-jade-1-transform"/> datei.xml &gt; datei.html <co xml:id="examples-co-jade-1-filename"/></userinput></screen>
<calloutlist>
<callout arearefs="examples-co-jade-1-nochunks">
<para>Übergibt den Parameter
<literal>nochunks</literal> an die Stylesheets. Dadurch
wird die gesamte Ausgabe in die Standardausgabe
geschrieben (bei der Benutzung
von Norm Walshs Stylesheets).</para>
</callout>
<callout arearefs="examples-co-jade-1-catalog">
<para>Legt die von <application>Jade</application> zur
Verarbeitung benötigten
drei Kataloge fest. Der erste Katalog enthält
Informationen zu den DSSSL-Stylesheets, der zweite zur
DocBook DTD und der dritte
<application>Jade</application>-spezifische Informationen.</para>
</callout>
<callout arearefs="examples-co-jade-1-dsssl">
<para>Übergibt den vollen Pfad zum
DSSSL-Stylesheet, das von <application>Jade</application> zur
Verarbeitung des Dokuments benutzt wird.</para>
</callout>
<callout arearefs="examples-co-jade-1-transform">
<para>Weist <application>Jade</application> an, eine
<emphasis>Transformation</emphasis> von einer DTD zu
einer anderen DTD vorzunehmen. In diesem Falle, von der
DocBook DTD zur HTML DTD.</para>
</callout>
<callout arearefs="examples-co-jade-1-filename">
<para>Legt fest, welche Datei <application>Jade</application>
verarbeiten soll und leitet die Ausgabe in die Datei
<filename>datei.html</filename> um.</para>
</callout>
</calloutlist>
</example>
<example>
<title>Ein DocBook-Dokument in mehrere kleine HTML-Dateien umwandeln</title>
<screen>&prompt.user; <userinput>jade \
-c /usr/local/share/xml/docbook/dsssl/modular/catalog \ <co xml:id="examples-co-jade-2-catalog"/>
-c /usr/local/share/xml/docbook/catalog \
-c /usr/local/share/xml/jade/catalog \
-d /usr/local/share/xml/docbook/dsssl/modular/html/docbook.dsl \<co xml:id="examples-co-jade-2-dsssl"/>
-t sgml <co xml:id="examples-co-jade-2-transform"/> datei.xml <co xml:id="examples-co-jade-2-filename"/></userinput></screen>
<calloutlist>
<callout arearefs="examples-co-jade-2-catalog">
<para>Legt die von <application>Jade</application>
zur Verarbeitung benötigten
drei Kataloge fest. Der erste Katalog enthält
Informationen zu den DSSSL-Stylesheets, der zweite zur
DocBook DTD und der dritte Jade-spezifische
Informationen.</para>
</callout>
<callout arearefs="examples-co-jade-2-dsssl">
<para>Übergibt den vollen Pfad zum
DSSSL-Stylesheet, das von
<application>Jade</application> zur
Verarbeitung des Dokuments benutzt wird.</para>
</callout>
<callout arearefs="examples-co-jade-2-transform">
<para>Weist <application>Jade</application> an, eine
<emphasis>Transformation</emphasis> von einer DTD zu
einer anderen DTD vorzunehmen. In diesem Falle, von der
DocBook DTD zur HTML DTD.</para>
</callout>
<callout arearefs="examples-co-jade-2-filename">
<para>Legt die zu verarbeitende Datei fest. Die
Stylesheets ermitteln eigenständig die Namen aller
HTML-Ausgabedateien.</para>
</callout>
</calloutlist>
<para>Abhängig von der Struktur des zu verarbeitenden
Dokumentes und den Stylesheetregeln zur Aufteilung des
Dokumentes, kann dieser Befehl auch nur eine einzelne
HTML-Datei erzeugen.</para>
</example>
<example xml:id="examples-docbook-postscript">
<title>Ein DocBook-Dokument nach Postscript umwandeln</title>
<para>Um eine Postscript-Ausgabe zu erzeugen, muss zuerst
die XML-Quelle in eine &tex;-Datei umgewandelt werden.</para>
<screen>&prompt.user; <userinput>jade -V tex-backend \ <co xml:id="examples-co-jade-3-tex-backend"/>
-c /usr/local/share/xml/docbook/dsssl/modular/catalog \ <co xml:id="examples-co-jade-3-catalog"/>
-c /usr/local/share/xml/docbook/catalog \
-c /usr/local/share/xml/jade/catalog \
-d /usr/local/share/xml/docbook/dsssl/modular/print/docbook.dsl \<co xml:id="examples-co-jade-3-dsssl"/>
-t tex <co xml:id="examples-co-jade-3-tex"/> datei.xml</userinput></screen>
<calloutlist>
<callout arearefs="examples-co-jade-3-tex-backend">
<para>Weist die Stylesheets an, verschiedene
&tex;-spezifische Optionen zu benutzen.</para>
</callout>
<callout arearefs="examples-co-jade-3-catalog">
<para>Legt die von <application>Jade</application>
zur Verarbeitung benötigten
drei Kataloge fest. Der erste Katalog enthält
Informationen zu den DSSSL-Stylesheets, der zweite zur
DocBook DTD und der dritte Jade-spezifische
Informationen.</para>
</callout>
<callout arearefs="examples-co-jade-3-dsssl">
<para>Übergibt den vollen Pfad zum
DSSSL-Stylesheet, das von
<application>Jade</application> zur
Verarbeitung des Dokuments benutzt wird.</para>
</callout>
<callout arearefs="examples-co-jade-3-tex">
<para>Weist <application>Jade</application> an,
die Ausgabe in eine &tex;-Datei umzuwandeln.</para>
</callout>
</calloutlist>
<para>Die so erzeugte <filename>.tex</filename>-Datei
muss anschließend mittels <command>tex</command>,
unter Angabe des Makropakets
<literal>&amp;jadetex</literal> weiterverarbeitet
werden.</para>
<screen>&prompt.user; <userinput>tex "&amp;jadetex" datei.tex</userinput></screen>
<para><command>tex</command> muss <emphasis>mindestens</emphasis>
dreimal ausgeführt werden. Der erste Lauf ermittelt die
die Querverweise innerhalb des Dokumentes, die
für Stichwortverzeichnisse und ähnliches
benötigt werden.</para>
<para>Warnungen, wie <errorname>LaTeX Warning: Reference `136'
on page 5 undefined on input line 728.</errorname>, die zu
diesem Zeitpunkt ausgegeben werden, können ohne
weiteres ignoriert werden.</para>
<para>Der zweite Lauf kann jetzt, da mehr Informationen, wie
zum Beispiel die Seitenlängen, zur Verfügung
stehen, Einträge im Stichwortverzeichnis und
Querverweise genauer bestimmen.</para>
<para>Der dritte Lauf ist für abschließende
Aufräumarbeiten notwendig. Die so von
<command>tex</command> erzeugte Ausgabe befindet sich
anschließend in der Datei
<filename>datei.div</filename>.</para>
<para>Zum Schluss muss noch <command>dvips</command>
aufgerufen werden, um die <filename>.div</filename>-Datei in
ein Postscript-Dokument umzuwandeln.</para>
<screen>&prompt.user; <userinput>dvips -o datei.ps datei.dvi</userinput></screen>
</example>
<example>
<title>Eine PDF-Datei aus einem DocBook-Dokument
erzeugen</title>
<para>Die ersten Schritte, um ein DocBook-Dokument in ein PDF
umzuwandeln, stimmen mit denen überein, die notwendig sind,
um eine Postscript-Ausgabe zu erzeugen (<xref linkend="examples-docbook-postscript"/>).</para>
<para>Nachdem die <filename>.tex</filename>-Datei durch
<application>Jade</application> erzeugt wurde, muss
<application>pdfTeX</application> stattdessen mit dem
Makropaket <literal>&amp;pdfjadetex</literal> aufgerufen
werden.</para>
<screen>&prompt.user; <userinput>pdftex "&amp;pdfjadetex" datei.tex</userinput></screen>
<para>Dieser Befehl muss ebenfalls dreimal ausgeführt werden.
Am Ende liegt mit
<filename>datei.pdf</filename>
das fertige PDF-Dokument vor. Weitere Schritte sind jetzt
nicht mehr notwendig.</para>
</example>
</sect2>
</sect1>
</appendix>

View file

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 2013 Warren Block
All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf:
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="manpages">
<title>Manualpages (noch nicht übersetzt)</title>
<para>Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte
das <link
xlink:href="&url.books.fdp-primer.en;/manpages.html">Original in
englischer Sprache</link>. Wenn Sie bei der Übersetzung
mithelfen wollen, schicken Sie bitte eine E-Mail
an &a.de.translators;.</para>
</chapter>

View file

@ -1,267 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r46642
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="overview">
<title>Überblick</title>
<para>Herzlich Willkommen beim FreeBSD-Dokumentationsprojekt
(auch nur <acronym>FDP</acronym> genannt). Qualitativ hochwertige
Dokumentation ist sehr wichtig für den Erfolg von &os;. Jeder
Beitrag, der zu diesem Projekt geleistet wird, ist ungemein wertvoll.</para>
<para>Dieses Dokument macht den Leser mit dem
<acronym>FDP</acronym> vertraut und erklärt, wie man
selbst Dokumente erstellt und einreicht und wie die verfügbaren
Werkzeuge effektiv beim Schreiben eingesetzt werden
können.</para>
<para>Jeder kann zum <acronym>FDP</acronym> beitragen. Die einzige
Voraussetzung ist die Bereitschaft, helfen zu wollen.</para>
<para>Nach dem Lesen dieses Dokuments werden Sie in der Lage sein,</para>
<itemizedlist>
<listitem>
<para>die vom <acronym>FDP</acronym> betreuten Dokumente zu
erkennen,</para>
</listitem>
<listitem>
<para>die benötigten Dokumentations-Werkzeuge und Dateien
zu installieren,</para>
</listitem>
<listitem>
<para>Änderungen an der Dokumentation vorzunehmen,</para>
</listitem>
<listitem>
<para>Änderungen zur Begutachtung durch das FDP
einreichen können.</para>
</listitem>
</itemizedlist>
<sect1 xml:id="overview-doc">
<title>Die FreeBSD-Dokumentationsreihe</title>
<para>Das FDP umfasst vier verschiedene Kategorien:</para>
<itemizedlist>
<listitem>
<para><emphasis>Handbook:</emphasis> Das Handbuch ist die
umfassende Quelle und Referenz für &os;-Benutzer.</para>
</listitem>
<listitem>
<para><emphasis>FAQ:</emphasis> Eine Sammlung von kurzen
Fragen und Antworten zu Themen, die auf den
verschiedenen Mailinglisten und in auf &os; spezialisierten
Foren regelmäßig diskutiert werden. Lange und komplizierte
Antworten werden Sie hier nicht finden.</para>
</listitem>
<listitem>
<para><emphasis>Manualpages:</emphasis> Die englischen
Manualpages werden normalerweise nicht vom FDP
geschrieben, da sie ein Teil des Basissystems sind. Jedoch
können bzw. wurden bereits Teile von existierenden
Manualpages umformuliert, um sie verständlicher zu
machen oder um Fehler zu beheben.</para>
</listitem>
<listitem>
<para><emphasis>Die Webseite:</emphasis> Die Hauptpräsenz
von &os; im Internet, zu erreichen unter <link
xlink:href="http://www.freebsd.org/index.html">http://www.FreeBSD.org</link>
oder einem der zahlreichen Spiegelserver. Für viele Menschen
ist sie der erste Kontakt mit &os;.</para>
</listitem>
</itemizedlist>
<para>Übersetzer-Teams sind für die Übersetzung des Handbuchs und
der Webseite in verschiedene Sprachen verantwortlich. Manualpages
werden derzeit nicht übersetzt.</para>
<para>Die Quellen für die FreeBSD-Website, das &os; Handbuch
sowie die &os; <acronym>FAQ</acronym> werden im
Dokumentations-Repository von &os; verwaltet, das Sie über
<literal>https://svn.FreeBSD.org/doc/</literal> erreichen
können.</para>
<para>Manualpages werden von &os; im einem eigenen
Quellcode-Repository verwaltet, das Sie über
<literal>https://svn.FreeBSD.org/base/</literal> erreichen
können.</para>
<para>Committ-Nachrichten des <acronym>FDP</acronym>
sind über <application>svn</application> abrufbar und werden
zusätzlich unter
<uri xlink:href="&a.svn-doc-all.url;">&a.svn-doc-all.url;</uri>
archiviert.</para>
<para>Beide Repositories sind auch über ein Web-Interface erreichbar:
<link xlink:href="https://svnweb.FreeBSD.org/doc/"></link> sowie
<link xlink:href="https://svnweb.FreeBSD.org/base/"></link>.</para>
<para>Viele Menschen haben &os;-spezifische Anleitungen
geschrieben und Webseiten mit Bezug zu FreeBSD erstellt. Einige
davon werden im Subversion-Archiv verwaltet, sofern der Autor dem
zugestimmt hat. In anderen Fällen hat sich der Autor
entschlossen, seine Dokumentation außerhalb des zentralen
FreeBSD-Archivs zu verwalten. Das <acronym>FDP</acronym> bemüht sich,
so viele Verweise wie möglich auf solche Quellen
bereitzustellen.</para>
</sect1>
<sect1 xml:id="overview-quick-start">
<title>Schnellstart</title>
<para>Dieser Abschnitt beschreibt, was Sie tun müssen, bevor
Sie Änderungen an der &os;-Dokumentation vornehmen können.
Abonnieren Sie zuerst die Mailingliste &a.doc;. Einige Mitglieder
dieser Mailingliste sind auch auf dem <acronym>IRC</acronym>-Kanal
<literal>#bsddocs</literal> auf <link
xlink:href="http://www.efnet.org/">EFnet</link> erreichbar. Nehmen
Sie mit Ihnen Kontakt auf, wenn Sie Fragen oder Probleme bei
der Arbeit an der &os;-Dokumentation haben.</para>
<procedure>
<step>
<para>Installieren Sie den Metaport
<package>textproc/docproj</package> als Port oder Paket, um
automatisch alle für die Arbeit an der Dokumentation benötigten
Werkzeuge zu installieren.</para>
</step>
<step>
<para>Installieren Sie eine lokale Arbeitskopie der Dokumentation
von einem Spiegelserver des &os;-Repository nach
<filename>~/doc</filename> (lesen Sie dazu
auch <xref linkend="working-copy"/>).</para>
<screen>&prompt.user; <userinput>svn checkout https://<replaceable>svn0.us-west.FreeBSD.org</replaceable>/doc/head <replaceable>~/doc</replaceable></userinput></screen>
</step>
<step>
<para>Ihr Texteditor sollte für die Arbeit an der
&os;-Dokumentation wie folgt konfiguriert sein:</para>
<itemizedlist>
<listitem>
<para>Zeilenumbruch nach 70 Zeichen.</para>
</listitem>
<listitem>
<para>Tabstop auf 2 Zeichen.</para>
</listitem>
<listitem>
<para>8 Leerzeichen sollen durch einen Tabstop ersetzt
werden.</para>
</listitem>
</itemizedlist>
<para>Konfigurationen für einige häufig verwendete Editoren
finden Sie im <xref linkend="writing-style"/>.</para>
</step>
<step>
<para>Aktualisieren Sie Ihre lokale Arbeitskopie:</para>
<screen>&prompt.user; <userinput>svn up <replaceable>~/doc</replaceable></userinput></screen>
</step>
<step>
<para>Bearbeiten Sie die Datei. Bevor Sie umfangreiche Änderungen
an einer Datei vornehmen, kündigen Sie die geplanten Änderungen
bitte auf der Mailingliste an.</para>
<para>Eine Auflistung häufig verwendeter Tags und
Entities finden Sie in <xref linkend="xhtml-markup"/> und
in <xref linkend="docbook-markup"/>.</para>
</step>
<step>
<para>Nachdem Sie Ihre Änderungen vorgenommen haben, prüfen
Sie diese auf potentielle Probleme:</para>
<screen>&prompt.user; <userinput>igor -R filename.xml | less -RS</userinput></screen>
<para>Werden Fehler gemeldet, editieren Sie die Datei erneut.
Speichern Sie das Ergebnis und fühen Sie den Test erneut aus.
Wiederholen Sie dies solange, bis keine Fehler mehr gemeldet
werden.</para>
</step>
<step>
<para>Bauen Sie die Dokumentation <emphasis>immer</emphasis>,
bevor Sie Änderungen einreichen. Dazu führen Sie
<userinput>make</userinput> im Hauptverzeichnis des
Dokuments aus, dass Sie gerade bearbeiten. Um beispielsweise
die deutsche Version des &os;-Handbuchs als einzelne
<acronym>HTML</acronym>-Dateien zu bauen, führen Sie
<userinput>make</userinput> im Verzeichnis
<filename>de_DE.ISO8859-1/books/handbook/</filename> aus.
Durch diesen Schritt wird sichergestellt, dass Ihre
Änderungen den Bau der Dokumentation nicht wegen eines
Fehlers abbrechen.</para>
</step>
<step>
<para>Wenn Ihre Änderungen abgeschlossen und erfolgreich
getestet wurden, erzeugen Sie eine
<quote>Differenzdatei</quote> mit Ihren Änderungen:</para>
<screen>&prompt.user; <userinput>cd ~/doc</userinput>
&prompt.user; <userinput>svn diff &gt; <replaceable>bsdinstall</replaceable>.diff.txt</userinput></screen>
<para>Geben Sie der Differenzdatei einen aussagekräftigen Namen.
Im angegebenen Bespiel wurden Änderungen im Abschnitt
<filename>bsdinstall</filename> des Handbuchs vorgenommen.</para>
</step>
<step>
<para>Reichen Sie Ihre Änderungen über das webbasierte <link
xlink:href="&url.base;/support.html#gnats">Problembericht-Formular</link>
ein. Geben Sie eine kurze Beschreibung in der Form
<emphasis>[patch] <replaceable>kurze Beschreibung des Problems</replaceable></emphasis>
ein. Als Kategorie wählen Sie <literal>docs</literal>
und als Klasse <literal>doc-bug</literal>. Danach geben
Sie eine Beschreibung Ihrer Änderungen ein sowie eventuelle
weitere wichtige Punkte. Verwenden Sie danach den Button
<guibutton>[&nbsp;Browse...&nbsp;]</guibutton>, um Ihre
Differenzdatei hochzuladen.</para>
</step>
</procedure>
</sect1>
</chapter>

View file

@ -1,960 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
The FreeBSD Documentation Project
$FreeBSD$
$FreeBSDde$
basiert auf: r52724
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="po-translations">
<info><title><acronym>PO</acronym>-Übersetzungen</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<sect1 xml:id="po-translations-introduction">
<title>Einführung</title>
<para>Das <link
xlink:href="http://www.gnu.org/software/gettext/"><acronym>GNU</acronym>
<application>gettext</application></link>-System bietet
Übersetzern eine einfache Möglichkeit, Übersetzungen von
Dokumenten zu erstellen und zu verwalten. Übersetzbare Strings
werden dabei aus dem Originaldokument extrahiert und in eine
<acronym>PO</acronym>-Datei (Portable Object-Datei) gespeichert.
Übersetzte Versionen der Strings werden über einen zusätzlichen
Editor eingefügt. Diese Strings können danach direkt verwendet
werden oder zu einer kompletten Übersetzung des Originaldokuments
zusammengefügt werden.</para>
</sect1>
<sect1 xml:id="po-translations-quick-start">
<title>Schnellstart</title>
<para>Die Anleitung geht davon aus, das Sie die Anweisungen in
<xref linkend="overview-quick-start"/> bereits ausgeführt haben.
Außerdem muss die Option <literal>TRANSLATOR</literal> aktiviert
werden. Dies erfolgt automatisch während der Installation des Ports
<package role="port">textproc/docproj</package>.</para>
<para>Das folgende Beispiel zeigt, wie Sie den kurzen Artikel
<link xlink:href="&url.articles.leap-seconds.en;">Leap
Seconds</link> auf Spanisch übersetzen.</para>
<procedure xml:id="po-translations-quick-start-install-po-editor">
<title>Installieren Sie einen <acronym>PO</acronym>-Editor</title>
<step>
<para>Sie benötigen einen <acronym>PO</acronym>-Editor, um die
Übersetzungsdateien zu bearbeiten. Dieses Beispiel verwendet
dafür <package role="ports">editors/poedit</package>.</para>
<screen>&prompt.root; <userinput>cd /usr/ports/editors/poedit</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
</step>
</procedure>
<procedure xml:id="po-translations-quick-start-initial-setup">
<title>Grundkonfiguration</title>
<para>Wenn Sie mit der Arbeit an einer bisher nicht existierenden
Sprache oder einem nicht existierenden Dokument beginnen wollen,
müssen Sie zuerst die Verzeichnisstruktur und ein
<filename>Makefile</filename> anlegen oder von der englischen
Originalversion kopieren:</para>
<step>
<para>Legen Sie ein Verzeichnis für die neue Übersetzung an.
Der Quellcode des englischen Artikel befindet sich unter
<filename>~/doc/en_US.ISO8859-1/articles/leap-seconds/</filename>.
Die spanische Übersetzung muss daher im Verzeichnis
<filename>~/doc/es_ES.ISO8859-1/articles/leap-seconds/</filename>
erstellt werden. Der Pfad ist also (abgesehen vom
sprachspezifischen Verzeichnis) identisch.</para>
<screen>&prompt.user; <userinput>svn mkdir --parents ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput></screen>
</step>
<step>
<para>Kopieren Sie das <filename>Makefile</filename> des
Originaldokuments in das Übersetzungsverzeichnis:</para>
<screen>&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/articles/leap-seconds/Makefile \
~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput></screen>
</step>
</procedure>
<procedure xml:id="po-translations-quick-start-translation">
<title>Übersetzung</title>
<para>Das Übersetzen eines Dokuments erfolgt in zwei Schritten,
zuerst werden die zu übersetzenden Strings aus dem
Originaldokument extrahiert, um sie anschließend zu
übersetzen. Diese beiden Schritte werden wiederholt, bis
ein brauchbares übersetztes Dokument entstanden ist.</para>
<step>
<para>Extrahieren Sie die zu übersetzenden Strings aus der
originalen englischen Version und speichern Sie diese
in einer <acronym>PO</acronym>-Datei:</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput>
&prompt.user; <userinput>make po</userinput></screen>
</step>
<step>
<para>Verwenden Sie einen <acronym>PO</acronym>-Editor, um
Ihre Übersetzungen in der <acronym>PO</acronym>-Datei zu
speichern. Dafür gibt es diverse Editoren, dieses Beispiel
verwendet <filename>poedit</filename> (das Sie über den
Port <package role="port">editors/poedit</package>
installieren können).</para>
<para>Der Name der <acronym>PO</acronym>-Datei setzt sich aus
einem zwei Zeichen langen Sprachcode, gefolgt von einem
Unterstrich sowie einem ebenfalls zwei Zeichen langen
Regionencode zusammen. Für eine Übersetzung ins Spanische
heißt die Datei daher <filename>es_ES.po</filename>.</para>
<screen>&prompt.user; <userinput>poedit es_ES.po</userinput></screen>
</step>
</procedure>
<procedure xml:id="po-translations-quick-generating-a-translated-document">
<title>Ein übersetztes Dokument bauen</title>
<step>
<para>Bauen Sie das übersetzte Dokument:</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/leap-seconds/</userinput>
&prompt.user; <userinput>make tran</userinput></screen>
<para>Der Name der erzeugten Datei entspricht dem Namen
der englischen Originaldatei, normalerweise also
<filename>article.xml</filename> für Artikel oder
<filename>book.xml</filename> für Bücher.</para>
</step>
<step>
<para>Überprüfen Sie die gebaute Datei, indem Sie sie
in <acronym>HTML</acronym> bauen und in einem
Internetbrowser öffnen:</para>
<screen>&prompt.user; <userinput>make FORMATS=html</userinput>
&prompt.user; <userinput>firefox article.html</userinput></screen>
</step>
</procedure>
</sect1>
<sect1 xml:id="po-translations-creating">
<title>Bisher nicht exisitierende Dokumente übersetzen</title>
<para>Der erste Schritt, um ein neues Dokument zu übersetzen, besteht
darin, ein Verzeichnis zu suchen oder zu erstellen, in dem die
Übersetzung gespeichert werden soll. &os; legt alle übersetzten
Dokumente in einem Unterverzeichnis ab, dessen Name sich aus der
Sprache und aus der Region in der Form
<filename><replaceable>lang</replaceable>_<replaceable>REGION</replaceable></filename>
zusammensetzt. <replaceable>lang</replaceable> ist ein Code,
der immer aus zwei Zeichen in Kleinbuchstaben besteht. Auf ihn
folgt ein Unterstrich und danach der Code für die
<replaceable>REGION</replaceable> (der aus zwei Zeichen in
Großbuchstaben besteht).</para>
<table xml:id="po-translations-language-names" frame="none">
<title>Existierende Sprachen</title>
<tgroup cols="5">
<thead>
<row>
<entry>Sprache</entry>
<entry>Region</entry>
<entry>Übersetzungsverzeichnis</entry>
<entry><acronym>PO</acronym>Dateiname</entry>
<entry>Zeichensatz</entry>
</row>
</thead>
<tbody>
<row>
<entry>Englisch</entry>
<entry>Vereinigte Staaten von Amerika</entry>
<entry><filename>en_US.ISO8859-1</filename></entry>
<entry><filename>en_US.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Bengalisch</entry>
<entry>Bangladesch</entry>
<entry><filename>bn_BD.UTF-8</filename></entry>
<entry><filename>bn_BD.po</filename></entry>
<entry><acronym>UTF</acronym>-8</entry>
</row>
<row>
<entry>Dänisch</entry>
<entry>Dänemark</entry>
<entry><filename>da_DK.ISO8859-1</filename></entry>
<entry><filename>da_DK.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Deutsch</entry>
<entry>Deutschland</entry>
<entry><filename>de_DE.ISO8859-1</filename></entry>
<entry><filename>de_DE.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Griechisch</entry>
<entry>Griechenland</entry>
<entry><filename>el_GR.ISO8859-7</filename></entry>
<entry><filename>el_GR.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-7</entry>
</row>
<row>
<entry>Spanisch</entry>
<entry>Spanien</entry>
<entry><filename>es_ES.ISO8859-1</filename></entry>
<entry><filename>es_ES.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>French</entry>
<entry>France</entry>
<entry><filename>fr_FR.ISO8859-1</filename></entry>
<entry><filename>fr_FR.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Ungarisch</entry>
<entry>Ungarn</entry>
<entry><filename>hu_HU.ISO8859-2</filename></entry>
<entry><filename>hu_HU.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-2</entry>
</row>
<row>
<entry>Italienisch</entry>
<entry>Italien</entry>
<entry><filename>it_IT.ISO8859-15</filename></entry>
<entry><filename>it_IT.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-15</entry>
</row>
<row>
<entry>Japanisch</entry>
<entry>Japan</entry>
<entry><filename>ja_JP.eucJP</filename></entry>
<entry><filename>ja_JP.po</filename></entry>
<entry><acronym>EUC</acronym> JP</entry>
</row>
<row>
<entry>Koreanisch</entry>
<entry>Korea</entry>
<entry><filename>ko_KR.UTF-8</filename></entry>
<entry><filename>ko_KR.po</filename></entry>
<entry><acronym>UTF</acronym>-8</entry>
</row>
<row>
<entry>Mongolisch</entry>
<entry>Mongolien</entry>
<entry><filename>mn_MN.UTF-8</filename></entry>
<entry><filename>mn_MN.po</filename></entry>
<entry><acronym>UTF</acronym>-8</entry>
</row>
<row>
<entry>Holländisch</entry>
<entry>Niederlande</entry>
<entry><filename>nl_NL.ISO8859-1</filename></entry>
<entry><filename>nl_NL.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Polnisch</entry>
<entry>Polen</entry>
<entry><filename>pl_PL.ISO8859-2</filename></entry>
<entry><filename>pl_PL.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-2</entry>
</row>
<row>
<entry>Portugisisch</entry>
<entry>Brasilien</entry>
<entry><filename>pt_BR.ISO8859-1</filename></entry>
<entry><filename>pt_BR.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-1</entry>
</row>
<row>
<entry>Russisch</entry>
<entry>Russland</entry>
<entry><filename>ru_RU.KOI8-R</filename></entry>
<entry><filename>ru_RU.po</filename></entry>
<entry><acronym>KOI</acronym>8-R</entry>
</row>
<row>
<entry>Türkisch</entry>
<entry>Türkei</entry>
<entry><filename>tr_TR.ISO8859-9</filename></entry>
<entry><filename>tr_TR.po</filename></entry>
<entry><acronym>ISO</acronym> 8859-9</entry>
</row>
<row>
<entry>Chinesisch</entry>
<entry>China</entry>
<entry><filename>zh_CN.UTF-8</filename></entry>
<entry><filename>zh_CN.po</filename></entry>
<entry><acronym>UTF</acronym>-8</entry>
</row>
<row>
<entry>Chinesisch</entry>
<entry>Taiwan</entry>
<entry><filename>zh_TW.UTF-8</filename></entry>
<entry><filename>zh_TW.po</filename></entry>
<entry><acronym>UTF</acronym>-8</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Die Übersetzungen befinden sich in Unterverzeichnissen
des Hauptverzeichnisses der Dokumentation (in den Beispielen
von <xref linkend="overview-quick-start"/> ist dies
<filename>~/doc/</filename>). Die deutschen
Übersetzungen befinden sich daher beispielsweise unter
<filename>~/doc/de_DE.ISO8859-1/</filename>, französische
Übersetzungen hingegen unter
<filename>~/doc/fr_FR.ISO8859-1/</filename>.</para>
<para>Jede Sprache enthält Unterverzeichnisse für die
verschiedenen Dokumenttypen, also üblicherweise
<filename>articles/</filename> und
<filename>books/</filename>.</para>
<para>Kombiniert man diese Verzeichnisnamen, erhält man den
kompletten Pfad zu einem Artikel oder zu einem Buch. Die
französische Übersetzung des NanoBSD-Artikels ist daher etwa
unter <filename>~/doc/fr_FR.ISO8859-1/articles/nanobsd/</filename>
gespeichert, die mongolische Übersetzung des Handbuchs hingegen
unter
<filename>~/doc/mn_MN.UTF-8/books/handbook/</filename>.</para>
<para>Soll ein Dokument in eine bisher nicht existierende Sprache
übersetzt werden, muss zuerst ein sprachspezifisches Verzeichnis
erstellt werden. Existiert die Sprache hingegen schon, muss
nur ein Unterverzeichnis unterhalb von
<filename>articles/</filename> oder <filename>books/</filename>
angelegt werden (falls noch nicht vorhanden).</para>
<para>Der Bau der &os;-Dokumentation wird durch ein
<filename>Makefile</filename> gesteuert, das sich im gleichen
Verzeichnis wie die Übersetzung befindet. Für einfache Artikel
kann dieses <filename>Makefile</filename> oft unverändert aus
der englischen Originalversion übernommen werden. Der
Übersetzungsprozess für Bücher ist hingegen komplizierter, da
dabei verschiedene getrennte <filename>book.xml</filename> und
<filename>chapter.xml</filename>-Dateien in ein gemeinsames
Dokument integriert werden, das <filename>Makefile</filename>
für die Übersetzung eines Buches muss daher in der Regel immer
kopiert und angepasst werden.</para>
<example xml:id="po-translations-creating-example">
<title>Die spanische Übersetzung des Porter's Handbook
erstellen</title>
<para>Starten Sie die bisher nicht vorhandene spanische
Übersetzung des <link
xlink:href="&url.books.porters-handbook.en;">Porter's
Handbook</link>. Das originale Dokument ist ein Buch im
Verzeichnis
<filename>~/doc/en_US.ISO8859-1/books/porters-handbook/</filename>.</para>
<procedure>
<step>
<para>Das Verzeichnis für die spanische Übersetzung
(<filename>~/doc/es_ES.ISO8859-1/books/</filename>) existiert
bereits, daher müssen Sie nur ein Unterverzeichnis für das
Porter's Handbook anlegen:</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/</userinput>
&prompt.user; <userinput>svn mkdir porters-handbook</userinput>
A porters-handbook</screen>
</step>
<step>
<para>Kopieren Sie das <filename>Makefile</filename> des
Originalen Buchs in den neuen Ordner:</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/books/porters-handbook/Makefile .</userinput>
A Makefile</screen>
<para>Passen Sie das <filename>Makefile</filename> an,
damit es nur eine einzige <filename>book.xml</filename>
als Eingabe erwartet:</para>
<programlisting>#
# &dollar;FreeBSD&dollar;
#
# Build the FreeBSD Porter's Handbook.
#
MAINTAINER=doc@FreeBSD.org
DOC?= book
FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
# XML content
SRCS= book.xml
# Images from the cross-document image library
IMAGES_LIB+= callouts/1.png
IMAGES_LIB+= callouts/2.png
IMAGES_LIB+= callouts/3.png
IMAGES_LIB+= callouts/4.png
IMAGES_LIB+= callouts/5.png
IMAGES_LIB+= callouts/6.png
IMAGES_LIB+= callouts/7.png
IMAGES_LIB+= callouts/8.png
IMAGES_LIB+= callouts/9.png
IMAGES_LIB+= callouts/10.png
IMAGES_LIB+= callouts/11.png
IMAGES_LIB+= callouts/12.png
IMAGES_LIB+= callouts/13.png
IMAGES_LIB+= callouts/14.png
IMAGES_LIB+= callouts/15.png
IMAGES_LIB+= callouts/16.png
IMAGES_LIB+= callouts/17.png
IMAGES_LIB+= callouts/18.png
IMAGES_LIB+= callouts/19.png
IMAGES_LIB+= callouts/20.png
IMAGES_LIB+= callouts/21.png
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
<para>Damit steht die Dokumentstruktur bereit und Sie können
die <acronym>PO</acronym>-Datei mit
<command>make po</command> erstellen.</para>
</step>
</procedure>
</example>
<example xml:id="po-translations-creating-example-french">
<title>Die französische Übersetzung des
<acronym>PGP</acronym> Keys-Artikels erstellen</title>
<para>Starten Sie die bisher nicht vorhandene Übersetzung des
<link xlink:href="&url.articles.pgpkeys.en;"><acronym>PGP</acronym>
Keys-Artikels</link>. Das englische Original ist ein Artikel,
der sich im Verzeichnis
<filename>~/doc/en_US.ISO8859-1/articles/pgpkeys/</filename>
befindet.</para>
<procedure>
<step>
<para>Das Verzeichnis für französische Artikel
(<filename>~/doc/fr_FR.ISO8859-1/articles/</filename>)
existiert bereits, Sie müssen daher nur ein neues
Unterverzeichnis für den <acronym>PGP</acronym> Keys-Artikel
anlegen:</para>
<screen>&prompt.user; <userinput>cd ~/doc/fr_FR.ISO8859-1/articles/</userinput>
&prompt.user; <userinput>svn mkdir pgpkeys</userinput>
A pgpkeys</screen>
</step>
<step>
<para>Kopieren Sie das <filename>Makefile</filename> des
originalen Artikels:</para>
<screen>&prompt.user; <userinput>cd ~/doc/fr_FR.ISO8859-1/articles/pgpkeys</userinput>
&prompt.user; <userinput>svn cp ~/doc/en_US.ISO8859-1/articles/pgpkeys/Makefile .</userinput>
A Makefile</screen>
<para>Überprüfen Sie das <filename>Makefile</filename>. Da es
sich um einen einfachen Artikel handelt, sind vermutlich
keine Änderungen am <filename>Makefile</filename> nötig.
Der Inhalt der zweiten Zeile (<literal>$&os;...$</literal>)
wird durch das Versionskontrollsystem ersetzt werden, wenn
diese Datei committet wird.</para>
<programlisting>#
# &dollar;FreeBSD&dollar;
#
# Article: PGP Keys
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
# To build with just key fingerprints, set FINGERPRINTS_ONLY.
URL_RELPREFIX?= ../../../..
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"</programlisting>
<para>Damit steht die Dokumentstruktur bereit und Sie können
die <acronym>PO</acronym>-Datei mit
<command>make po</command> erstellen.</para>
</step>
</procedure>
</example>
</sect1>
<sect1 xml:id="po-translations-translating">
<title>Übersetzen</title>
<para>Das <application>gettext</application>-System macht die
Übersetzung von Dokumenten einfacher, weil sich der Übersetzer
dadurch um weniger Dinge kümmern muss. Die zu übersetzenden
Strings werden aus dem Originaldokument in eine
<acronym>PO</acronym>-Datei extrahiert. Danach wird ein
<acronym>PO</acronym>-Editor verwendet, um die übersetzten
Strings einzugeben.</para>
<para>Das von &os; verwendete
<acronym>PO</acronym>-Übersetzungssystem überschreibt
<acronym>PO</acronym>-Dateien nicht, daher können die Strings
jederzeit extrahiert werden, um die
<acronym>PO</acronym>-Datei zu aktualisieren.</para>
<para>Ein <acronym>PO</acronym>-Editor wird zum Bearbeiten der
Datei benötigt. Die Beispiele in diesem Abschnitt verwenden
<package role="port">editors/poedit</package>, da es sich dabei
um einen einfach zu bedienenden Editor mit nur wenigen
Abhängigkeiten handelt. Es gibt aber auch diverse andere
<acronym>PO</acronym>-Editoren, die zusätzliche Funktionen
haben, die bei der Übersetzung von Dokumenten helfen. Die
Ports-Sammlung enthält verschiedene dieser Editoren,
beispielsweise <package
role="port">devel/gtranslator</package>.</para>
<para>Löschen Sie die <acronym>PO</acronym>-Datei auf keinen
Fall, da Sie alle Änderungen enthält, die Übersetzer
vorgenommen haben.</para>
<example xml:id="po-translations-translating-example">
<title>Die spanische Version des Porter's Handbook
übersetzen</title>
<para>Beginnen Sie mit der Übersetzung des spanischen
Porter's Handbook.</para>
<procedure>
<step>
<para>Wechseln Sie in das Verzeichnis des spanischen
Porter's Handbook und aktualisieren Sie die
<acronym>PO</acronym>-Datei (wie bereits in
<xref linkend="po-translations-language-names"/>
erwähnt, heißt diese Datei
<filename>es_ES.po</filename>.</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
&prompt.user; <userinput>make po</userinput></screen>
</step>
<step>
<para>Laden Sie die Datei in Ihren
<acronym>PO</acronym>-Editor und beginnen Sie mit
der Übersetzung:</para>
<screen>&prompt.user; <userinput>poedit es_ES.po</userinput></screen>
</step>
</procedure>
</example>
</sect1>
<sect1 xml:id="po-translations-tips">
<title>Tips für Übersetzer</title>
<sect2 xml:id="po-translations-tips-xmltags">
<title><acronym>XML</acronym>-Tags beibehalten</title>
<para>Achten Sie darauf, dass Sie keine <acronym>XML</acronym>-Tags
des englischen Originals verändern.</para>
<example>
<title><acronym>XML</acronym>-Tags beibehalten</title>
<para>Englisches Original:</para>
<programlisting>If <tag class="starttag">acronym</tag>NTP<tag class="endtag">acronym</tag> is not being used</programlisting>
<para>Spanische Übersetzung:</para>
<programlisting>Si <tag class="starttag">acronym</tag>NTP<tag class="endtag">acronym</tag> no se utiliza</programlisting>
</example>
</sect2>
<sect2 xml:id="po-translations-tips-spaces">
<title>Leerzeichen beibehalten</title>
<para>Achten Sie darauf, dass Sie Leerzeichen am Beginn und am
Ende der zu übersetzenden Strings beibehalten. Ihre
Übersetzung muss diese Strings ebenfalls enthalten.</para>
</sect2>
<sect2 xml:id="po-translations-tips-verbatim">
<title>Nicht zu übersetzende Tags</title>
<para>Die folgenden Tags dürfen nicht übersetzt werden:</para>
<itemizedlist xml:id="po-translations-tips-verbatim-list">
<listitem>
<para><tag class="starttag">citerefentry</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">command</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">filename</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">literal</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">manvolnum</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">orgname</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">package</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">programlisting</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">prompt</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">refentrytitle</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">screen</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">userinput</tag></para>
</listitem>
<listitem>
<para><tag class="starttag">varname</tag></para>
</listitem>
</itemizedlist>
</sect2>
<!-- WIP WIP WIP -->
<sect2 xml:id="po-translations-literal-dollar">
<title><literal>&dollar;FreeBSD&dollar;</literal>-Strings</title>
<para>&dollar;FreeBSD&dollar;-Versionsstrings erfordern eine
spezielle Behandlung. In Codebeispielen wie in
<xref linkend="po-translations-creating-example"/> sollen
diese Strings NICHT expandiert werden. Englische Dokumente
verwenden deshalb die Entität <literal>&amp;dollar;</literal>,
damit das Dollarzeichen nicht in die Datei eingefügt werden
muss:</para>
<programlisting>&amp;dollar;FreeBSD&amp;dollar;</programlisting>
<para>Die Entität <literal>&amp;dollar;</literal> wird vom
Versionskontrollsystem nicht als Dollarzeichen interpretiert
und daher auch nicht in einen Versionsstring expandiert.</para>
<para>Wenn Sie eine <acronym>PO</acronym>-Datei erzeugen, wird
die Entität <literal>&amp;dollar;</literal> allerdings wieder
durch das aktuelle Dollarzeichen ersetzt. Dies führt dazu,
dass der dadurch enstandene String
<literal>&dollar;FreeBSD&dollar;</literal> beim Commit im
Versionskontrollsystem fälschlicherweise wieder expandiert
wird.</para>
<para>Gehen Sie daher analog zum englischen Originaldokument
vor und ersetzen Sie das Dollarzeichen in der übersetzten
<acronym>PO</acronym>-Datei wiederum durch die Entität
<literal>&amp;dollar;</literal>:</para>
<programlisting>&amp;dollar;FreeBSD&amp;dollar;</programlisting>
</sect2>
<!--
<sect2 xml:id="po-translations-tips-makefile">
<title>Modifying the <filename>Makefile</filename></title>
<para>What needs to be changed in the
<filename>Makefile</filename>?</para>
</sect2>
<sect2 xml:id="po-translations-tips-locale">
<title>Setting Locales for Editing</title>
<para>Locale settings so the <acronym>PO</acronym> editor works
correctly?</para>
</sect2>
<sect2 xml:id="po-translations-tips-poeditors">
<title>Settings for Specific <acronym>PO</acronym>
Editors</title>
<para>Per bcr: turn off "intelligent quotes" in
Mac poedit.</para>
</sect2>
<sect2 xml:id="po-translations-tips-tm">
<title>Using Translation Memory</title>
<para>Using translation memory. Saving, updating, sharing
with other members of a translation team.</para>
</sect2>
<sect2 xml:id="po-translations-tips-submitting">
<title>Submitting Translations</title>
<para>Submitting translations as diffs, committing
<acronym>PO</acronym> files.</para>
</sect2>
-->
</sect1>
<sect1 xml:id="po-translations-building">
<title>Ein übersetztes Dokument bauen</title>
<para>Eine übersetzte Version eines Originaldokuments kann
jederzeit erzeugt werden. Noch nicht übersetzte Teile des
Dokuments werden dabei in Englisch verbleiben. Die meisten
<acronym>PO</acronym>-Editoren zeigen Ihnen an, welcher
Anteil des Dokuments bereits übersetzt ist. Dies erleichtert
es dem Übersetzer zu beurteilen, ob sich der Bau des finalen
Dokuments bereits lohnt oder nicht.</para>
<example xml:id="po-translations-building-example">
<title>Die spanische Version des Porter's Handbook bauen</title>
<para>Bauen Sie die spanische Version des Porter's Handbooks, das
in einem früheren Beispiel erzeugt wurde und überprüfen Sie das
Ergebnis.</para>
<procedure>
<step>
<para>Bauen Sie das Dokument. Da das Original vom Typ Buch
(<emphasis>book</emphasis>) ist, heißt das erzeugte Dokument
<filename>book.xml</filename>.</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/books/porters-handbook</userinput>
&prompt.user; <userinput>make tran</userinput></screen>
</step>
<step>
<para>Erzeugen Sie aus der <filename>book.xml</filename> eine
<acronym>HTML</acronym>-Version des Dokuments und lassen Sie
sich das Ergebnis in <application>Firefox</application>
anzeigen. Für die englische Dokumentation gehen Sie analog
vor. Eine Liste aller verfügbaren Werte für die Variable
<varname>FORMATS</varname> finden Sie in <xref
linkend="doc-build-rendering-common-formats"/>.</para>
<screen>&prompt.user; <userinput>make FORMATS=html</userinput>
&prompt.user; <userinput>firefox book.html</userinput></screen>
</step>
</procedure>
</example>
</sect1>
<sect1 xml:id="po-translations-submitting">
<title>Neue Übersetzungen einreichen</title>
<para>Die neue Übersetzung ist nun zum Einreichen bereit. Um eine
neue Übersetzung einzureichen, müssen Sie die neuen Übersetzungen
in das Versionskontrollsystem einfügen, die Dateieigenschaften
anpassen und eine Differenz erstellen, die Sie dann einreichen
können.</para>
<para>Die in den folgenden Beispielen erstellten Differenzen können
Sie entweder als <link
xlink:href="https://bugs.freebsd.org/bugzilla/enter_bug.cgi?product=Documentation">Documentation
Bug Report</link> oder als <link
xlink:href="https://reviews.freebsd.org/">Code Review</link>
einreichen.</para>
<example xml:id="po-translations-submitting-spanish">
<title>Die Spanische Übersetzung des NanoBSD-Artikel</title>
<procedure>
<step>
<para>Fügen Sie in die <acronym>PO</acronym>-Datei als erste
Zeile einen Kommentar mit dem &os;-Versionsstring ein:</para>
<programlisting>#&dollar;FreeBSD&dollar;</programlisting>
</step>
<step>
<para>Nehmen Sie das <filename>Makefile</filename>, die
<acronym>PO</acronym>-Datei und die erzeugte
<acronym>XML</acronym>-Übersetzung in die Versionskontrolle
auf:</para>
<screen>&prompt.user; <userinput>cd ~/doc/es_ES.ISO8859-1/articles/nanobsd/</userinput>
&prompt.user; <userinput>ls</userinput>
Makefile article.xml es_ES.po
&prompt.user; <userinput>svn add Makefile article.xml es_ES.po</userinput>
A Makefile
A article.xml
A es_ES.po</screen>
</step>
<step>
<para>Setzen Sie die
<application>Subversion</application>-Eigenschaft
<literal>svn:keywords</literal> auf
<literal>FreeBSD=%H</literal>. Diese Eigenschaft sorgt
später beim Commit dafür, dass der String
<literal>&dollar;FreeBSD&dollar;</literal>
erweitert wird und den Pfad, die Revision, das Datum und den
Autor des Committs enthält:</para>
<screen>&prompt.user; <userinput>svn propset svn:keywords FreeBSD=%H Makefile article.xml es_ES.po</userinput>
property 'svn:keywords' set on 'Makefile'
property 'svn:keywords' set on 'article.xml'
property 'svn:keywords' set on 'es_ES.po'</screen>
</step>
<step>
<para>Setzen Sie den korrekten <acronym>MIME</acronym>-Typ für
die neuen Dateien. Für Bücher und Artikel ist dies
<literal>text/xml</literal>, für die <acronym>PO</acronym>-Datei
hingegen <literal>text/x-gettext-translation</literal>.</para>
<screen>&prompt.user; <userinput>svn propset svn:mime-type text/x-gettext-translation es_ES.po</userinput>
property 'svn:mime-type' set on 'es_ES.po'
&prompt.user; <userinput>svn propset svn:mime-type text/xml article.xml</userinput>
property 'svn:mime-type' set on 'article.xml'</screen>
</step>
<step>
<para>Wechseln Sie nach <filename>~/doc/</filename> und erstellen
Sie aus diesem Basisverzeichnis eine Differenz, damit der
komplette Pfad in der Differenz angezeigt wird. Dies erleichert
es Committern, das korrekte Zielverzeichnis zu identifizieren:</para>
<screen>&prompt.user; <userinput>cd ~/doc</userinput>
<userinput>svn diff es_ES.ISO8859-1/articles/nanobsd/ > /tmp/es_nanobsd.diff</userinput></screen>
</step>
</procedure>
</example>
<example xml:id="po-translations-submitting-korean-utf8">
<title>Koreanische <acronym>UTF-8</acronym>-Übersetzung des
Explaining-BSD-Artikels</title>
<procedure>
<step>
<para>Fügen Sie in die <acronym>PO</acronym>-Datei als erste
Zeile einen Kommentar mit dem &os;-Versionsstring ein:</para>
<programlisting>#&dollar;FreeBSD&dollar;</programlisting>
</step>
<step>
<para>Nehmen Sie das <filename>Makefile</filename>, die
<acronym>PO</acronym>-Datei und die erzeugte
<acronym>XML</acronym>-Übersetzung in die Versionskontrolle
auf:</para>
<screen>&prompt.user; <userinput>cd ~/doc/ko_KR.UTF-8/articles/explaining-bsd/</userinput>
&prompt.user; <userinput>ls</userinput>
Makefile article.xml ko_KR.po
&prompt.user; <userinput>svn add Makefile article.xml ko_KR.po</userinput>
A Makefile
A article.xml
A ko_KR.po</screen>
</step>
<step>
<para>Setzen Sie die
<application>Subversion</application>-Eigenschaft
<literal>svn:keywords</literal> auf
<literal>FreeBSD=%H</literal>. Diese Eigenschaft sorgt später
beim Commit dafür, dass der String
<literal>&dollar;FreeBSD&dollar;</literal>
erweitert wird und den Pfad, die Revision, das Datum und den
Autor des Committs enthält:</para>
<screen>&prompt.user; <userinput>svn propset svn:keywords FreeBSD=%H Makefile article.xml ko_KR.po</userinput>
property 'svn:keywords' set on 'Makefile'
property 'svn:keywords' set on 'article.xml'
property 'svn:keywords' set on 'ko_KR.po'</screen>
</step>
<step>
<para>Setzen Sie den korrekten <acronym>MIME</acronym>-Typ für
alle Dateien. Da die Dateien mit dem
<acronym>UTF-8</acronym>-Charakterset erstellt wurden, muss
dies ebenfalls angegeben werden. Um zu verhindern, dass das
Versionskontrollsystem diese Dateien als Binärdateien erkennt,
müssen Sie die Eigenschaft <literal>fbsd:notbinary</literal>
setzen:</para>
<screen>&prompt.user; <userinput>svn propset svn:mime-type 'text/x-gettext-translation; charset=UTF-8' ko_KR.po</userinput>
property 'svn:mime-type' set on 'ko_KR.po'
&prompt.user; <userinput>svn propset fbsd:notbinary yes ko_KR.po</userinput>
property 'fbsd:notbinary' set on 'ko_KR.po'
&prompt.user; <userinput>svn propset svn:mime-type 'text/xml; charset=UTF-8' article.xml</userinput>
property 'svn:mime-type' set on 'article.xml'
&prompt.user; <userinput>svn propset fbsd:notbinary yes article.xml</userinput>
property 'fbsd:notbinary' set on 'article.xml'</screen>
</step>
<step>
<para>Wechseln Sie nach <filename>~/doc/</filename> und erstellen
Sie aus diesem Basisverzeichnis eine Differenz, damit der
komplette Pfad in der Differenz angezeigt wird. Dies erleichert
es Committern, das korrekte Zielverzeichnis zu identifizieren:</para>
<screen>&prompt.user; <userinput>cd ~/doc</userinput>
<userinput>svn diff ko_KR.UTF-8/articles/explaining-bsd > /tmp/ko-explaining.diff</userinput></screen>
</step>
</procedure>
</example>
</sect1>
</chapter>

View file

@ -1,209 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r39632
Anmerkungen:
Dieser Text wurde nach dem Lesen von "Technisches Schreiben
(nicht nur) fuer Informatiker" ueberarbeitet.
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="psgml-mode">
<title><literal>sgml-mode</literal> und
<application>Emacs</application></title>
<para>Neuere <application>Emacs</application>- und
<application>XEmacs</application>-Versionen verfügen
über ein nützliches Lisp-Paket namens PSGML. PSGML
(das über den Port <package>editors/psgml</package> installiert werden kann) ist
ein so genannter <foreignphrase>Majormode</foreignphrase>, der
Funktionen speziell für den Umgang mit SGML-Dateien,
-Elementen und deren Attributen bereit stellt. Emacs aktiviert
PSGML automatisch, wenn eine Datei mit der Endung
<filename>.xml</filename> geladen oder der Befehl <command>M-X
sgml-mode</command> eingegeben wird.</para>
<para>Die Arbeit an SGML-Dokumenten wie dem FreeBSD-Handbuch kann
sich wesentlich einfacher gestalten, wenn einige der Funktionen
von PSGML gekannt sind:</para>
<variablelist>
<varlistentry>
<term><command>C-c C-e</command></term>
<listitem>
<para>Ruft die Funktion <function>sgml-insert-element</function>
auf, die nach dem Namen des einzufügenden Elements
fragt. Ist dieser eingegeben worden und wurde die
<keycap>Eingabetaste</keycap> gedrückt, fügt die
Funktion Start- und Endtag des neuen Elements ein. Sofern
das eingefügte Element laut DTD andere Elemente
enthalten muß, werden diese ebenfalls
eingefügt.</para>
<para>Falls Sie unsicher sind, wie der Name des
gewünschten Elements lautet oder welche Elemente an der
aktuellen Position erlaubt sind, können mittels der
Taste <keycap>Tab</keycap> alle <emphasis>an dieser
Stelle</emphasis> möglichen Elemente angezeigt
werden. Ebenso ermöglicht <keycap>Tab</keycap> die
Vervollständigung eines bereits eingegebenen
Elementnamens.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c =</command></term>
<listitem>
<para>Ruft die Funktion
<function>sgml-change-element-name</function> auf, mit der das
aktuelle Element &ndash; das Element zwischen dessen Start-
und Endtag sich der Cursor befindet &ndash; ausgewechselt
werden kann. Die Funktion fragt nach dem Namen des neuen
Elements und ersetzt anschließend Start- und Endtag
des alten Elements durch die des neuen Elements.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c C-r</command></term>
<listitem>
<para>Ruft die Funktion <function>sgml-tag-region</function>
auf, die einen markierten Textabschnitt mit einem Element
umschließt. Dazu markieren Sie zuerst den Textabschnitt
(gehen Sie zum Anfang des Abschnitts und führen Sie
<command>C-space</command> aus, dann gehen Sie zum Ende des
Abschnitts und führen erneut <command>C-space</command>
aus), danach führen Sie diese Funktion aus. Sie werden
nach dem Namen des einzufügenden Elements gefragt. Dessen
Start-Tag wird dann am Anfang des markierten Textes
eingefügt, dessen End-Tag am Ende des markierten
Texts.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c -</command></term>
<listitem>
<para>Ruft die Funktion <function>sgml-untag-element</function>
auf, die Start- und Endtag des Elements entfernt, innerhalb
dessen sich der Cursor befindet.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c C-q</command></term>
<listitem>
<para>Ruft die Funktion <function>sgml-fill-element</function>
auf. Diese Funktion formatiert<footnote>
<para>Formatieren bedeutet in diesem Zusammenhang,
dass die Funktion versucht, soviel Zeichen wie
möglich in einer Zeile unterzubringen. Die Stelle,
bis zu der gefüllt und dann der Zeilemumbruch
erfolgt, ist konfigurierbar.</para>
</footnote> den Inhalt des aktuellen Elements neu. Dieser
Vorgang betrifft auch Elemente wie
<tag>programlisting</tag>, in denen Leerzeichen und
ähnliches Teil der Formatierung sind. Aus diesem Grund
ist mit <literal>sgml-fill-element</literal> bedächtig
umzugehen.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c C-a</command></term>
<listitem>
<para>Ruft die Funktion
<function>sgml-edit-attributes</function> auf. Diese
öffnet einen zweiten Puffer mit allen Attributen des
Elements, innerhalb dessen sich der Cursor befindet.
Über <keycap>Tab</keycap> kann von einem Attribut zum
nächsten gewechselt werden. Ein existierender
Attributwert kann mit <command>C-k</command> gelöscht
werden. Die Tastenfolge <command>C-c C-c</command>
schließt den Puffer und setzt die Attribute des
Elements entsprechend den Puffervorgaben.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c C-v</command></term>
<listitem>
<para>Ruft die Funktion <function>sgml-validate</function> auf,
die zuerst fragt, ob das aktuelle Dokument gespeichert
werden soll und anschließend einen SGML-Validator
aufruft. Die Ausgaben des Validators werden in einem neuen
Puffer angezeigt. Dadurch hat der Benutzer die
Möglichkeit, eventuell vom Validator gefundene Fehler
zu korrigieren.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><command>C-c /</command></term>
<listitem>
<para>Startet die Funktion <function>sgml-insert-end-tag</function>,
die automatisch das passende End-Tag für das gerade
offene Element einfügt.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Zweifellos hat PSGML noch weitere nützliche Funktionen, doch
die hier genannten sind die, die der Autor dieser Fibel am meisten
benutzt.</para>
<para>Um den richtigen Einzug, die Umwandlung von Tabulatoren in
Leerzeichen und die maximale Zeilenlänge für Dokumente des FDPs
sicherzustellen, kann folgender Eintrag in
<filename>.emacs</filename> vorgenommen werden:</para>
<programlisting> (defun local-sgml-mode-hook
(setq fill-column 70
indent-tabs-mode nil
next-line-add-newlines nil
standard-indent 4
sgml-indent-data t)
(auto-fill-mode t)
(setq sgml-catalog-files '("/usr/local/share/xml/catalog")))
(add-hook 'psgml-mode-hook
'(lambda () (local-psgml-mode-hook)))</programlisting>
</chapter>

View file

@ -1,122 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r39631
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="see-also">
<title>Weiterführende Quellen</title>
<para>In dieser Fibel werden absichtlich nicht alle Aspekte von
XML, der erwähnten DTDs und des
FreeBSD-Dokumentationsprojekts behandelt. Interessierten werden daher
die nachfolgenden Quellen empfohlen.</para>
<sect1 xml:id="see-also-fdp">
<title>Das FreeBSD-Dokumentationsprojekt</title>
<itemizedlist>
<listitem>
<para><link xlink:href="&url.base;/docproj/index.html">Die
Webseiten des
FreeBSD-Dokumentationsprojektes</link></para>
</listitem>
<listitem>
<para><link xlink:href="&url.books.handbook;/index.html">Das
FreeBSD-Handbuch</link></para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="see-also-xml">
<title>XML</title>
<itemizedlist>
<listitem>
<para><link xlink:href="http://www.w3.org/XML/">W3C's
XML-Webseite</link>, eine umfangreiche Quelle zu
XML.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="see-also-html">
<title>HTML</title>
<itemizedlist>
<listitem>
<para><link xlink:href="http://www.w3.org/">Das
World-Wide-Web-Konsortium</link></para>
</listitem>
<listitem>
<para><link xlink:href="http://www.edition-w3.de/TR/1999/REC-html401-19991224/">Die
HTML 4.0-Spezifikation</link></para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="see-also-docbook">
<title>DocBook</title>
<itemizedlist>
<listitem>
<para><link xlink:href="http://www.oasis-open.org/docbook/">The
DocBook Technical Committee</link>, die Betreuer der
DocBook-DTD.</para>
</listitem>
<listitem>
<para><link xlink:href="http://www.docbook.org/">DocBook: The
Definitive Guide</link>, die Online-Dokumentation zur
DocBook-DTD.</para>
</listitem>
<listitem>
<para><link xlink:href="http://docbook.sourceforge.net/">The DocBook
Open Repository</link> bietet DSSSL-Stilvorlagen und
andere Ressourcen für DocBook-Benutzer an.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="see-also-linuxdoc">
<title>Das Linux-Dokumentationsprojekt</title>
<itemizedlist>
<listitem>
<para>Die Webseiten des <link xlink:href="http://www.tldp.org/">Linux-Dokumenationsprojektes</link>.</para>
</listitem>
</itemizedlist>
</sect1>
</chapter>

File diff suppressed because it is too large Load diff

View file

@ -1,327 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r46365
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="structure">
<info><title>Dokumentation-Verzeichnisstruktur</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Die Struktur der Dateien und Ordner unterhalb von
<filename>doc/</filename> hilft dabei,</para>
<orderedlist>
<listitem>
<para>die automatische Konvertierung der Dokumente in andere
Formate einfach zu gestalten,</para>
</listitem>
<listitem>
<para>die Konsistenz zwischen den verschiedenen auf diese Weise
organisierten Dokumenten sicherzustellen, was die parallele
Bearbeitung verschiedener Dokumente vereinfacht, sowie</para>
</listitem>
<listitem>
<para>die Entscheidung, wo neue Dokumente innerhalb des Baumes
platziert werden sollen, leichter zu machen.</para>
</listitem>
</orderedlist>
<para>Zusätzlich wird dadurch dem Umstand Rechnung getragen,
dass die Dokumentation in verschiedenen Sprachen und Kodierungen
vorhanden sein kann. Es ist von großer Bedeutung, dass
die Struktur des Dokumentationsbaumes dabei dennoch einheitlich
bleibt.</para>
<sect1 xml:id="structure-top">
<title><filename>doc/</filename> als höchste Ebene</title>
<para>Unterhalb von <filename>doc/</filename> existieren zwei
Arten von Verzeichnissen, die jeweils über spezifische
Dateinamen und eine spezifische Bedeutung verfügen.</para>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Verzeichnis</entry>
<entry>Bedeutung</entry>
</row>
</thead>
<tbody>
<row>
<entry valign="top"><filename>share</filename></entry>
<entry>Enthält Dateien, die für alle Sprachen und
Kodierungen der Dokumentation gültig sind. Es
enthält weitere Unterverzeichnisse, um diese
Informationen zu kategorisieren. So enthält
<filename class="directory">share/mk</filename>
beispielsweise die Dateien,
die die &man.make.1;-Infrastruktur bilden, während
sich die für die <acronym>XML</acronym>-Unterstützung nötigen
Dateien (darunter die FreeBSD DocBook <acronym>DTD</acronym>) unter
<filename>share/xml</filename> befinden.</entry>
</row>
<row>
<entry valign="top"><filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable></filename></entry>
<entry>Für jede verfügbare Sprache und Kodierung
existiert ein eigenes Unterverzeichnis. Beispiele dafür
sind <filename>en_US.ISO8859-1/</filename> oder
<filename>zh_TW.UTF-8/</filename>. Zwar sind diese
Verzeichnisnamen nicht gerade kurz, durch die vollständige
Angabe von Sprache und Kodierung werden aber Probleme bei einer
eventuellen Erweiterung der Dokumentation (etwa um eine
zusätzliche Kodierung für eine bereits vorhandene
Sprache) vermieden. Auch eine eventuelle Konvertierung der
Dokumentation nach Unicode ist dadurch problemlos
möglich.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 xml:id="structure-locale">
<title>Die Verzeichnisse
<filename><replaceable>Sprache</replaceable>.<replaceable>Kodierung</replaceable>/</filename></title>
<para>Diese Verzeichnisse enthalten die eigentliche Dokumentation.
Auf dieser Ebene erfolgt eine Unterteilung in drei Kategorien,
die durch entsprechende Verzeichnisnamen gekennzeichnet
werden.</para>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Verzeichis</entry>
<entry>Bedeutung</entry>
</row>
</thead>
<tbody>
<row>
<entry valign="top"><filename>articles</filename></entry>
<entry>DocBook-formatierte Artikel (<tag>article</tag>)
oder ähnliche Dokumente. Meist relativ kurz und in
Abschnitte aufgeteilt. Artikel sind in der Regel als ein
einziges, großes <acronym>XHTML</acronym>-Dokument verfügbar.</entry>
</row>
<row>
<entry valign="top"><filename>books</filename></entry>
<entry>DocBook-formatierte Bücher (<tag>book</tag>)
oder ähnliche Dokumente. Umfangreiche Dokumente,
die in Kapitel aufgeteilt werden. Sind in der Regel sowohl
als eine einzige, große <acronym>XHTML</acronym>-Datei (für Personen
mit einer schnellen Internetanbindung oder für einen
einfachen Druck über ein Browser) oder als eine
Sammlung von vielen kleinen, miteinander verlinkten Dateien
verfügbar.</entry>
</row>
<row>
<entry valign="top"><filename>man</filename></entry>
<entry>Dient für Übersetzungen von Manualpages. Es
enthält ein oder mehrere <filename
role="directory">man<replaceable>n</replaceable></filename>-Verzeichnisse,
je nachdem, welche Abschnitte der Manualpages bereits
übersetzt wurden.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Nicht jedes <filename
role="directory"><replaceable>Sprache</replaceable>.<replaceable>Kodierung</replaceable></filename>-Verzeichnis
enthält all diese Unterverzeichnisse. Ob ein Verzeichnis
vorhanden ist, hängt vielmehr davon ab, ob bereits ein
entsprechender Teil der Dokumentation übersetzt wurde.</para>
</sect1>
<sect1 xml:id="structure-document">
<title>Dokumentenspezifische Informationen</title>
<para>Dieser Abschnitt enthält Informationen zu einigen vom
FreeBSD Documentation Project (FDP) verwalteten
Dokumenten.</para>
<sect2>
<title>Das Handbuch</title>
<subtitle><filename>books/handbook/</filename></subtitle>
<para>Das Handbuch wurde unter Verwendung von
DocBook <acronym>XML</acronym> (und der vom FreeBSD
Project erweiterten <acronym>XML</acronym> DocBook-DTD)
geschrieben.</para>
<para>Das Handbuch ist als DocBook-<tag>book</tag>
organisiert. Es besteht aus mehreren Teilen
(<tag>part</tag>s), die wiederum mehrere
Kapitel (<tag>chapter</tag>) enthalten können.
Kapitel sind zusätzlich in Abschnitte
(<tag>sect1</tag>) und Unterabschnitte
(<tag>sect2</tag>, <tag>sect3</tag> und so
weiter) unterteilt.</para>
<sect3>
<title>Physikalische Organisation</title>
<para>Das Verzeichnis <filename>handbook</filename> enthält
sowohl weitere Verzeichnisse als auch zahlreiche einzelne
Dateien.</para>
<note>
<para>Die Organisation des Handbuchs hat sich im Laufe der
Zeit geändert, daher könnten die Informationen
in diesem Abschnitt eventuell nicht mehr dem akutellen
Stand entsprechen. Haben Sie Fragen zur Organisation des
Handbuchs, so wenden Sie sich bitte an das &a.doc;.</para>
</note>
<sect4>
<title><filename>Makefile</filename></title>
<para>Das <filename>Makefile</filename> definiert verschiedene
Variablen zur Konvertierung der<acronym>XML</acronym>-Quellen in andere
Formate. Außerdem listet es die verschiedenen Dateien
auf, aus denen das Handbuch gebaut wird. Zusätzlich
wird die Standard-<filename>doc.project.mk</filename>
inkludiert, die den für die Konvertierung in andere
Formate notwendigen Code bereitstellt.</para>
</sect4>
<sect4>
<title><filename>book.xml</filename></title>
<para>Das Hauptdokument innerhalb des Handbuchs. Neben der
<link
linkend="xml-primer-doctype-declaration">DOCTYPE-Deklaration</link>
des Handbuchs werden hier auch
die Elemente aufgelistet, die die Struktur des Handbuchs
definieren.</para>
<para><filename>book.xml</filename> verwendet <link linkend="xml-primer-parameter-entities">
Parameterentitäten</link>, um Dateien mit der
Endung <filename>.ent</filename> zu laden. Diese
Dateien definieren die <link linkend="xml-primer-general-entities">allgemeinen
Entitäten</link>, die innerhalb des Handbuchs
verwendet werden.</para>
</sect4>
<sect4>
<title><filename
role="directory"><replaceable>Verzeichnis</replaceable>/chapter.xml</filename></title>
<para>Jedes Kapitel des Handbuchs wird in einer
<filename>chapter.xml</filename> genannten Datei
gespeichert. Jedes Verzeichnis erhält den Namen
des <literal>id</literal>-Attributs des
<tag>chapter</tag>-Elements.</para>
<para>Enthält eine Kapiteldatei beispielsweise die
Einträge</para>
<programlisting><tag class="starttag">chapter id="kernelconfig"</tag>
...
<tag class="endtag">chapter</tag></programlisting>
<para>so handelt es sich um die Datei
<filename>chapter.xml</filename> im Verzeichnis
<filename>kernelconfig</filename>. Im Allgemeinen
enthält diese Datei das komplette Kapitel.</para>
<para>Wird die <acronym>XHTML</acronym>-Version des Handbuchs
gebaut, entsteht dadurch
<filename>kernelconfig.html</filename>. Der Grund
dafür ist allerdings der Wert des
<literal>id</literal>-Attributs, und nicht der Name des
Verzeichnisses.</para>
<para>In früheren Versionen des Handbuchs wurden all
diese Dateien im gleichen Verzeichnis wie die Datei
<filename>book.xml</filename> gespeichert und nach dem
Wert des <literal>id</literal>-Attributs der
<tag>chapter</tag>-Elemente benannt. Durch die
Verwendung von eigenen Verzeichnissen für die
verschiedenen Kapitel wurde das Handbuch für
künftige Erweiterungen vorbereitet. Beispielsweise
wurde es dadurch möglich, Bilder in die einzelnen
Kapitel aufzunehmen. Die Bilder für das Handbuch
werden zentral im Verzeichnis <filename>share/images/books/handbook</filename>
gespeichert. Existiert eine lokalisierte Version eines
Bildes, wird diese hingegen gemeinsam mit dem
<acronym>XML</acronym>-Quellcode
im gleichen Verzeichnis gespeichert. Ein Vorteil
dieser Methode ist beispielsweise die Vermeidung von
Namenskollisionen. Außerdem ist es
übersichtlicher, mit mehreren Verzeichnissen zu
arbeiten, die jeweils nur einige Dateien enthalten, als mit
einem einzigen Verzeichnis, das eine Vielzahl von Dateien
enthält.</para>
<para>Durch dieses Vorgehen entstanden viele Verzeichnisse,
die jeweils eine <filename>chapter.xml</filename> enhalten,
beispielsweise <filename>basics/chapter.xml</filename>,
<filename>introduction/chapter.xml</filename> oder
<filename>printing/chapter.xml</filename>.</para>
<important>
<para>Benennen Sie Kapitel und Verzeichnisse nicht nach
Ihrer Reihenfolge innerhalb des Handbuchs. Dann führt
eine Umstrukturierung des Handbuchs im Normalfall nicht
dazu, dass dafür Dateien umbenannt werden müssen (es sei
denn, einzelne Kapitel werden neu aufgenommen oder
entfernt).</para>
</important>
<para>Die Datei <filename>chapter.xml</filename> ist keine
komplette <acronym>XML</acronym>-Datei. Dies bedeutet,
dass sie nicht alleine gebaut werden kann, sondern nur
als Teil des Handbuchs.</para>
</sect4>
</sect3>
</sect2>
</sect1>
</chapter>

View file

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r39632
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="stylesheets">
<info><title>Stylesheets</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>SGML legt nicht fest, wie ein Dokument am Monitor oder auf einem
Ausdruck dargestellt werden soll. Für diese Aufgabe wurden
spezielle Sprachen entwickelt, die Formatvorlagen (die sogenannten
<foreignphrase>Stylesheets</foreignphrase>) für die Darstellung
der Inhalte definieren. Zu diesen Sprachen gehören
beispielsweise DynaText, Panorama, SPICE, JSSS, FOSI, CSS, DSSSL
und andere mehr.</para>
<para>DocBook verwendet in DSSSL geschriebene Stylesheets. XHTML
verwendet hingegen in CSS geschriebene Stylesheets.</para>
<sect1 xml:id="stylesheets-dsssl">
<title>DSSSL</title>
<para>Das Documentation Project verwendet eine anpasste Version der
von Norm Walsh entwickelten modularen DocBook-Stylesheets, die
über den Port <package>textproc/dsssl-docbook-modular</package>
installiert werden können.</para>
<para>Die FreeBSD-Modifikationen sind hingegen nicht in der
Ports-Sammlung enthalten, sondern befinden sich im
Quellcode-Repository des Documentation Projects in der Datei
<filename>doc/share/xml/freebsd.dsl</filename>. Diese Datei
ist umfassend kommentiert und mit Beispielen versehen.
Dadurch können Sie einfach nachvollziehen, wie die
ursprünglichen Stylesheets vom FreeBSD Documentation
Project angepasst wurden.</para>
</sect1>
<sect1 xml:id="stylesheets-css">
<title>CSS</title>
<para>Cascading Stylesheets (CSS) erlauben es, Elementen eines
XHTML-Dokuments Formatangaben (wie Schriftart, Größe,
Schriftfarbe und andere mehr) zuzuweisen, ohne das XHTML-Dokument
mit diesen Informationen zu überfrachten.</para>
<sect2>
<title>Die DocBook-Dokumente</title>
<para>The FreeBSD DSSSL-Stylesheets enthalten eine Referenz auf
ein Stylesheet namens <filename>docbook.css</filename>, das sich
im gleichen Verzeichnis wie die XHTML-Dateien befindet. Diese
projektweite CSS-Datei wird automatisch von
<filename>doc/share/misc/docbook.css</filename> kopiert und
installiert, wenn DocBook-Dokumente nach XHTML konvertiert
werden.</para>
</sect2>
</sect1>
</chapter>

View file

@ -1,293 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES role="package"
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r53527
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="the-website">
<info><title>Die Webseite</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Die &os; Webseite ist Teil der &os;-Dokumentation. Die Dateien
der englischen Webseite befinden sich im Unterverzeichnis
<filename>en_US.ISO8859-1/htdocs</filename> des Dokumentationsbaum
(in diesem Beispiel unter <filename>~/doc</filename>).</para>
<sect1 xml:id="the-website-env">
<title>Umgebungsvariablen</title>
<para>Sie haben die Möglichkeit, über Umgebungsvariablen
festzulegen, welchen Teil der Webseite Sie bauen wollen
und in welches Verzeichnis Sie die fertige Webseite
installieren wollen.</para>
<tip>
<para>Beim Bau der Webseiten (durch &man.make.1;) wird
angenommen, dass definierte Variablen gesetzt sind (dies gilt
auch dann, wenn die Variable leer ist!). Die folgenden
Beispiele zeigen die empfohlene Definition und Nutzung der
möglichen Variablen. Wenn Sie diese Variablen auf andere
Werte oder Methoden setzen, kann es zu überraschenden
Ergebnissen kommen.</para>
</tip>
<variablelist>
<varlistentry xml:id="the-website-env-docdir">
<term><varname>DOCDIR</varname></term>
<listitem>
<para>DOCDIR legt fest, in welches Verzeichnis die fertig
gebaute Webseite installiert werden soll.</para>
<para>Diese Variable wird am besten durch &man.env.1; oder
durch die Shell-eigene Methode zum setzen von Variablen,
also <command>setenv</command> für &man.csh.1; oder
<command>export</command> für &man.sh.1;.</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry xml:id="the-website-env-englishonly">
<term><varname>ENGLISH_ONLY</varname></term>
<listitem>
<para>Default: Nicht definiert. Baue die Webseite inklusive
aller Übersetzungen.</para>
<para><userinput>ENGLISH_ONLY=yes</userinput>: Baue nur die
englischen Dokumente und ignoriere alle Übersetzungen.</para>
</listitem>
</varlistentry>
<varlistentry xml:id="the-website-env-webonly">
<term><varname>WEB_ONLY</varname></term>
<listitem>
<para>Default: Nicht definiert. Baue sowohl die Webseite als
auch alle Bücher und Artikel.</para>
<para><userinput>WEB_ONLY=yes</userinput>: Baue oder installiere
nur die <acronym>HTML</acronym>-Seiten im Verzeichis
<filename>en_US.ISO8859-1/htdocs</filename>. Ignoriere alle
anderen Verzeichnisse und Dokumente, Bücher und Artikel.</para>
</listitem>
</varlistentry>
<varlistentry xml:id="the-website-env-weblang">
<term><varname>WEB_LANG</varname></term>
<listitem>
<para>Default: Nicht definiert. Baue die Webseite in allen
verfügbaren Sprachen.</para>
<para>Geben Sie die Sprachen (durch Leerzeichen getrennt) an,
in denen Sie die Webseite bauen und/oder installieren
wollen. Die Namen der zu bauenden Sprachen entsprechen dabei
den Namen der Dokumentwurzelverzeichnisse. Wollen Sie
beispielsweise die deutschen und französischen Dokumente
einschließen:</para>
<screen><userinput>WEB_LANG="de_DE.ISO8859-1 fr_FR.ISO8859-1"</userinput></screen>
</listitem>
</varlistentry>
</variablelist>
<para><varname>WEB_ONLY</varname>, <varname>WEB_LANG</varname> und
<varname>ENGLISH_ONLY</varname> sind Variablen für &man.make.1;.
Diese werden entweder in <filename>/etc/make.conf</filename>, in
<filename>Makefile.inc</filename> oder als Umgebungsvariablen auf
der Kommandozeile oder in Ihrer Konfigurationsdatei gesetzt.</para>
</sect1>
<sect1 xml:id="the-website-build">
<title>Die Webseiten bauen</title>
<para>Nachdem Sie die Quellen der Webseite erfolgreich
heruntergeladen haben, können Sie mit dem Bau der Webseite
beginnen.</para>
<para>Die Installation der Webseiten wird als
<systemitem class="username">root</systemitem> ausgeführt, weil die
Berechtigungen des Webserver-Verzeichnisses den Schreibzugriff für
normale Benutzer verhindern. Zu Testzwecken können die Dateien auch
als normaler Benutzer in ein temporäres Verzeichnis installiert
werden.</para>
<para>In den folgenden Beispielen werden die
Webseiten durch den Benutzer
<systemitem class="username">jru</systemitem> in dessen
Heimatverzeichnis, also unter
<filename>/usr/home/jru/doc</filename>, gebaut.</para>
<tip>
<para>Der Bau der Webseiten erfordert die Datei <filename>INDEX</filename>
der Ports-Sammlung und schlägt fehl, wenn
<filename>/usr/ports</filename> nicht existiert. Der einfachste
Weg, dies zu vermeiden, ist die Installation der <link
xlink:href="&url.books.handbook;/ports.html#ports-tree">Ports-Sammlung</link>.</para>
</tip>
<example xml:id="the-website-examples-build">
<title>Die komplette Webseite und alle Dokumente bauen</title>
<para>Bauen Sie die Webseite und alle Dokumente. Die erzeugten
Dateien verbleiben dabei im Dokumentationsbaum:</para>
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs/</userinput>
&prompt.user; <userinput>make all</userinput></screen>
</example>
<example xml:id="the-website-examples-buildinstall-englishonly">
<title>Nur die englische Webseite bauen</title>
<para>Bauen Sie nur die englische Webseite als Benutzer
<systemitem class="username">jru</systemitem> und installieren
Sie die erzeugten Dateien nach <filename>/tmp/www</filename>,
um die Webseite testen zu können:</para>
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs/</userinput>
&prompt.user; <userinput>env DOCDIR=/tmp/www make ENGLISH_ONLY=yes WEB_ONLY=yes all install</userinput></screen>
<para>Änderungen an statischen Dateien können Sie einfach testen,
indem Sie die geänderten Dateien in Ihrem Webbrowser aufrufen.
Haben Sie Seite wie eben gezeigt gebaut, können Sie sich die
geänderte Startseite ganz einfach anzeigen lassen:</para>
<screen>&prompt.user; <userinput>firefox /tmp/www/data/index.html</userinput></screen>
<para>Änderungen an dynamischen Dateien können allerdings nur auf
einem Webserver (der auf dem lokalen System läuft) getestet
werden. Nachdem Sie die Website wie weiter oben gezeigt gebaut
haben, können Sie <package>www/apache24</package> mit folgender
Konfigurationsdatei
<filename>/usr/local/etc/apache24/httpd.conf</filename> starten
und Ihre Änderungen testen:</para>
<programlisting># httpd.conf for testing the FreeBSD website
Define TestRoot "/tmp/www/data"
# directory for configuration files
ServerRoot "/usr/local"
Listen 80
# minimum required modules
LoadModule authz_core_module libexec/apache24/mod_authz_core.so
LoadModule mime_module libexec/apache24/mod_mime.so
LoadModule unixd_module libexec/apache24/mod_unixd.so
LoadModule cgi_module libexec/apache24/mod_cgi.so
LoadModule dir_module libexec/apache24/mod_dir.so
# run the webserver as user and group
User www
Group www
ServerAdmin you@example.com
ServerName fbsdtest
# deny access to all files
&lt;Directory /&gt;
AllowOverride none
Require all denied
&lt;/Directory&gt;
# allow access to the website directory
DocumentRoot "${TestRoot}"
&lt;Directory "${TestRoot}"&gt;
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
&lt;/Directory&gt;
# prevent access to .htaccess and .htpasswd files
&lt;Files ".ht*"&gt;
Require all denied
&lt;/Files&gt;
ErrorLog "/var/log/httpd-error.log"
LogLevel warn
# set up the CGI script directory
&lt;Directory "${TestRoot}/cgi"&gt;
AllowOverride None
Options None
Require all granted
Options +ExecCGI
AddHandler cgi-script .cgi
&lt;/Directory&gt;
Include etc/apache24/Includes/*.conf</programlisting>
<para>Starten Sie den Webserver wie folgt:</para>
<screen>&prompt.root; <userinput>service apache24 onestart</userinput></screen>
<para>Die Webseite ist danach unter der Adresse
<link xlink:href="http://localhost"/> erreichbar. Beachten Sie
aber, dass viele Links auf die echte &os;-Webseite zeigen. Daher
werden diese Links die externe Seite aufrufen und nicht Ihre
lokale Testversion. Um dies zu verhindern und einen kompletten
lokalen Test Ihrer lokalen Seite durchzuführen, müssen Sie
<acronym>DNS</acronym> temporär umkonfigurieren, damit
<literal>www.FreeBSD.org</literal> als
<literal>localhost</literal> oder als Ihre lokale
<acronym>IP</acronym>-Adresse aufgelöst wird.</para>
</example>
<example xml:id="the-website-examples-buildinstall">
<title>Die Webseite bauen und installieren</title>
<para>Bauen Sie die Webseite und alle Dokumente als Benutzer
<systemitem class="username">jru</systemitem>. Installieren Sie
die erzeugten Dateien als
<systemitem class="username">root</systemitem> in das
Standardverzeichnis, also nach
<filename>/root/public_html</filename>:</para>
<screen>&prompt.user; <userinput>cd ~/doc/en_US.ISO8859-1/htdocs</userinput>
&prompt.user; <userinput>make all</userinput>
&prompt.user; <userinput>su -</userinput>
Password:
&prompt.root; <userinput>cd /usr/home/jru/doc/en_US.ISO8859-1/htdocs</userinput>
&prompt.root; <userinput>make install</userinput></screen>
</example>
<para>Veraltete (und nicht mehr verwendete) Dateien werden während
der Installation nicht automatisch entfernt. Der folgende Befehl
findet (und löscht) alle Dateien im Installationsverzeichnis, die
in den letzten drei Tagen nicht aktualisiert wurden:</para>
<screen>&prompt.root; <userinput>find <replaceable>/usr/local/www</replaceable> -ctime 3 -delete</userinput></screen>
</sect1>
</chapter>

View file

@ -1,172 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r43126
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="tools">
<title>Die Werkzeuge</title>
<para>Um die FreeBSD-Dokumentation zu verwalten und in verschiedene
Formate zu konvertieren, werden diverse Werkzeuge verwendet. Einige
dieser Werkzeuge sind verpflichtend und müssen auf Ihrem System
installiert sein, bevor Sie den Beispielen in den folgenden Kapiteln
folgen können. Andere sind hingegen optional und dienen dazu,
zusätzliche Funktionalität bereitzustellen oder das Erzeugen der
Dokumentation zu vereinfachen.</para>
<sect1 xml:id="tools-required">
<title>Verpflichtende Werkzeuge</title>
<para>Installieren Sie zuerst den Port
<filename role="package">textproc/docproj</filename> über die
Ports-Sammlung. Dieser <emphasis>Metaport</emphasis> installiert
alle verpflichtenden Werkzeuge für die Arbeit an der
&os;-Dokumentation. Einige dieser Komponenten werden in den
folgenden Abschnitten näher beschrieben.</para>
<sect2>
<title>Die DTDs und die Entitäten</title>
<para>Das FDP benutzt verschiedene <emphasis>Document Type
Definitions</emphasis> (<acronym>DTD</acronym>s) und diverse
<acronym>XML</acronym>-Entitätensätze. Diese werden durch den
Port <filename role="package">textproc/docproj</filename>
automatisch installiert.</para>
<variablelist>
<varlistentry>
<term><acronym>XHTML</acronym> <acronym>DTD</acronym> (<filename
role="package">textproc/xhtml</filename>)</term>
<listitem>
<para><acronym>XHTML</acronym> ist die meistverwendete
Auszeichnungssprache des World Wide Web und wird
durchgängig für die FreeBSD-Webseite
genutzt.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>DocBook <acronym>DTD</acronym> (<filename
role="package">textproc/docbook-xml-450</filename>)</term>
<listitem>
<para>DocBook ist als Auszeichnungssprache für
technische Dokumentationen entwickelt worden. Ein
Großteil der FreeBSD-Dokumentation wird mittels DocBook
erstellt.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ISO 8879 entities
(<filename role="package">textproc/iso8879</filename>)</term>
<listitem>
<para>Enties des ISO 8879:1986-Standards, die von
vielen DTDs benötigt werden. Darin enthalten sind
mathematische Symbole, zusätzliche Zeichen, die
für auf dem lateinischen beruhende Alphabete
benötigt werden sowie griechische Zeichen.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<sect1 xml:id="tools-optional">
<title>Optionale Werkzeuge</title>
<para>Die in diesem Kapitel genannten Programme müssen nicht
unbedingt installiert werden. Allerdings können sie die
Arbeit an der Dokumentation erleichtern und die Anzahl an
möglichen Ausgabeformaten erhöhen.</para>
<sect2>
<title>Software</title>
<variablelist>
<varlistentry>
<term><application>JadeTeX</application>,
<application>teTeX</application> und Modular DocBook Stylesheets
(<filename role="package">print/jadetex</filename>,
<filename role="package">print/teTeX</filename> und
<filename role="package">textproc/dsssl-docbook-modular</filename>)</term>
<listitem>
<para><application>Jade</application>,
<application>teTeX</application> und Modular DocBook
Stylesheets werden eingesetzt, um
DocBook-Dokumente nach DVI, Postscript und PDF zu
konvertieren. Hierfür müssen die
<application>JadeTeX</application>-Makros installiert
sein.</para>
<para>Ist nicht geplant, die Dokumente in einem dieser
Formate zu erzeugen (wenn also <acronym>XHTML</acronym>
und Text ausreichend sind), brauchen Sie diese nicht zu
installieren. Dazu deaktivieren Sie diese Option im
Konfigurationsbildschirm des Ports <filename
role="package">textproc/docproj</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><application>Vim</application>
(<filename role="package">editors/vim</filename>)</term>
<listitem>
<para>Ein beliebter Texteditor zur Bearbeitung von
<acronym>XML</acronym> und davon abgeleiteten Dokumenten
wie DocBook <acronym>XML</acronym>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><application>Emacs</application> oder
<application>XEmacs</application>
(<filename role="package">editors/emacs</filename> oder
<filename role="package">editors/xemacs</filename>)</term>
<listitem>
<para>Beide Texteditoren haben einen speziellen Modus zur
Bearbeitung von Dokumenten entsprechend den Vorgaben
einer <acronym>XML</acronym> <acronym>DTD</acronym>.
Zusätzlich bieten sie
Funktionen an, mit denen sich der Tippaufwand reduzieren
und Fehlerwahrscheinlichkeit senken lässt.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
</chapter>

View file

@ -1,509 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1999 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r52692
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="translations">
<info><title>Übersetzungen</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Dieses Kapitel enthält die FAQ für die Übersetzung
der FreeBSD Dokumentation (FAQ, Handbuch, Artikel, Manualpages und
sonstige Dokumente) in andere Sprachen.</para>
<para>Es beruht <emphasis>sehr</emphasis> stark auf den
Übersetzungs-FAQ des FreeBSD German Documentation Projects, die
ursprünglich von Frank Gründer
<email>elwood@mc5sys.in-berlin.de</email> geschrieben und danach von
Bernd Warken <email>bwarken@mayn.de</email> ins Englische
übersetzt wurden.</para>
<para>Diese FAQ wird vom &a.doceng; gepflegt.</para>
<qandaset>
<qandaentry>
<question>
<para>Was bedeuten die Abkürzungen <phrase>i18n</phrase>
und <phrase>l10n</phrase>?</para>
</question>
<answer>
<para><phrase>i18n</phrase> steht für
<foreignphrase>internationalization</foreignphrase>
(Internationalisierung), <phrase>l10n</phrase> für
<foreignphrase>localization</foreignphrase> (Lokalisierung).
Es handelt sich dabei um besser handhabbare Abkürzungen
dieser Begriffe.</para>
<para><phrase>i18n</phrase> kann als <quote>i</quote>, gefolgt
von 18 Buchstaben, gefolgt von einem <quote>n</quote>, gelesen
werden. Analog steht <phrase>l10n</phrase> für
<quote>l</quote>, gefolgt von 10 Buchstaben, gefolgt von einem
<quote>n</quote>.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Gibt es eigene Mailinglisten für Übersetzer?</para>
</question>
<answer>
<para>Ja. Die verschiedenen Übersetzergruppen haben jeweils
eigene Mailinglisten. Genauere Informationen finden Sie in der
<link xlink:href="https://www.freebsd.org/docproj/translations.html">
Liste der Übersetzungsprojekte</link>. Diese Liste
enthält die Mailinglisten und Internetseiten, die von den
einzelnen Übersetzungsprojekten betrieben werden. Für
allgemeine Diskussionen zur Übersetzung der
FreeBSD-Dokumentation gibt es die Mailingliste
<email>freebsd-translators@freebsd.org</email>.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Werden noch Übersetzer benötigt?</para>
</question>
<answer>
<para>Ja. Je mehr Leute an der Übersetzung arbeiten, desto
schneller wird diese fertig, und umso schneller sind
Änderungen im englischen Original auch in den
übersetzten Dokumenten vorhanden.</para>
<para>Sie müsssen kein professioneller Dolmetscher sein, um
dabei zu helfen.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Welche Sprachen muss ich dafür kennen/können?</para>
</question>
<answer>
<para>Idealerweise haben Sie gute Kenntnisse in geschriebenem
Englisch, außerdem sollten Sie natürlich fit in
der Sprache sein, in die Sie übersetzen wollen.</para>
<para>Englisch ist allerdings nicht unbedingt nötig. Sie
könnten beispielsweise auch die FAQ vom Spanischen ins
Ungarische übersetzen.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Welche Software wird benötigt?</para>
</question>
<answer>
<para>Es ist sehr empfehlenswert, eine lokale Kopie des FreeBSD
Subversion-Repository (als Minimum den Dokumentationsteil)
anzulegen. Dazu geben Sie den folgenden Befehl ein:</para>
<screen>&prompt.user; <userinput>svn checkout https://svn.FreeBSD.org/doc/head/ head</userinput></screen>
<note>
<para><link xlink:href="https://svn.FreeBSD.org/">svn.FreeBSD.org</link>
ist ein öffentlicher Server. Überprüfen Sie das <link
xlink:href="&url.books.handbook.en;/svn.html#svn-mirrors">Serverzertifikat</link>,
bevor Sie erstmals auf den Server zugreifen.</para>
</note>
<note>
<para>Damit dieser Befehl funktioniert, muss der Port
<package>devel/subversion</package>
installiert sein.</para>
</note>
<para>Sie sollten außerdem mit
<application>svn</application> vertraut sein. Damit ist es
möglich, festzustellen, was sich zwischen einzelnen
Versionen eines Dokuments geändert hat.</para>
<para>Wenn Sie beispielsweise wissen wollen, was sich zwischen
den Revisionen <literal>r33733</literal> und
<literal>r33734</literal> der Datei
<filename>en_US.ISO8859-1/books/fdp-primer/book.xml</filename>
geändert hat, geben Sie den folgenden Befehl ein:</para>
<screen>&prompt.user; <userinput>svn diff -r<replaceable>33733</replaceable>:<replaceable>33734</replaceable> en_US.ISO8859-1/books/fdp-primer/book.xml</userinput></screen>
<para>Lesen Sie bitte das <link
xlink:href="&url.books.handbook;/svn.html">&os; Handbook</link>,
um sich darüber zu informieren, wie &os;
<application>Subversion</application> einsetzt.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Wie finde ich heraus, ob noch jemand Teile der
Dokumentation in die gleiche Sprache übersetzt?</para>
</question>
<answer>
<para>Die <link xlink:href="https://www.FreeBSD.org/docproj/translations.html">
Übersetzungsseite </link> des Documentation Projects
listet alle Übersetzungs-Teams auf, die derzeit aktiv
sind. Arbeitet bereits jemand an der Übersetzung in
Ihre Sprache, so kontaktieren Sie dieses Team, damit
Dokumente nicht unnötigerweise mehrfach übersetzt
werden.</para>
<para>Wenn Ihre Sprache nicht aufgeführt ist, senden Sie
bitte eine E-Mail an das &a.doc;. Vielleicht denkt ja jemand
über eine Übersetzung nach, hat sich aber noch nicht
dafür entschieden.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Niemand übersetzt in meine Sprache. Was soll ich
machen?</para>
</question>
<answer>
<para>Gratulation, Sie haben gerade das <quote>FreeBSD
<replaceable>Ihre-Sprache</replaceable> Documentation
Translation Project</quote> gestartet. Willkommen.</para>
<para>Entscheiden Sie zuerst, ob Sie die dafür nötige
Zeit zur Verfügung haben. Da Sie als Einziger an der
Übersetzung in Ihre Sprache arbeiten, sind Sie dafür
verantwortlich, Ihre Arbeit zu veröffentlichen und die
Arbeit von Freiwilligen, die Ihnen dabei helfen wollen, zu
koordinieren.</para>
<para>Senden Sie eine E-Mail an die Mailingliste des
Documentation Projects, in der Sie bekanntgeben, dass Sie an
der Übersetzung der Dokumentation arbeiten, damit die
Internetseiten aktualisiert werden können.</para>
<para>Gibt es in Ihrem Land einen FreeBSD-Spiegelserver, so
sollten Sie den dafür Zuständigen kontaktieren und
nachfragen, ob er Ihnen Speicherplatz oder E-Mailadressen
für Ihr Projekt zur Verfügung stellen würde.</para>
<para>Danach wählen Sie ein Dokument aus und beginnen
mit der Übersetzung. Am besten beginnen Sie mit kleineren
Dateien, beispielsweise den FAQ oder einem der Artikel.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Ich habe ein Dokument übersetzt. Wo soll ich es
hinschicken?</para>
</question>
<answer>
<para>Das kommt darauf an. Wenn Sie bereits in einem
Übersetzer-Team arbeiten (etwa dem japanischen oder dem
deutschen Team), dann sollten Sie deren Richtlinien zum Umgang
mit neuer Dokumentation folgen, die auf deren Internetseiten
beschrieben werden.</para>
<para>Wenn Sie die einzige Person sind, die an der
Übersetzung in eine Sprache arbeitet, oder wenn Sie
für ein Übersetzungsprojekt verantwortlich sind,
und Ihre Aktualisierungen an das FreeBSD Project
übermitteln wollen, sollten Sie Ihre Übersetzungen
dorthin senden (lesen Sie dazu auch die nächste
Frage).</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Ich arbeite als einziger an der Übersetzung in diese
Sprache, wie versende ich meine Übersetzungen?</para>
<para>oder</para>
<para>Wir sind ein Übersetzer-Team, und wollen Dokumente
versenden, die unsere Mitglieder übersetzt haben.</para>
</question>
<answer>
<para>Stellen Sie zuerst sicher, dass Ihre Übersetzungen
korrekt organisiert sind. Sie sollte sich also im
existierenden Dokumentationsbaum befinden, und ohne Fehler
bauen lassen.</para>
<para>Zurzeit wird die FreeBSD Dokumentation unterhalb des
Verzeichnisses <filename>head/</filename> gespeichert. Die
direkten Unterverzeichnisse werden entsprechend der
Sprachkodierung benannt, in der sie geschrieben sind. Diese
Kodierung nach ISO639 finden Sie auf einem FreeBSD-System
unter <filename>/usr/share/misc/iso639</filename>,
vorausgesetzt, das System wurde nach dem 20. Januar 1999
gebaut.</para>
<para>Wenn in Ihrer Sprache mehrere Kodierungen (wie dies etwa
für Chinesisch der Fall ist) vorhanden sind, existiert
für jede Kodierung ein eigenes Unterverzeichnis.</para>
<para>Zuletzt existieren auch noch Verzeichnisse für die
einzelnen Dokumente.</para>
<para>Die Verzeichnishierarchie für eine hypothetische
schwedische Übersetzung könnte etwa so
aussehen:</para>
<programlisting>head/
sv_SE.ISO8859-1/
Makefile
htdocs/
docproj/
books/
faq/
Makefile
book.xml</programlisting>
<para>Bei <literal>sv_SE.ISO8859-1</literal> handelt es sich um
den Namen der Übersetzung in der Form
<filename><replaceable>lang</replaceable>.<replaceable>encoding</replaceable></filename>.
Beachten Sie auch, dass zum Bauen der Dokumentation
zwei Makefiles notwendig sind.</para>
<para>Komprimieren Sie Ihre Übersetzungen mit &man.tar.1;
und &man.gzip.1; und senden Sie sie an das FreeBSD
Project.</para>
<screen>&prompt.user; <userinput>cd doc</userinput>
&prompt.user; <userinput>tar cf swedish-docs.tar sv_SE.ISO8859-1</userinput>
&prompt.user; <userinput>gzip -9 swedish-docs.tar</userinput></screen>
<para>Legen Sie das Archiv <filename>swedish-docs.tar.gz</filename>
irgendwo ab. Wenn Sie keinen eigenen Webspace haben (etwa weil
Ihr Internetprovider Ihnen keinen zur Verfügung stellt),
können Sie auch eine E-Mail an das &a.doceng; schicken, um
abzuklären, ob Sie die Datei auch als E-Mail schicken
können.</para>
<para>In beiden Fällen sollten Sie mit Bugzilla
einen Bericht über den Versand der Dokumentation
erstellen. Es ist sehr hilfreich, wenn Sie Ihre
Übersetzung vorher korrekturlesen lassen und
überprüfen, da es unwahrscheinlich ist, dass
der Committer Ihre Sprache sehr gut beherrscht.</para>
<para>Danach wird jemand (meistens der Documentation Project
Manager, derzeit ist dies das &a.doceng;) überprüfen,
ob sich Ihre Übersetzungen problemlos bauen lassen. Dabei
wird besonders auf folgende Punkte geachtet:</para>
<orderedlist>
<listitem>
<para>Verwenden alle Dateien RCS-Strings (wie "ID")?</para>
</listitem>
<listitem>
<para>Arbeitet <command>make all</command> im Verzeichnis
<filename>sv_SE.ISO8859-1</filename> korrekt?</para>
</listitem>
<listitem>
<para>Funktioniert <command>make install</command> ohne
Probleme?</para>
</listitem>
</orderedlist>
<para>Gibt es dabei Probleme, so wird die Person, die Ihren
Beitrag durchsieht, sich wieder an Sie wenden, damit Sie
das Problem beheben.</para>
<para>Treten keine Probleme auf, wird Ihre Übersetzung
so rasch als möglich committed.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Kann ich landes- oder sprachspezifische Informationen
in meine Übersetzung aufnehmen?</para>
</question>
<answer>
<para>Wir bitten Sie, dies nicht zu tun.</para>
<para>Nehmen wir an, dass Sie das Handbuch ins Koreanische
übersetzen und einen Abschnitt mit
Händlerinformationen in das Handbuch aufnehmen
wollen.</para>
<para>Es gibt keinen Grund, warum diese Information nicht auch
in der englischen (oder der deutschen, oder der spanischen,
oder der japanischen oder der &hellip;) Version vorhanden sein
sollte. Es ist etwa denkbar, dass sich jemand mit englischer
Muttersprache während eines Aufenthalts in Korea eine
FreeBSD-Kopie kaufen möchte. Außerdem wird dadurch
die weltweite Präsenz von FreeBSD verdeutlicht, was
natürlich ebenfalls von Vorteil ist.</para>
<para>Wenn Sie also länderspezifische Informationen
ergänzen wollen, sollten Sie dies zuerst in der englischen
Version (über Bugzilla) tun, und die Änderung
anschließend in Ihre Sprache übersetzen.</para>
<para>Vielen Dank.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Wie lassen sich sprachspezifische Zeichen darstellen?</para>
</question>
<answer>
<para>Nicht-ASCII-Zeichen innerhalb der Dokumentation werden
durch SGML-Entities dargestellt.</para>
<para>Diese bestehen aus: Kaufmännischem Und (&amp;),
den Namen der Entity, und einem Strichpunkt (;).</para>
<para>Die Namen der Entities sind in ISO8879 definiert, die als
Port <package>textproc/iso8879</package>
installiert werden kann.</para>
<para>Dazu einige Beispiele:</para>
<segmentedlist>
<segtitle>Entity</segtitle>
<segtitle>Darstellung</segtitle>
<segtitle>Beschreibung</segtitle>
<seglistitem>
<seg>&amp;eacute;</seg>
<seg>&eacute;</seg>
<seg>Kleines <quote>e</quote> mit (akutem) Akzent</seg>
</seglistitem>
<seglistitem>
<seg>&amp;Eacute;</seg>
<seg>&Eacute;</seg>
<seg>Großes <quote>E</quote> mit (akutem) Akzent</seg>
</seglistitem>
<seglistitem>
<seg>&amp;uuml;</seg>
<seg>ü</seg>
<seg>Kleines Umlaut-<quote>u</quote></seg>
</seglistitem>
</segmentedlist>
<para>Nachdem Sie den iso8879-Port installiert haben, ist die
vollständige Liste unter
<filename>/usr/local/share/xml/iso8879</filename>
vorhanden.</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Wie spricht man den Leser an?</para>
</question>
<answer>
<para>In englischen Dokumenten wird der Leser mit
<quote>you</quote> angesprochen, es wird nicht zwischen
formeller/informeller Anrede unterschieden, wie dies in
manchen anderen Sprachen der Fall ist.</para>
<para>Wenn Sie in eine Sprache übersetzen, die diese
Unterscheidung trifft, verwenden Sie die Form, die auch in
den anderen technischen Dokumentationen dieser Sprache
verwendet wird. Für deutsche Versionen ist dies die
dritte Person Plural (<quote>Sie</quote>).</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>Muss ich zusätzliche Informationen in meine
Übersetzungen einbauen?</para>
</question>
<answer>
<para>Ja.</para>
<para>Der Header der englischen Version jedes Textes sieht in
etwa so aus:</para>
<programlisting>&lt;!--
The FreeBSD Documentation Project
&dollar;FreeBSD: head/en_US.ISO8859-1/books/faq/book.xml 38674 2012-04-14 13:52:52Z &dollar;</programlisting>
<para>Das exakte Aussehen kann unterschiedlich sein, die Zeile
mit &dollar;FreeBSD&dollar; sowie der Ausdruck <literal>The
FreeBSD Documentation Project</literal> sind allerdings immer
enthalten. Beachten Sie, dass die Zeile mit &dollar;FreeBSD
von Subversion automatisch expandiert wird, daher sollte an dieser
Stelle in Ihren neuen Dokumenten nur
<literal>&dollar;FreeBSD&dollar;</literal> stehen.</para>
<para>Ihre übersetzten Dokumente sollten eine eigene
&dollar;FreeBSD&dollar;-Zeile enthalten. Zusätzlich
sollten Sie die Zeile mit <literal>The FreeBSD Documentation
Project</literal> in <literal>The FreeBSD
<replaceable>Ihre-Sprache-hier-einfügen</replaceable>
Documentation Project</literal>.</para>
<para>Außerdem sollten Sie eine weitere Zeile
einfügen, die festlegt, auf welcher Version des englischen
Originals Ihre Übersetzung basiert.</para>
<para>Die spanische Version dieser Datei könnte etwa so
beginnen:</para>
<programlisting>&lt;!--
The FreeBSD Spanish Documentation Project
&dollar;FreeBSD: head/es_ES.ISO8859-1/books/faq/book.xml 38826 2012-05-17 19:12:14Z hrs &dollar;
Original revision: r38674
--&gt;</programlisting>
</answer>
</qandaentry>
</qandaset>
</chapter>

View file

@ -1,202 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 2013 Warren Block
All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: 45384
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="working-copy">
<title>Die Arbeitskopie</title>
<para>Die <emphasis>Arbeitskopie</emphasis> ist eine Kopie des &os;
Dokumentationsrepositories, die Sie auf Ihren lokalen Computer
heruntergeladen haben. Änderungen an der Dokumentation werden
in der Arbeitskopie durchgeführt und getestet. Patches für
Änderungen im Hauptrepository werden aus der Arbeitskopie
erzeugt, nachdem Sie Ihre Änderungen durchgeführt haben.</para>
<para>Eine komplette Kopie des Dokumentationsbaums ist etwa 700 Megabyte
groß. Damit Sie die Dokumentation auch in verschiedenen Formaten
testen und bauen können, sollten Sie für das Repository mindestens
1 Gigabyte an freiem Speicherplatz bereitstellen.</para>
<para>Die Dateien der &os;-Dokumentation werden mit <link
xlink:href="&url.books.handbook;/svn.html"><application>Subversion</application></link>
verwaltet. Falls es auf Ihrem System noch nicht vorhanden ist,
wird dieses Werkzeug vom Port <package>textproc/docproj</package>
automatisch installiert.</para>
<sect1 xml:id="working-copy-doc-and-src">
<title>Die Dokumentation und Manualpages</title>
<para>Die &os;-Dokumentation besteht nicht nur aus Büchern und
Artikeln. Auch die Manualpages für alle Befehle und
Konfigurationsdateien sind Teil des <acronym>FDP</acronym>.
Die Dokumentation ist dabei auf zwei Repositories verteilt:
<literal>doc</literal> für Bücher und Artikel sowie
<literal>base</literal> für das Betriebssystem und Manualpages.
Um Manualpages zu bearbeiten, muss zusätzlich das Repository
<literal>base</literal> ausgecheckt werden.</para>
<para>Ein Repository kann multiple Versionen der Dokumentatation
enthalten. Änderungen werden in der Regel aber immer nur an
der aktuellen Version durchgeführt, die als
<literal>head</literal> bezeichnet wird.</para>
</sect1>
<sect1 xml:id="working-copy-choosing-mirror">
<title>Einen Spiegelserver wählen</title>
<para>Um die Geschwindigkeit zu erhöhen (und die Downloadzeit zu
reduzieren), wählen Sie bitte aus der Liste der <link
xlink:href="&url.books.handbook;/svn.html#svn-mirrors">Subversion
Spiegelserver</link> einen Server in Ihrer Nähe. Ersetzen Sie
dazu in den folgenden Beispielen die <acronym>URL</acronym>
<replaceable>https://svn0.us-west.FreeBSD.org/</replaceable>
durch die des von Ihnen gewählten Spiegelservers.</para>
</sect1>
<sect1 xml:id="working-copy-choosing-directory">
<title>Ein Verzeichnis für die Arbeitskopie wählen</title>
<para>Die &os;-Dokumentation wird üblicherweise unter
<filename>/usr/doc/</filename>, Quellcode (inklusive Manualpages)
unter <filename>/usr/src/</filename> installiert. Es ist
sinnvoll, Arbeitskopien in einen anderen Ordner auszuchecken,
um potentielle Konflikte mit bereits in diesen Ordnern vorhandenen
Dokumenten zu vermeiden. Die folgenden Beispiele verwenden daher
die Verzeichnisse <filename>~/doc</filename> sowie
<filename>~/src</filename>. Bei beiden Verzeichnissen handelt
es sich um Unterverzeichnisse des home-Verzeichnisses des
jeweiligen Benutzers.</para>
</sect1>
<sect1 xml:id="working-copy-checking-out">
<title>Die Arbeitskopie auschecken</title>
<para>Der Download einer Arbeitskopie wird als
<emphasis>checkout</emphasis> bezeichnet und erfolgt über den
Befehl <command>svn checkout</command>. Das folgende Beispiel
checkt die aktuelle Version der Dokumentatation
(<literal>head</literal>) aus dem Hauptdokumentationsbaum aus:</para>
<screen>&prompt.user; <userinput>svn checkout <replaceable>https://svn0.us-west.FreeBSD.org/doc/head</replaceable> <replaceable>~/doc</replaceable></userinput></screen>
<para>Das Auschecken des Quellcodes für die Arbeit an den Manualpages
erfolgt analog:</para>
<screen>&prompt.user; <userinput>svn checkout <replaceable>https://svn0.us-west.FreeBSD.org/base/head</replaceable> <replaceable>~/src</replaceable></userinput></screen>
</sect1>
<sect1 xml:id="working-copy-updating">
<title>Die Arbeitskopie aktualisieren</title>
<para>Die Dokumente und Dateien im &os;-Repository ändern sich
beinahe täglich. Änderungen werden durchgeführt und committed.
Bereits kurz nach einem Checkout kann es daher Unterschiede
zwischen Ihrer Arbeitskopie und dem &os;-Hauptrepository geben.
Um eine lokale Arbeitskopie auf den Stand des Hauptrepository zu
aktualisieren, wenden Sie den Befehl
<command>svn update</command> auf das Verzeichnis an, in dem sich
Ihre lokale Arbeitskopie befindet:</para>
<screen>&prompt.user; <userinput>svn update <replaceable>~/doc</replaceable></userinput></screen>
<para>Gewöhnen Sie sich an, <command>svn update</command> auszuführen,
bevor Sie Dokumente bearbeiten. Sonst kann es passieren, dass
das Dokument in der Zwischenzeit bearbeitet wurde, Ihre lokale
Kopie diese Änderungen aber noch nicht enthält. Es ist deutlich
einfacher, die aktuelle Version zu bearbeiten, als Ihre älteren
lokalen Änderungen mit den aktuellen Änderungen des Repositories
zu kombininieren.</para>
</sect1>
<sect1 xml:id="working-copy-revert">
<title>Änderungen an der Arbeitskopie zurücknehmen</title>
<para>Manchmal ist es notwendig, durchgeführte Änderungen
zurück zu nehmen oder überhaupt von vorne zu beginnen. Änderungen
an einer Datei können über den Befehl <command>svn revert</command>
<quote>zurückgesetzt</quote> werden (die Datei ist danach wieder in
ihrer ursprünglichen Version vorhanden). Wollen Sie beispielsweise
Ihre Änderungen an der Datei <filename>chapter.xml</filename>
zurücksetzen, um die unbearbeitete Originalversion zu erhalten,
geben Sie den folgenden Befehl ein:</para>
<screen>&prompt.user; <userinput>svn revert chapter.xml</userinput></screen>
</sect1>
<sect1 xml:id="working-copy-making-diff">
<title>Eine Differenzdatei erstellen</title>
<para>Nachdem Sie eine oder mehrere Dateien bearbeitet haben,
müssen Sie die Unterschiede zwischen Ihrer lokalen Arbeitskopie
und dem &os;-Repository in einer Datei sammeln, bevor Sie Ihre
Änderungen einreichen können. Diese Dateien werden als
<emphasis>diff</emphasis>-Dateien bezeichnet und können durch
den Befehl <command>svn diff</command> erzeugt werden:</para>
<screen>&prompt.user; <userinput>cd <replaceable>~/doc</replaceable></userinput>
&prompt.user; <userinput>svn diff &gt; <replaceable>doc-fix-spelling.diff</replaceable></userinput></screen>
<para>Geben Sie der Datei einen Namen, die den Inhalt beschreibt.
Die Differenzdatei im Beispiel enthält Rechtschreibkorrekturen
für den gesamten Dokumentationsbaum.</para>
<para>Wenn Sie Ihre Änderungen über das Webformular
<quote><link xlink:href="https://bugs.FreeBSD.org/bugzilla/enter_bug.cgi">Submit a &os;
problem report</link></quote> einreichen wollen, fügen Sie bitte
die Erweiterung <filename>.txt</filename> an den Dateinamen an,
damit das Formular sicher erkennt, dass Sie gewöhnlichen Text
hochladen wollen.</para>
<para>Vorsicht: <command>svn diff</command> protokolliert ALLE
Änderungen im aktuellen Verzeichnis (und dessen Unterverzeichnissen).
Wollen Sie einige dieser Änderungen noch nicht einreichen,
müssen Sie angeben, für welche Dateien Sie eine Differenzdatei
erstellen wollen.</para>
<screen>&prompt.user; <userinput>cd <replaceable>~/doc</replaceable></userinput>
&prompt.user; <userinput>svn diff <replaceable>disks/chapter.xml printers/chapter.xml</replaceable> &gt; <replaceable>disks-printers.diff</replaceable></userinput></screen>
</sect1>
<sect1 xml:id="working-copy-subversion-references">
<title>Referenzen zu <application>Subversion</application></title>
<para>Diese Beispiele haben Ihnen den prinzipiellen Umgang mit
<application>Subversion</application> gezeigt. Weitere
detaillierte Informationen finden Sie im
<link xlink:href="http://svnbook.red-bean.com/">Subversion Book</link>
sowie in der <link
xlink:href="http://subversion.apache.org/docs/">Subversion documentation</link>.</para>
</sect1>
</chapter>

View file

@ -1,517 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998 Nik Clayton, All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf: r40542
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="writing-style">
<info><title>Der Schreibstil</title>
<authorgroup>
<author><personname><firstname>Johann</firstname><surname>Kois</surname></personname><contrib>Übersetzt von </contrib></author>
</authorgroup>
</info>
<para>Damit von verschiedenen Autoren geschriebene Dokumente
zueinander konsistent bleiben, gibt es einige Richtlinien, denen
Autoren bei der Erstellung ihrer Dokumente folgen müssen.</para>
<variablelist>
<varlistentry>
<term>Verwendung von amerikanischem Englisch</term>
<listitem>
<para>Es gibt mehrere englische Varianten und damit verbunden
verschiedene Schreibweisen für das gleiche Wort. Wo dies
der Fall ist, ist die amerikanische Schreibweise zu verwenden.
Man schreibt daher <quote>color</quote> statt
<quote>colour</quote>, <quote>rationalize</quote> statt
<quote>rationalise</quote>, und so weiter.</para>
<note>
<para>Die Verwendung von Britischem Englisch ist akzeptabel,
wenn es sich um einen neuen Beitrag handelt, solange die
gesamte Schreibweise eines Dokuments einheitlich bleibt.
Alle anderen Dokumente wie Bücher, Internetseiten,
Manualpages und andere müssen allerdings
amerikanisches Englisch verwenden.</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>Vermeiden von Zusammenziehungen</term>
<listitem>
<para>Verwenden Sie keine Zusammenziehungen, sondern schreiben
Sie die Phrase immer aus. Die Schreibweise
<quote>Don't use contractions.</quote> wäre also nicht
korrekt.</para>
<para>Die Vermeidung von Zusammenziehungen sorgt für einen
etwas formelleren Ton, ist präziser und erleichtert die
Arbeit der Übersetzer.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Nutzung von Kommas bei Aufzählungen</term>
<listitem>
<para>Bei einer Aufzählung innerhalb eines Absatzes sollten
Sie zwischen den einzelnen Begriffen Kommas setzen. Zwischen
dem letzten und vorletzten Begriff setzen Sie ein Komma und
das Wort <quote>und</quote>.</para>
<para>Dazu ein Beispiel:</para>
<blockquote>
<para>Das ist eine Liste von ein, zwei und drei Dingen.</para>
</blockquote>
<para>Handelt es sich dabei um eine Liste von drei Begriffen,
<quote>ein</quote>, <quote>zwei</quote>, und
<quote>drei</quote>, oder um eine Liste von zwei Begriffen,
<quote>ein</quote> und <quote>zwei und drei</quote>?</para>
<para>Es ist daher besser, explizit ein serielles Komma zu
setzen:</para>
<blockquote>
<para>Das ist eine Liste von ein, zwei, und drei Dingen.</para>
</blockquote>
</listitem>
</varlistentry>
<varlistentry>
<term>Vermeidung von redundanten Begriffen</term>
<listitem>
<para>Versuchen Sie, keine redundanten Phrasen zu verwenden.
Dies gilt insbesondere für die Ausdrücke
<quote>der Befehl</quote>, <quote>die Datei</quote>, und
<quote>man command</quote>.</para>
<para>Die folgenden zwei Beispiele veranschaulichen dies
für Befehle. Bevorzugt wird die Schreibweise des
zweiten Beispiels.</para>
<informalexample>
<para>Verwenden Sie den Befehl <command>svn</command>, um
Ihre Quellen zu aktualisieren.</para>
</informalexample>
<informalexample>
<para>Verwenden Sie <command>svn</command>, um Ihre Quellen
zu aktualisieren.</para>
</informalexample>
<para>Analoges gilt für Dateinamen, wobei wiederum die
zweite Schreibweise bevorzugt wird.</para>
<informalexample>
<para>&hellip; in der Datei
<filename>/etc/rc.local</filename>&hellip;</para>
</informalexample>
<informalexample>
<para>&hellip; in
<filename>/etc/rc.local</filename>&hellip;</para>
</informalexample>
<para>Auch für Manualpages gibt es zwei Schreibweisen.
Auch hier wird die zweite Schreibweise bevorzugt (das
zweite Beispiel nutzt das Tag
<tag>citerefentry</tag>).</para>
<informalexample>
<para>Weitere Informationen finden Sie in
<command>man csh</command>.</para>
</informalexample>
<informalexample>
<para>Weitere Informationen finden Sie in &man.csh.1;.</para>
</informalexample>
</listitem>
</varlistentry>
<varlistentry>
<term>Zwei Leerzeichen am Satzende</term>
<listitem>
<para>Verwenden Sie immer zwei Leerzeichen am Ende eines Satzes.
Dadurch erhöht sich die Lesbarkeit des Textes und die
Nutzung von Werkzeugen wie <application>Emacs</application>
wird vereinfacht.</para>
<para>Nun könnte man behaupten, dass ein Punkt vor einem
Großbuchstaben das Satzende markiert. Vor allem bei
Namen, beispielsweise bei <quote>Jordan K. Hubbard</quote>,
ist dies allerdings nicht der Fall. Wir haben hier ein
großes <literal>K</literal>, gefolgt von einem Punkt
und einem Leerzeichen. Dennoch handelt es sich nicht um
den Anfang eines neuen Satzes.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Eine ausführliche Beschreibung des korrekten Schreibstils
finden Sie im Buch <link xlink:href="http://www.bartleby.com/141/">Elements
of Style</link> von William Strunk.</para>
<sect1 xml:id="writing-style-guide">
<title>Anleitungen für einen korrekten Schreibstil</title>
<para>Damit die Quellen der Dokumentation selbst dann konsistent
bleiben, wenn viele Leute daran arbeiten, folgen Sie bitte den
folgenden Konventionen.</para>
<sect2>
<title>Groß- und Kleinschreibung</title>
<para>Tags werden in Kleinbuchstaben geschrieben, Sie schreiben
also <tag>para</tag>, <emphasis>nicht</emphasis>
<tag>PARA</tag>.</para>
<para>Text im SGML-Kontext wird hingegen in Großbuchstaben
geschrieben. Man schreibt also
<literal>&lt;!ENTITY&hellip;&gt;</literal> und
<literal>&lt;!DOCTYPE&hellip;&gt;</literal>,
<emphasis>nicht</emphasis>
<literal>&lt;!entity&hellip;&gt;</literal> und
<literal>&lt;!doctype&hellip;&gt;</literal>.</para>
</sect2>
<sect2>
<title>Abkürzungen (Akronyme)</title>
<para>Abkürzungen sollten bei ihrer ersten Verwendung immer
ausgeschrieben werden. Man schreibt also beispielsweise
<quote>Network Time Protocol (<acronym role="Network Time Protocol">NTP</acronym>)</quote>. Nachdem
die Abkürzung definiert wurde, sollte hingegen nur noch die
Abkürzung verwendet werden, es sei denn, die Verwendung des
gesamten Begriffes ergibt im jeweiligen Kontext mehr Sinn.
Im Normalfall werden Akronyme in jedem Dokument nur einmal definiert.
Es ist allerdings auch möglich, sie für jedes Kapitel
erneut zu definieren.</para>
<para>Die drei ersten Vorkommen der Abkürzung sollten in
<tag>acronym</tag>-Tags eingeschlossen werden.
Zusätzlich wird ein <literal>role</literal>-Attribut mit dem
vollständigen Begriff definiert. Dadurch kann ein Link
zu einem Glossar erzeugt werden. Außerdem wird der
komplette Begriff angezeigt, wenn man den Mauscursor über
die Abkürzung bewegt.</para>
</sect2>
<sect2>
<title>Einrückung</title>
<para>Die erste Zeile jeder Datei hat die Einrückung 0, und
zwar <emphasis>unabhängig</emphasis> von der Einrückung
der Datei, in der sie enthalten ist.</para>
<para>Öffnende Tags erhöhen die Einrückung um zwei
Leerzeichen. Schließende Tags verringern sie hingegen um
zwei Leerzeichen. Ein Block von acht Leerzeichen wird durch
einen Tabulator ersetzt. Ein solcher Block beginnt immer am
Anfang einer Zeile, führende Leerzeichen sind hier also
nicht erlaubt. Vermeiden Sie außerdem Leerzeichen am
Zeilenende. Der Inhalt von Elementen wird um zwei Leerzeichen
eingerückt, wenn er sich über mehr als eine Zeile
erstreckt.</para>
<para>Der Quellcode dieses Abschnitts sieht daher in etwa so
aus:</para>
<programlisting><![CDATA[+--- Einrückung (Spalte) 0
V
<chapter>
<title>...</title>
<sect1>
<title>...</title>
<sect2>
<title>Einrückung</title>
<para>Die erste Zeile jeder Datei hat die Einrückung 0, und
zwar <emphasis>unabhängig</emphasis> von der Einrückung
der Datei, in der sie enthalten ist.</para>
...
</sect2>
</sect1>
</chapter>]]></programlisting>
<para>Wenn Sie <application>Emacs</application> oder
<application>XEmacs</application> verwenden, um Ihre Dateien zu
bearbeiten, sollte der <literal>sgml-mode</literal> automatisch
geladen werden, und die lokalen
<application>Emacs</application>-Variablen am Ende einer Datei
sollten diesen Stil erzwingen.</para>
<para>Verwenden Sie <application>Vim</application>, sollten Sie
Ihren Editor so konfigurieren:</para>
<programlisting>augroup sgmledit
autocmd FileType sgml set formatoptions=cq2l " Special formatting options
autocmd FileType sgml set textwidth=70 " Wrap lines at 70 columns
autocmd FileType sgml set shiftwidth=2 " Automatically indent
autocmd FileType sgml set softtabstop=2 " Tab key indents 2 spaces
autocmd FileType sgml set tabstop=8 " Replace 8 spaces with a tab
autocmd FileType sgml set autoindent " Automatic indentation
augroup END</programlisting>
</sect2>
<sect2>
<title>Die korrekte Schreibweise von Tags</title>
<sect3>
<title>Einrücken von Tags</title>
<para>Tags, die die gleiche Einrückung aufweisen wie das
vorangegangene Tag, sollten durch eine Leerzeile getrennt
werden, Tags mit unterschiedlicher Einrückung hingegen
nicht:</para>
<informalexample>
<programlisting><![CDATA[<article lang='de'>
<articleinfo>
<title>NIS</title>
<pubdate>October 1999</pubdate>
<abstract>
<para>...
...
...</para>
</abstract>
</articleinfo>
<sect1>
<title>...</title>
<para>...</para>
</sect1>
<sect1>
<title>...</title>
<para>...</para>
</sect1>
</article>]]></programlisting>
</informalexample>
</sect3>
<sect3>
<title>Gliederung von Tags</title>
<para>Tags wie zum Beispiel <tag>itemizedlist</tag>, die
immer weitere Tags einschließen und selbst keine Zeichen
enthalten, befinden sich immer in einer eigenen Zeile.</para>
<para>Tags wie <tag>para</tag> und
<tag>term</tag> können selbst Text enthalten,
und ihr Inhalt beginnt direkt nach dem Tag, und zwar
<emphasis>in der gleichen Zeile</emphasis>.</para>
<para>Dies gilt analog, wenn diese zwei Tag-Arten wieder
geschlossen werden.</para>
<para>Eine Vermischung dieser Tags kann daher zu Problemen
führen.</para>
<para>Wenn auf ein Start-Tag, das keine Zeichen enthalten kann,
unmittelbar ein Tag folgt, das andere Tags einschließen
muss, um Zeichen darzustellen, befinden sich diese Tags auf
verschiedenen Zeilen. Das zweite Tag wird dabei
entsprechend eingerückt.</para>
<para>Wenn ein Tag, das Zeichen enthalten kann, direkt nach
einem Tag, das keine Zeichen enthalten kann, geschlossen wird,
befinden sich beide Tags in der gleichen Zeile.</para>
</sect3>
</sect2>
<sect2>
<title>Markup-Änderungen (<foreignphrase>white space
changes</foreignphrase>)</title>
<para>Wenn Sie Änderungen committen, <emphasis>committen Sie
niemals Inhalts- und Formatierungsänderungen zur gleichen
Zeit</emphasis>.</para>
<para>Nur auf diese Weise können die Übersetzungs-Teams
sofort erkennen, welche Änderungen durch Ihren Commit
verursacht wurden, ohne darüber nachdenken zu müssen,
ob sich der Inhalt einer Zeile oder nur deren Formatierung
geändert hat.</para>
<para>Nehmen wir an, Sie haben zwei Sätze in einen Absatz
eingefügt. Daher sind zwei Zeilen nun länger als
80&nbsp;Zeichen. Zuerst committen Sie Ihre inhaltliche
Änderung inklusive der zu langen Zeilen. Im nächsten
Commit korrigieren Sie den Zeilenumbruch und geben in der
Commit-Mitteilung an, dass es sich nur um Änderung am
Markup handelt (<foreignphrase>whitespace-only
change</foreignphrase>), und Übersetzer den Commit daher
ignorieren können.</para>
</sect2>
<sect2>
<title>Vermeiden von fehlerhaften Zeilenumbrüchen
(Nutzung von <foreignphrase>non-breaking space</foreignphrase>)</title>
<para>Vermeiden Sie Zeilenumbrüche an Stellen, an denen diese
hässlich aussehen oder es erschweren, einem Satz zu
folgen. Zeilenumbrüche hängen von der Breite des
gewählten Ausgabemedium ab. Insbesondere bei der Verwendung
von Textbrowsern können schlecht formatierte Absätze
wie der folgende entstehen:</para>
<literallayout class="monospaced">Data capacity ranges from 40 MB to 15
GB. Hardware compression &hellip;</literallayout>
<para>Die Nutzung der Entity <literal>&amp;nbsp;</literal>
verhindert Zeilenumbrüche zwischen zusammengehörenden
Teilen. Verwenden Sie <foreignphrase>non-breaking
spaces</foreignphrase> daher in den folgenden Fällen:</para>
<itemizedlist>
<listitem>
<para>Zwischen Zahlen und Einheiten:</para>
<programlisting><![CDATA[57600&nbsp;bps]]></programlisting>
</listitem>
<listitem>
<para>Zwischen Programmnamen und Versionsnummern:</para>
<programlisting><![CDATA[FreeBSD&nbsp;4.7]]></programlisting>
</listitem>
<listitem>
<para>Zwischen mehreren zusammengehörenden Wörtern
(Vorsicht bei Namen, die aus mehr als 3-4 Wörtern
bestehen, wie <quote>The FreeBSD Brazilian Portuguese
Documentation Project</quote>):</para>
<programlisting><![CDATA[Sun&nbsp;Microsystems]]></programlisting>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 xml:id="writing-style-word-list">
<title>Häufig verwendete Wörter</title>
<para>Die folgende Liste enthält einige Beispiele, wie
bestimmte Wörter innerhalb des FreeBSD
Documentation Projects geschrieben werden. Finden Sie ein
gesuchtes Wort hier nicht, sehen Sie bitte in der <link xlink:href="http://www.oreilly.com/oreilly/author/stylesheet.html">
Liste häufig verwendeter Wörter von
O'Reilly</link> nach.</para>
<itemizedlist>
<listitem>
<para>2.2.X</para>
</listitem>
<listitem>
<para>4.X-STABLE</para>
</listitem>
<listitem>
<para>CD-ROM</para>
</listitem>
<listitem>
<para>DoS <emphasis>(Denial of Service)</emphasis> </para>
</listitem>
<listitem>
<para>Ports Collection</para>
</listitem>
<listitem>
<para>IPsec</para>
</listitem>
<listitem>
<para>Internet</para>
</listitem>
<listitem>
<para>MHz</para>
</listitem>
<listitem>
<para>Soft Updates</para>
</listitem>
<listitem>
<para>Unix</para>
</listitem>
<listitem>
<para>disk label</para>
</listitem>
<listitem>
<para>email</para>
</listitem>
<listitem>
<para>file system</para>
</listitem>
<listitem>
<para>manual page</para>
</listitem>
<listitem>
<para>mail server</para>
</listitem>
<listitem>
<para>name server</para>
</listitem>
<listitem>
<para>null-modem</para>
</listitem>
<listitem>
<para>web server</para>
</listitem>
</itemizedlist>
</sect1>
</chapter>

View file

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 2013 Warren Block
All rights reserved.
Redistribution and use in source (SGML DocBook) and 'compiled' forms
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code (SGML DocBook) must retain the above
copyright notice, this list of conditions and the following
disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs,
converted to PDF, PostScript, RTF and other formats) must reproduce
the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
$FreeBSD$
$FreeBSDde$
basiert auf:
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="xhtml-markup">
<title>XHMTL Markup (noch nicht übersetzt)</title>
<para>Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte
das <link
xlink:href="&url.books.fdp-primer.en;/xhtml-markup.html">Original in
englischer Sprache</link>. Wenn Sie bei der Übersetzung
mithelfen wollen, schicken Sie bitte eine E-Mail
an &a.de.translators;.</para>
</chapter>

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more