aboutsummaryrefslogtreecommitdiff
path: root/de_DE.ISO8859-1/articles/freebsd-update-server/article.xml
blob: fa3fc42eb3293ba3aa3ba3fd33b0b89222a45da4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
<?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>