aboutsummaryrefslogtreecommitdiff
path: root/de_DE.ISO8859-1/books/handbook/ports/chapter.xml
blob: b40426dc9ba8e6b01804a9d31a77b4dc46931d1f (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
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
     The FreeBSD Documentation Project
     The FreeBSD German Documentation Project

     $FreeBSD$
     $FreeBSDde$
     basiert auf: r52705
-->
<chapter xmlns="http://docbook.org/ns/docbook"
  xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
  xml:id="ports">

  <info>
    <title>Installieren von Anwendungen: Pakete und Ports</title>

    <authorgroup>
      <author>
	<personname>
	  <firstname>Uwe</firstname>
	  <surname>Pierau</surname>
	</personname>
	<contrib>Übersetzt von </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<personname>
	  <firstname>Björn</firstname>
	  <surname>Heidotting</surname>
	</personname>
	<contrib>Überarbeitet von </contrib>
      </author>
    </authorgroup>
  </info>


  <sect1 xml:id="ports-synopsis">
    <title>Übersicht</title>

    <indexterm><primary>Ports</primary></indexterm>
    <indexterm><primary>Pakete</primary></indexterm>
    <para>&os; enthält eine umfassende Sammlung von Systemwerkzeugen,
      die Teil des Basissystems sind.  Darüber hinaus stellt &os; zwei
      sich ergänzende Methoden zur Installation von
      Drittanbieter-Software zur Verfügung: Die Ports-Sammlung zur
      Installation aus dem Quellcode sowie Pakete zur Installation
      von vorkompilierten binären Softwarepaketen.  Beide Methoden
      können benutzt werden, um Anwendungen von lokalen Medien oder
      über das Netzwerk zu installieren.</para>

    <para>Dieses Kapitel behandelt die folgenden Themen:</para>

    <itemizedlist>
      <listitem>
	<para>Den Unterschied zwischen binären Softwarepaketen und
	  Ports.</para>
      </listitem>

      <listitem>
	<para>Wie man Drittanbieter-Software findet, die nach
	  &os; portiert wurde.</para>
      </listitem>

      <listitem>
	<para>Wie Binärpakete mit <application>pkg</application>
	  verwaltet werden.</para>
      </listitem>

      <listitem>
	<para>Den Bau von Drittanbieter-Software aus dem Quellcode
	  mithilfe der Ports-Sammlung.</para>
      </listitem>

      <listitem>
	<para>Wie man die Dateien findet, die zusammen mit der
	  Anwendung installiert wurden.</para>
      </listitem>

      <listitem>
	<para>Was zu tun ist, wenn die Installation einer Software
	  fehlschlägt.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 xml:id="ports-overview">
    <title>Installation von Software</title>

    <para>Die typischen Schritte zur Installation von
      Drittanbieter-Software auf einem &unix; System sind:</para>

    <procedure>
      <step>
	<para>Download der Software, die als Quelltext oder im
	  Binärformat vorliegen kann.</para>
      </step>

      <step>
	<para>Auspacken der Software.  Dies ist typischerweise ein mit
	  &man.compress.1;, &man.gzip.1;, &man.bzip2.1; oder
	  &man.xz.1; komprimiertes Tar-Archiv.</para>
      </step>

      <step>
	<para>Durchsuchen der Dokumentation, die sich in
	  <filename>INSTALL</filename>, <filename>README</filename>
	  oder mehreren Dateien im Verzeichnis
	  <filename>doc/</filename> befindet, nach Anweisungen, wie
	  die Software zu installieren ist.</para>
      </step>

      <step>
	<para>Kompilieren der Software, wenn sie als Quelltext
	  vorliegt.  Dazu muss vielleicht das
	  <filename>Makefile</filename> angepasst, oder
	  <command>configure</command> ausgeführt werden.</para>
      </step>

      <step>
	<para>Testen und installieren der Software.</para>
      </step>
    </procedure>

    <para>Ein &os;-Port ist eine Sammlung von Dateien, die das
      Kompilieren der Quelltexte einer Anwendung automatisieren.  Die
      Dateien, die ein Port umfasst enthalten alle notwendigen
      Informationen um die Anwendung herunterzuladen, zu extrahieren,
      anzupassen und zu installieren.</para>

    <para>Wenn die Software nicht bereits für &os; angepasst und
      getestet wurde, muss vielleicht sogar der Quelltext angepasst
      werden, damit die Software funktioniert.</para>

    <para>Bislang wurden über <link
	xlink:href="&url.base;/ports/index.html">&os.numports;</link>
      Anwendungen von Drittanbietern nach &os; portiert.  Falls
      möglich, werden diese Anwendungen als vorkompilierte
      <emphasis>Pakete</emphasis> zur Verfügung gestellt.</para>

    <para>Pakete können mit &os;s Paketverwaltungswerkzeugen
      manipuliert werden.</para>

    <para>Pakete und Ports beachten Abhängigkeiten zwischen
      Anwendungen.  Wenn ein Paket oder die Ports-Sammlung benutzt
      wird, um eine Anwendung zu installieren, dann werden fehlende
      Bibliotheken zuerst installiert, sofern sie nicht schon vorher
      installiert waren.</para>

    <para>Ein &os;-Paket enthält vorkompilierte Kopien aller Befehle
      für eine Anwendung, sowie zusätzliche Konfigurationsdateien und
      Dokumentation.  Pakete können mit den &man.pkg.8;-Befehlen, wie
      <command>pkg install</command>, manipuliert werden.</para>

    <para>Obwohl beide Technologien gleichartig sind, so haben
      Pakete und Ports jeweils ihre eigenen Stärken.  Welche
      Technologie eingesetzt wird, hängt letzten Endes von den
      Anforderungen ab, die an eine bestimmte Anwendung gestellt
      werden.</para>

    <itemizedlist>
      <title>Vorteile von Paketen</title>

      <listitem>
	<para>Das komprimierte Paket einer Anwendung ist normalerweise
	  kleiner als das komprimierte Archiv der Quelltexte.</para>
      </listitem>

      <listitem>
	<para>Pakete müssen nicht mehr kompiliert werden.  Dies ist
	  ein Vorteil, wenn große Pakete wie
	  <application>Mozilla</application>,
	  <application>KDE</application> oder
	  <application>GNOME</application> auf langsamen Maschinen
	  installiert werden.</para>
      </listitem>

      <listitem>
	<para>Wenn Sie Pakete verwenden, brauchen Sie nicht zu
	  verstehen, wie Software unter &os; kompiliert wird.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <title>Vorteile von Ports</title>

      <listitem>
	<para>Da die Pakete auf möglichst vielen System laufen sollen,
	  werden Optionen beim Übersetzen zurückhaltend gesetzt.
	  Wird eine Anwendung über die Ports übersetzt, können die
	  Optionen nach eigenen Bedürfnissen angepasst werden.</para>
      </listitem>

      <listitem>
	<para>Die Eigenschaften einiger Anwendungen werden über
	  Optionen zum Zeitpunkt des Übersetzens festgelegt.
	  <application>Apache</application> kann zum Beispiel über
	  eine große Auswahl an eingebauten Optionen konfiguriert
	  werden.</para>

	<para>Für einige Fälle existieren verschiedene
	  Pakete einer Anwendung, die beim Übersetzen
	  unterschiedlich konfiguriert wurden.  Für
	  <application>Ghostscript</application> gibt es ein
	  <filename>ghostscript</filename>-Paket und ein
	  <filename>ghostscript-nox11</filename>-Paket, die sich durch
	  die <application>Xorg</application> Unterstützung
	  unterscheiden.  Das Erstellen von verschiedenen Paketen wird
	  aber schnell unhandlich, wenn eine Anwendung mehr als ein
	  oder zwei Optionen zum Zeitpunkt des Übersetzens
	  besitzt.</para>
      </listitem>

      <listitem>
	<para>Die Lizenzbestimmungen mancher Software verbietet ein
	  Verbreiten in binärer Form.  Diese Software muss als
	  Quelltext, der durch den Benutzer kompiliert werden muss,
	  ausgeliefert werden.</para>
      </listitem>

      <listitem>
	<para>Einige Leute trauen binären Distributionen nicht, oder
	  sie ziehen es vor den Quelltext zu lesen, um diesen nach
	  möglichen Problemen zu durchsuchen.</para>
      </listitem>

      <listitem>
	<para>Der Quellcode wird benötigt, um individuelle Anpassungen
	  anzuwenden.</para>
      </listitem>
    </itemizedlist>

    <para>Wenn Sie über aktualisierte Ports informiert sein wollen,
      lesen Sie die Mailinglisten &a.ports; und &a.ports-bugs;.</para>

    <warning>
      <para>Bevor Sie eine Anwendung installieren, informieren Sie
	sich auf der Seite <link
	  xlink:href="https://vuxml.FreeBSD.org/"></link>
	über mögliche Sicherheitsprobleme mit der Anwendung, oder
	führen Sie <command>pkg audit -F</command> aus, um alle
	installierten Pakete auf bekannte Sicherheitslücken zu
	überprüfen.</para>
    </warning>

    <para>Der Rest dieses Kapitels beschreibt, wie man Software
      Dritter mit Paketen und Ports unter &os; installiert und
      verwaltet.</para>
  </sect1>

  <sect1 xml:id="ports-finding-applications">
    <title>Suchen einer Anwendung</title>

    <para>Die Anzahl der nach &os; portierten Anwendungen steigt
      ständig.  Es gibt einige Wege, um nach Anwendungen zu
      suchen:</para>

    <itemizedlist>
      <listitem>
	<para>Die &os;-Webseite stellt unter
	  <link xlink:href="&url.base;/ports/index.html">https://www.FreeBSD.org/ports/</link>
	  eine aktuelle und durchsuchbare Liste aller Anwendungen zur
	  Verfügung.  Die Ports können nach dem Namen den Anwendung,
	  oder über die Software-Kategorie durchsucht werden.</para>
      </listitem>

      <listitem>
	<indexterm><primary>FreshPorts</primary></indexterm>

	<para>Dan Langille verwaltet <link
	    xlink:href="http://www.FreshPorts.org/">FreshPorts.org</link>,
	  das eine umfassende Suchfunktion bietet und Änderungen an
	  den Anwendungen in der Ports-Sammlung verfolgt.
	  Registrierte Benutzer können eine Merkliste erstellen, um
	  automatisch eine E-Mail zu erhalten, sobald ein Port von
	  dieser Liste aktualisiert wurde.</para>
      </listitem>

      <listitem>
	<indexterm><primary>SourceForge</primary></indexterm>

	<para>Wenn Sie bei der Suche nach einer bestimmten Anwendung
	  nicht weiter kommen, versuchen Sie eine Webseite wie <link
	    xlink:href="http://www.sourceforge.net/">
	    SourceForge.net</link> oder <link
	    xlink:href="http://www.github.com/">GitHub.com</link>.
	  Schauen Sie dann auf der <link
	    xlink:href="&url.base;/ports/index.html">
	    &os;-Webseite</link> nach, ob die Anwendung portiert
	  wurde.</para>
      </listitem>

      <listitem>
	<indexterm>
	  <primary>pkg</primary>
	  <secondary>search</secondary>
	</indexterm>

	<para xml:id="pkg-search">Das Paket Repository nach einer
	  Anwendung durchsuchen:</para>

	<screen>&prompt.root; <userinput>pkg search <replaceable>subversion</replaceable></userinput>
git-subversion-<replaceable>1.9.2</replaceable>
java-subversion-<replaceable>1.8.8_2</replaceable>
p5-subversion-<replaceable>1.8.8_2</replaceable>
py27-hgsubversion-<replaceable>1.6</replaceable>
py27-subversion-<replaceable>1.8.8_2</replaceable>
ruby-subversion-<replaceable>1.8.8_2</replaceable>
subversion-<replaceable>1.8.8_2</replaceable>
subversion-book-<replaceable>4515</replaceable>
subversion-static-<replaceable>1.8.8_2</replaceable>
subversion16-<replaceable>1.6.23_4</replaceable>
subversion17-<replaceable>1.7.16_2</replaceable></screen>

	<para>Die Paketnamen enthalten jeweils die Versionsnummer.
	  Wenn ein Port von python abhängt, wird auch die
	  Versionsnummer von python ausgegeben, mit der die Anwendung
	  gebaut wurde.  Für einige Ports stehen sogar mehrere
	  Versionen zur Verfügung.  Im Fall von
	  <application>Subversion</application> gibt es drei
	  verschiedene Versionen, mit unterschiedlichen Optionen.  In
	  diesem Fall wird die Version von
	  <application>Subversion</application> statisch gelinkt.
	  Wenn Sie ein Paket installieren, ist es am besten den
	  Ursprung des Ports anzugeben, also den Pfad in der
	  Ports-Sammlung.  Wiederholen Sie
	  <command>pkg search</command> mit <option>-o</option> um den
	  Ursprung der Pakete anzuzeigen:</para>

	<screen>&prompt.root; <userinput>pkg search -o <replaceable>subversion</replaceable></userinput>
devel/git-subversion
java/java-subversion
devel/p5-subversion
devel/py-hgsubversion
devel/py-subversion
devel/ruby-subversion
devel/subversion16
devel/subversion17
devel/subversion
devel/subversion-book
devel/subversion-static</screen>

	<para>Zudem unterstützt <command>pkg search</command> die
	  Suche mit regulären Ausdrücken, nach exakten Treffern, nach
	  der Beschreibung oder nach anderen Feldern in der
	  Repository-Datenbank.  Nach der Installation von
	  <package>ports-mgmt/pkg</package> oder
	  <package>ports-mgmt/pkg-devel</package>, finden Sie in
	  &man.pkg-search.8; weitere Details.</para>
      </listitem>

      <listitem>
	<para>Wenn die Ports-Sammlung bereits installiert ist, gibt es
	  mehrere Methoden, um die lokale Version dieser Port-Sammlung
	  abzufragen.  Verwenden Sie
	  <command>whereis <replaceable>Datei</replaceable></command>
	  um herauszufinden, in welcher Kategorie ein Port ist, wobei
	  <replaceable>Datei</replaceable> der Name des Programms ist,
	  das installiert werden soll:</para>

        <screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>

	<para>Alternativ kann der &man.echo.1;-Befehl verwendet
	  werden:</para>

	<screen>&prompt.root; <userinput>echo /usr/ports/*/*lsof*</userinput>
/usr/ports/sysutils/lsof</screen>

	<para>Beachten Sie aber, dass dieser Befehl auch alle Dateien
	  im Verzeichnis <filename>/usr/ports/distfiles</filename>
	  findet, auf die der angegebene Suchbegriff passt.</para>
      </listitem>

      <listitem>
	<para>Ein weiterer Weg nach Software zu suchen besteht darin,
	  die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
	  Wechseln Sie dazu in das Verzeichnis
	  <filename>/usr/ports</filename>, und rufen Sie <command>make
	    search
	    name=<replaceable>Anwendungsname</replaceable></command>
	  auf, wobei <replaceable>Anwendungsname</replaceable> der
	  Name der Software ist.  Um zum Beispiel nach
	  <command>lsof</command> zu suchen:</para>

        <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port:   lsof-4.88.d,8
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  ler@lerctr.org
Index:  sysutils
B-deps:
R-deps: </screen>

	<tip>
	  <para>Der integrierte Suchmechanismus verwendet eine Datei
	    mit Index-Informationen.  Erscheint eine Meldung, dass der
	    <filename>INDEX</filename> benötigt wird, führen Sie
	    <command>make fetchindex</command> aus, um die aktuelle
	    Index-Datei herunterzuladen.  Mit einem vorhandenen
	    <filename>INDEX</filename> ist
	    <command>make search</command> in der Lage, die gewünschte
	    Suche durchzuführen.</para>
	</tip>

	<para>Die <quote>Path:</quote>-Zeile zeigt an, wo der Port zu
	  finden ist.</para>

	<para>Um weniger Informationen zu erhalten, benutzen Sie die
	  Funktion <command>quicksearch</command>:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make quicksearch name=lsof</userinput>
Port:	lsof-4.88.d,8
Path:	/usr/ports/sysutils/lsof
Info:	Lists information about open files (similar to fstat(1))</screen>

	<para>Erweiterte Suchen führen Sie mit
	  <command>make search
	    key=<replaceable>Text</replaceable></command> oder
	  <command>make quicksearch
	    key=<replaceable>Text</replaceable></command> aus.  Damit
	  werden Portnamen, Kommentare, Beschreibungen und
	  Abhängigkeiten nach <replaceable>Text</replaceable>
	  durchsucht.  Dies kann sehr nützlich sein, wenn der
	  Name des Programms nicht bekannt ist.</para>

	<para>Bei der Verwendung von <buildtarget>search</buildtarget>
	  und <buildtarget>quicksearch</buildtarget> wird Groß- und
	  Kleinschreibung bei der Suche ignoriert.  Die Suche nach
	  <quote>LSOF</quote> wird dieselben Ergebnisse wie die Suche
	  nach <quote>lsof</quote> liefern.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 xml:id="pkgng-intro">
    <title>Benutzen von <application>pkg</application> zur
      Verwaltung von Binärpaketen</title>

    <para><application>pkg</application> ist der Nachfolger für die
      traditionellen Paketverwaltungswerkzeuge von &os;.  Es bietet
      viele Funktionen, die den Umgang mit Binärpaketen schneller und
      einfacher machen.</para>

    <para>Wenn Sie lediglich vorgefertigte Binärpakete von den &os;
      Spiegeln benutzen möchten, ist <application>pkg</application>
      für die Verwaltung von Paketen ausreichend.</para>

    <para>Falls Sie jedoch die Software aus dem Quellcode bauen oder
      eigene Repositories verwenden, benötigen Sie ein separates
      <link linkend="ports-upgrading-tools">
	Paketverwaltungswerkzeug</link>.</para>

    <para><application>pkg</application> ist kein Ersatz für diese
      Werkzeuge.  Während diese Werkzeuge Drittanbieter-Software
      sowohl aus Binärpaketen als auch aus der Ports-Sammlung
      installieren können, so installiert
      <application>pkg</application> ausschließlich
      Binärpakete.</para>

    <sect2 xml:id="pkgng-initial-setup">
      <title>Erste Schritte mit
	<application>pkg</application></title>

      <para>&os; enthält ein Bootstrap-Programm, welches
	<application>pkg</application> zusammen mit den Manualpages
	installiert.  <application>pkg</application> wurde für &os;
	Versionen ab 10.<replaceable>X</replaceable>
	entwickelt.</para>

      <note>
	<para>Nicht alle &os; Versionen unterstüzen den folgenden
	  Bootstrap Prozess.  Eine aktuelle Liste finden Sie unter
	  <link xlink:href="https://pkg.FreeBSD.org/"></link>.
	  Andernfalls muss <application>pkg</application> aus der
	  Ports-Sammlung oder als Binärpaket installiert
	  werden.</para>
      </note>

      <para>Um das Bootstrap Programm zu starten, geben Sie folgendes
	ein:</para>

      <screen>&prompt.root; <userinput>/usr/sbin/pkg</userinput></screen>

      <para>Sie müssen eine Internetverbindung haben, damit der
	Bootstrap Prozess funktioniert.</para>

      <para>Um den Port zu installieren, geben Sie stattdessen
	folgendes ein:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/pkg</userinput>
&prompt.root; <userinput>make</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

      <para>Bei der Aktualisierung eines bestehenden Systems, welches
	ursprünglich die alten pkg_* Werkzeuge verwendet
	hat, muss die Datenbank in das neue Format konvertiert werden,
	damit die neuen Werkzeuge wissen, welche Pakete bereits
	installiert sind.  Sobald <application>pkg</application>
	installiert ist, muss die Paketdatenbank mit dem folgenden
	Befehl vom traditionellen Format in das neue Format
	konvertiert werden:</para>

      <screen>&prompt.root; <userinput>pkg2ng</userinput></screen>

      <note>
	<para>Auf neu installieren Systemen, auf denen noch keine
	  Software von Drittanbietern installiert wurde, kann dieser
	  Schritt entfallen.</para>
      </note>

      <important>
	<para>Die Konvertierung ist unwiderruflich.  Sobald die
	  Paketdatenbank in das Format von
	  <application>pkg</application> umgewandelt wurde, sollten
	  die traditionellen <application>pkg_*</application>
	  Werkzeuge nicht mehr benutzt werden.</para>
      </important>

      <note>
	<para>Bei der Konvertierung der Paketdatenbank können Fehler
	  ausgegeben werden, wenn die Inhalte auf die neue Version
	  umgewandelt werden.  Im Allgemeinen können diese Fehler
	  ignoriert werden.  Wenn <application>pkg2ng</application>
	  fertig ist, wird eine Liste von Software ausgegeben, die
	  nicht erfolgreich konvertiert werden konnte.  Diese
	  Anwendungen müssen manuell neu installiert werden.</para>
      </note>

      <para>Um sicherzustellen, dass die Ports-Sammlung neue
	Pakete mit <application>pkg</application> und nicht mit
	den traditionellen Formaten registriert, muss in
	&os;&nbsp;10.<replaceable>X</replaceable> und früheren
	Versionen folgende Zeile in
	<filename>/etc/make.conf</filename> hinzugefügt werden:</para>

      <programlisting>WITH_PKGNG=     yes</programlisting>

      <para>In der Voreinstellung benutzt
	<application>pkg</application> die Pakete der &os;-Spiegel
	(das <emphasis>Repository</emphasis>).  Wenn Sie ein eigenes
	Paket-Repository erstellen möchten, lesen Sie
	<xref linkend="ports-poudriere"/></para>

      <para>Weitere Konfigurationsoptionen für
	<application>pkg</application> sind in &man.pkg.conf.5;
	beschrieben.</para>

      <para>Informationen zur Bedienung von
	<application>pkg</application> ist in &man.pkg.8; verfügbar.
	Alternativ kann <command>pkg</command>
	ohne zusätzliche Argumente aufgerufen werden.</para>

      <para>Jedes Argument von <application>pkg</application> ist in
	seiner spezifischen Manualpage dokumentiert.  Um
	beispielsweise die Manualpage von
	<command>pkg install</command> zu lesen, geben Sie einen der
	folgenden Befehle ein:</para>

      <screen>&prompt.root; <userinput>pkg help install</userinput></screen>

      <screen>&prompt.root; <userinput>man pkg-install</userinput></screen>

      <para>Der Rest dieses Abschnitts beschreibt die typischen
	Verwaltungsaufgaben für Binärpakete, die mit
	<application>pkg</application> erledigt werden können.
	Jedes gezeigte Kommando verfügt über Optionen, um das
	Verhalten anzupassen.  Details und weitere Beispiele finden
	Sie in den Manualpages der einzelnen Kommandos.</para>
    </sect2>

    <sect2 xml:id="pkgng-pkg-info">
      <title>Informationen über installierte Pakete anzeigen</title>

      <para>Informationen über bereits installierte Pakete können
	mit <command>pkg info</command> angezeigt werden.  Dabei
	wird, wenn keine weiteren Optionen angegeben werden,  die
	Version und die Beschreibung aller Pakete oder eines
	einzelnen Pakets ausgegeben.</para>

      <para>Um zu ermitteln welche Version von
	<application>pkg</application> installiert ist, geben Sie
	folgendes ein:</para>

      <screen>&prompt.root; <userinput>pkg info pkg</userinput>
pkg-1.1.4_1</screen>
    </sect2>

    <sect2 xml:id="pkgng-installing-deinstalling">
      <title>Installation und Deinstallation von Paketen</title>

      <para>Ein Binärpaket installieren Sie mit dem folgenden
	Befehl, wobei <replaceable>paketname</replaceable> der Name
	des zu installierenden Pakets ist:</para>

      <screen>&prompt.root; <userinput>pkg install <replaceable>paketname</replaceable></userinput></screen>

      <para>Dieser Befehl verwendet Daten aus dem Repository um zu
	bestimmen, welche Version der Software und welche
	Abhängigkeiten installiert werden müssen.  Um beispielsweise
	<application>curl</application> zu installieren:</para>

      <screen>&prompt.root; <userinput>pkg install curl</userinput>
Updating repository catalogue
/usr/local/tmp/All/curl-7.31.0_1.txz          100% of 1181 kB 1380 kBps 00m01s

/usr/local/tmp/All/ca_root_nss-3.15.1_1.txz   100% of  288 kB 1700 kBps 00m00s

Updating repository catalogue
The following 2 packages will be installed:

        Installing ca_root_nss: 3.15.1_1
        Installing curl: 7.31.0_1

The installation will require 3 MB more space

0 MB to be downloaded

Proceed with installing packages [y/N]: <userinput>y</userinput>
Checking integrity... done
[1/2] Installing ca_root_nss-3.15.1_1... done
[2/2] Installing curl-7.31.0_1... done
Cleaning up cache files...Done</screen>

      <para>Das neue Paket und jedes weitere Paket, das als
	Abhängigkeit installiert wurde, ist in der Liste der
	installierten Pakete zu sehen:</para>

      <screen>&prompt.root; <userinput>pkg info</userinput>
ca_root_nss-3.15.1_1     The root certificate bundle from the Mozilla Project
curl-7.31.0_1     Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.1.4_6       New generation package manager</screen>

      <para>Wird ein Paket nicht mehr benötigt, kann es mit
	<command>pkg delete</command> entfernt werden.  Zum
	Beispiel:</para>

      <screen>&prompt.root; <userinput>pkg delete curl</userinput>
The following packages will be deleted:

      curl-7.31.0_1

The deletion will free 3 MB

Proceed with deleting packages [y/N]: <userinput>y</userinput>
[1/1] Deleting curl-7.31.0_1... done</screen>
    </sect2>

    <sect2 xml:id="pkgng-upgrading">
      <title>Installierte Pakete aktualisieren</title>

      <para>Installierte Pakete können mit diesem Kommando auf die
	neuesten Versionen aktualisiert werden:</para>

      <screen>&prompt.root; <userinput>pkg upgrade</userinput></screen>

      <para>Dieses Kommando vergleicht und aktualisiert die
	installierten Versionen der Pakete mit denen im
	Repository.</para>
    </sect2>

    <sect2 xml:id="pkgng-auditing">
      <title>Installierte Pakete auditieren</title>

      <para>Regelmäßig werden Sicherheitslücken in
	Drittanbieter-Software entdeckt.
	<application>pkg</application> besitzt einen eingebauten
	Auditing-Mechanismus.  Um die auf dem System installierte
	Software auf Sicherheitslücken zu prüfen, geben Sie
	folgenden Befehl ein:</para>

      <screen>&prompt.root; <userinput>pkg audit -F</userinput></screen>
    </sect2>

    <sect2 xml:id="pkgng-autoremove">
      <title>Automatisches Entfernen unbenutzter Pakete</title>

      <para>Das Entfernen eines Pakets kann möglicherweise
	Abhängigkeiten hinterlassen, die nicht mehr benötigt werden.
	Unnötige Pakete, die als Abhängigkeit von anderen
	Paketen installiert wurden, können automatisch erfasst und
	entfernt werden:</para>

      <screen>&prompt.root; <userinput>pkg autoremove</userinput>
Packages to be removed:
    ca_root_nss-3.15.1_1

The autoremoval will free 723 kB

Proceed with autoremoval of packages [y/N]: <userinput>y</userinput>
Deinstalling ca_root_nss-3.15.1_1... done</screen>

      <para>Pakete, die als Abhängigkeiten installiert werden,
	bezeichnet man als <emphasis>automatische</emphasis> Pakete.
	Nichtautomatische Pakete, also die Pakete, die explizit
	nicht als Abhängigkeit von einem anderen Paket installiert
	wurden, können wie folgt angezeigt werden:</para>

      <screen>&prompt.root; <userinput>pkg prime-list</userinput>
nginx
openvpn
sudo</screen>

      <para><command>pkg prime-list</command> ist ein Alias-Befehl,
	der in <filename>/usr/local/etc/pkg.conf</filename> definiert
        ist.  Es gibt noch weitere Befehle die Sie verwenden können,
	um die Paketdatenbank des Systems abzufragen.  Beispielsweise
	kann der Befehl <command>pkg prime-origins</command> benutzt
	werden, um das ursprüngliche Portverzeichnis der oben
	gezeigten Liste zu erhalten:</para>

      <screen>&prompt.root; <userinput>pkg prime-origins</userinput>
www/nginx
security/openvpn
security/sudo</screen>

      <para>Diese Liste kann verwendet werden, um alle auf einem
	System installierten Pakete mit Hilfe von Werkzeugen wie
	<package>ports-mgmt/poudriere</package> oder
	<package>ports-mgmt/synth</package> neu zu erstellen.</para>

      <para>Um ein bereits installiertes Paket als automatisches
	Paket zu kennzeichnen, können Sie folgenden
	Befehl benutzen:</para>

      <screen>&prompt.root; <userinput>pkg set -A 1 devel/cmake</userinput></screen>

      <para>Sobald ein Paket nicht mehr genutzt wird und es als
	automatisch gekennzeichnet ist, wird es durch
	<command>pkg autoremove</command> erfasst.</para>

      <para>Das kennzeichnen eines installierten Pakets als
	<emphasis>nicht</emphasis> automatisch kann wie
	folgt gemacht werden:</para>

      <screen>&prompt.root; <userinput>pkg set -A 0 devel/cmake</userinput></screen>
    </sect2>

    <sect2 xml:id="pkgng-backup">
      <title>Wiederherstellung der Paketdatenbank</title>

      <para>Im Gegensatz zum alten Paketverwaltungssystem beinhaltet
	<application>pkg</application> einen eigenen Mechanismus
	zur Sicherung der Paketdatenbank.  Diese Funktionalität ist
	standardmäßig aktiviert.</para>

      <tip>
	<para>Um das Skript daran zu hindern, eine Sicherung der
	  Paketdatenbank zu erstellen, muss in &man.periodic.conf.5;
	  <literal>daily_backup_pkgdb_enable="NO"</literal> gesetzt
	  werden.</para>
      </tip>

      <para>Um den Inhalt einer früheren Paketdatenbank
	wiederherzustellen, geben Sie folgendes Kommando ein und
	ersetzen Sie <replaceable>/path/to/pkg.sql</replaceable>
	durch den Speicherort der gesicherten Datenbank:</para>

      <screen>&prompt.root; <userinput>pkg backup -r <replaceable>/path/to/pkg.sql</replaceable></userinput></screen>

      <note>
	<para>Wenn Sie eine Sicherung wiederherstellen, die von
	  einem <command>periodic</command> Skript erstellt wurde,
	  müssen Sie diese zuerst dekomprimieren.</para>
      </note>

      <para>Um eine manuelle Sicherung der
	<application>pkg</application> Paketdatenbank zu erstellen,
	führen Sie den folgenden Befehl aus, und ersetzen Sie
	<replaceable>/path/to/pkg.sql</replaceable> durch einen
	geeigneten Dateinamen:</para>

      <screen>&prompt.root; <userinput>pkg backup -d <replaceable>/path/to/pkg.sql</replaceable></userinput></screen>
    </sect2>

    <sect2 xml:id="pkgng-clean">
      <title>Alte Pakete entfernen</title>

      <para>Standardmäßig speichert <application>pkg</application>
	Pakete in einem Cache-Verzeichnis, welches in
	&man.pkg.conf.5; in der Variablen
	<envar>PKG_CACHEDIR</envar> definiert wird.  Nur Kopien der
	neusten installierten Pakete werden beibehalten.  Ältere
	Versionen von <application>pkg</application> haben alle
	Pakete aufbewahrt.  Um diese veralteten Pakete zu entfernen,
	geben Sie folgendes ein:</para>

      <screen>&prompt.root; <userinput>pkg clean</userinput></screen>

      <para>Um alle Pakte aus dem Cache-Verzeichnis zu löschen,
	geben Sie ein:</para>

      <screen>&prompt.root; <userinput>pkg clean -a</userinput></screen>
    </sect2>

    <sect2 xml:id="pkgng-set">
      <title>Manipulation der Paket-Metadaten</title>

      <para>Bei Software aus der &os; Ports-Sammlung kann es
	vorkommen, dass die Hauptversionsnummer geändert wird.
	Dafür hat <application>pkg</application> ein eingebautes
	Kommando, um die Quelle eines Pakets zu aktualisieren.  Dies
	ist nützlich, wenn zum Beispiel <package>lang/php5</package>
	zu <package>lang/php53</package> umbenannt wurde, damit
	<package>lang/php5</package> jetzt die Version
	<literal>5.4</literal> integrieren kann.</para>

      <para>Um die Quelle des Pakets für das obige Beispiel zu
	ändern, geben Sie folgendes ein:</para>

      <screen>&prompt.root; <userinput>pkg set -o lang/php5:lang/php53</userinput></screen>

      <para>Ein weiteres Beispiel:
	Um <package>lang/ruby18</package> auf
	<package>lang/ruby19</package> zu aktualisieren, geben Sie
	folgendes ein:</para>

      <screen>&prompt.root; <userinput>pkg set -o lang/ruby18:lang/ruby19</userinput></screen>

      <para>In diesem letzten Beispiel wird die Quelle der
	Bibliotheken von <filename>libglut</filename> von
	<package>graphics/libglut</package> auf
	<package>graphics/freeglut</package> geändert:</para>

      <screen>&prompt.root; <userinput>pkg set -o graphics/libglut:graphics/freeglut</userinput></screen>

      <note>
	<para>Bei einem Wechsel der Paketquelle ist es notwendig,
	  die Pakete neu zu installieren, welche von dem Paket
	  abhängig sind, das seine Paketquelle geändert hat.  Um
	  eine Neuinstallation von abhängigen Paketen zu erzwingen,
	  führen Sie folgenden Befehl aus:</para>

	<screen>&prompt.root; <userinput>pkg install -Rf <replaceable>graphics/freeglut</replaceable></userinput></screen>
      </note>
    </sect2>
  </sect1>

  <sect1 xml:id="ports-using">
    <title>Benutzen der Ports-Sammlung</title>

    <para>Die Ports-Sammlung ist eine Reihe von
      <filename>Makefiles</filename>, Patches und Beschreibungen.
      Die Dateien für den Bau und die Installation von einzelnen
      Anwendungen unter &os; werden als <emphasis>Port</emphasis>
      bezeichnet.</para>

    <para>In der Voreinstellung wird die Ports-Sammlung im
      Verzeichnis <filename>/usr/ports</filename> gespeichert.</para>

    <para>Bevor eine Anwendung aus den Ports erstellt werden kann,
      muss zuerst die Ports-Sammlung installiert werden.  Wenn dies
      nicht bereits bei der Installation von &os; geschehen ist,
      benutzen Sie eine der beiden Methoden um sie zu
      installieren:</para>

    <procedure xml:id="ports-using-portsnap-method">
      <title>Installation mit Portsnap</title>

      <para>&os;s Basissystem enthält mit
	<application>Portsnap</application> ein schnelles
	und benutzerfreundliches Werkzeug zur Installation der
	Ports-Sammlung und die bevorzugte Wahl für die meisten
	Benutzer.  Dieses Programm stellt eine Verbindung zu einem
	&os;-Server her, überprüft den gesicherten Schlüssel und
	lädt eine aktuelle Kopie der Ports-Sammlung herunter.  Der
	Schlüssel wird benötigt, um die Integrität der
	heruntergeladenen Dateien zu untersuchen.</para>

      <step>
	<para>Laden Sie einen komprimierten Snapshot der
	  Ports-Sammlung in
	  <filename>/var/db/portsnap</filename>:</para>

	<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
      </step>

      <step>
	<para>Wenn Sie <application>Portsnap</application> das erste
	  Mal verwenden, müssen Sie den Snapshot nach
	  <filename>/usr/ports</filename> extrahieren:</para>

	<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
      </step>

      <step>
	<para>Nach dem ersten Einsatz von
	  <application>Portsnap</application>, kann
	  <filename>/usr/ports</filename> wie folgt aktualisiert
	  werden:</para>

	<screen>&prompt.root; <userinput>portsnap fetch</userinput>
&prompt.root; <userinput>portsnap update</userinput></screen>

	<para>Bei der Verwendung von <literal>fetch</literal> können
	  die <literal>extract</literal> oder
	  <literal>update</literal> Operationen nacheinander
	  ausgeführt werden, etwa so:</para>

	<screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen>
      </step>
    </procedure>

    <procedure xml:id="ports-using-subversion-method">
      <title>Installation mit Subversion</title>

      <para>Wird mehr Kontrolle über die Ports-Sammlung benötigt,
	oder wenn die lokalen Änderungen beibehalten werden sollen,
	kann <application>Subversion</application> benutzt werden,
	um die Ports-Sammlung zu laden.  Lesen Sie  <link
	  xlink:href="&url.articles.committers-guide;/subversion-primer.html">den
	  Subversion Primer</link> für eine detaillierte
	Beschreibung von <application>Subversion</application>.</para>

      <step>
	<para><application>Subversion</application> muss installiert
	  sein, bevor die Ports-Sammlung geladen werden kann.
	  Ist eine lokale Kopie der Ports-Sammlung bereits
	  vorhanden, installieren Sie
	  <application>Subversion</application> wie folgt:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/devel/subversion</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

	<para>Wenn keine lokale Kopie der Ports-Sammlung vorhanden
	  ist, oder <application>pkg</application> zur Verwaltung
	  von Paketen benutzt wird, kann
	  <application>Subversion</application> als Paket
	  installiert werden:</para>

	<screen>&prompt.root; <userinput>pkg install subversion</userinput></screen>
      </step>

      <step>
	<para>Laden Sie eine Kopie der Ports-Sammlung:</para>

	<screen>&prompt.root; <userinput>svn checkout https://svn.FreeBSD.org/ports/head /usr/ports</userinput></screen>
      </step>

      <step>
	<para>Nach dem erstmaligen
	  <foreignphrase>checkout</foreignphrase> mit
	  <application>Subversion</application> kann
	  <filename>/usr/ports</filename> wie folgt aktualisiert
	  werden:</para>

	<screen>&prompt.root; <userinput>svn update /usr/ports</userinput></screen>
      </step>
    </procedure>

    <para>Die Ports-Sammlung enthält eine Reihe von Verzeichnissen,
      die jeweils eine Softwarekategorie repräsentieren.  Jede
      Kategorie hat für jede einzelne Anwendung ein weiteres
      Unterverzeichnis.  Jedes Unterverzeichnis enthält Dateien, die
      &os; sagen, wie ein Programm kompiliert und installiert werden
      muss.  Diese Dateien werden auch Port-<quote>Gerüst</quote>
      genannt. Jedes Port-<quote>Gerüst</quote> beinhaltet die
      folgenden Dateien und Verzeichnisse:</para>

    <itemizedlist>
      <listitem>
	<para><filename>Makefile</filename>:  enthält Anweisungen, die
	  spezifizieren, wie die Anwendung kompiliert wird und wohin
	  die Komponenten installiert werden sollten.</para>
      </listitem>

      <listitem>
	<para><filename>distinfo</filename>:  enthält die Namen und
	  die Prüfsummen der Dateien, die heruntergeladen werden
	  müssen, um den Port zu bauen.</para>
      </listitem>

      <listitem>
	<para><filename>files</filename>:  dieses Verzeichnis
	  enthält Patches, welche das Übersetzen und Installieren
	  der Anwendung unter &os; ermöglichen.  Zudem können noch
	  weitere Dateien, die für die Übersetzung des Ports
	  verwendet werden, enthalten sein.</para>
      </listitem>

      <listitem>
	<para><filename>pkg-descr</filename>:  enthält
	  eine ausführlichere Beschreibung der Anwendung.</para>
      </listitem>

      <listitem>
	<para><filename>pkg-plist</filename>:  eine Liste
	  aller Dateien, die durch diesen Port installiert werden.
	  Außerdem sind hier Informationen enthalten, die zum
	  Entfernen des Ports benötigt werden.</para>
      </listitem>
    </itemizedlist>

    <para>Einige Ports beinhalten noch
      <filename>pkg-message</filename> oder weitere Dateien, die vom
      Port-System benutzt werden, um spezielle Situationen zu
      handhaben.  Wenn Sie mehr über diese Dateien oder das
      Port-System erfahren wollen, lesen Sie das <link
	xlink:href="&url.books.porters-handbook.en;/index.html">
	&os; Porter's Handbook</link>.</para>

    <para>Ein Port enthält nicht den eigentlichen Quellcode, der
      auch als <quote>Distfile</quote> bekannt ist.  Der
      heruntergeladene Quellcode wird automatisch nach
      <filename>/usr/ports/distfiles</filename> extrahiert.</para>

    <sect2 xml:id="ports-skeleton">
      <title>Ports installieren</title>

      <indexterm>
	<primary>Ports</primary>
	<secondary>installieren</secondary>
      </indexterm>

      <para>Dieser Abschnitt beschreibt die grundlegende Benutzung
	der Ports-Sammlung, um Software zu installieren oder zu
	deinstallieren.  Eine ausführliche Beschreibung der
	einzelnen <command>make</command>-Targets finden Sie in
	&man.ports.7;.</para>

      <warning>
	<para>Stellen Sie sicher, dass die Ports-Sammlung
	  aktuell ist, bevor Sie einen Port kompilieren.
	  Informieren Sie sich vorher zusätzlich unter <link
	    xlink:href="https://vuxml.FreeBSD.org/"></link> über
	  mögliche Sicherheitsprobleme des zu installierenden Ports.
	  Alternativ können Sie <command>pkg audit -F</command>
	  ausführen, bevor Sie einen neuen Port installieren.  Die
	  täglich laufende Sicherheitsprüfung des Systems aktualisiert
	  ebenfalls die Datenbank und prüft installierte Anwendungen
	  auf vorhandene Sicherheitsprobleme.  Weitere Informationen
	  finden Sie in &man.pkg-audit.8; und &man.periodic.8;.</para>
      </warning>

      <para>Die Benutzung der Ports-Sammlung setzt eine
	funktionierende Internetverbindung und Superuser-Rechte
	voraus.</para>

      <para>Um einen Port zu installieren, wechseln Sie in das
	Verzeichnis des Ports, den Sie installieren möchten.  Geben
	Sie dann <command>make install</command> am Prompt ein:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
&prompt.root; <userinput>make install</userinput>
&gt;&gt; lsof_4.88D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===&gt;  Extracting for lsof-4.88
...
[Ausgabe des Auspackens weggelassen]
...
&gt;&gt; Checksum OK for lsof_4.88D.freebsd.tar.gz.
===&gt;  Patching for lsof-4.88.d,8
===&gt;  Applying FreeBSD patches for lsof-4.88.d,8
===&gt;  Configuring for lsof-4.88.d,8
...
[configure-Ausgabe weggelassen]
...
===&gt;  Building for lsof-4.88.d,8
...
[Ausgabe der Übersetzung weggelassen]
...
===&gt;  Installing for lsof-4.88.d,8
...
[Ausgabe der Installation weggelassen]
...
===&gt;   Generating temporary packing list
===&gt;   Compressing manual pages for lsof-4.57
===&gt;   Registering installation for lsof-4.57
===&gt;  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
/usr/local/bin/lsof
&prompt.root;</screen>

      <para>Da <command>lsof</command> eine Anwendung ist, die mit
	erhöhten Rechten läuft, wird nach der Installation eine
	Sicherheitswarnung angezeigt.  Sobald die Installation
	abgeschlossen ist, erscheint wieder der Prompt.</para>

      <para>Um die Suche nach Kommandos zu beschleunigen, speichern
	einige Shells eine Liste der verfügbaren Kommandos in den
	durch die Umgebungsvariable <envar>PATH</envar> gegebenen
	Verzeichnissen.  Benutzer der <command>tcsh</command> müssen
	eventuell <command>rehash</command> eintippen, um die neu
	installierten Kommandos benutzen zu können, ohne den
	vollständigen Pfad anzugeben.  Benutzer der Shell
	<command>sh</command> müssen stattdessen
	<command>hash -r</command> eintippen.  Weitere Informationen
	finden Sie in der Dokumentation der jeweiligen Shell.</para>

      <para>Bei der Installation wird ein Arbeitsverzeichnis
	erstellt, das alle temporären Dateien enthält, die während
	des Bauvorgangs benötigt werden.  Wenn dieses Verzeichnis
	nach der Installation entfernt wird, spart dies
	Plattenplatz und minimiert mögliche Probleme bei der
	Aktualisierung des Ports auf eine neuere Version:</para>

      <screen>&prompt.root; <userinput>make clean</userinput>
===&gt;  Cleaning for lsof-4.88.d,8
&prompt.root;</screen>

      <note>
	<para>Sie können zwei Schritte sparen, wenn Sie bei der
	  Kompilierung des Ports gleich
	  <command>make install clean</command> eingeben.</para>
      </note>

      <sect3>
	<title>Port Installation anpassen</title>

	<para>Einige Ports bieten Optionen, mit denen zusätzliche
	  Funktionen oder Sicherheitsoptionen eingestellt werden
	  können.  Beispiele dafür sind
	  <package>www/firefox</package>,
	  <package>security/gpgme</package> und
	  <package>mail/sylpheed-claws</package>.  Wenn ein Port von
	  anderen Ports abhängig ist und diese über zusätzliche
	  Abhängigkeiten und Optionen verfügen, wird mehrmals ein
	  Menü ausgegeben, wo der Benutzer verschiedene Optionen
	  wählen kann.  Um dies zu vermeiden und die Konfiguration in
	  einem Stück zu erledigen, wechseln Sie in das
	  Verzeichnis des Ports und geben Sie
	  <command>make config-recursive</command> ein.  Führen Sie
	  danach <command>make install [clean]</command> aus, um den
	  Port zu kompilieren und zu installieren.</para>

	<tip>
	  <para>Bei der Verwendung von
	    <buildtarget>config-recursive</buildtarget> wird eine
	    Liste von Ports, die konfiguriert werden, vom
	    Target <buildtarget>all-depends-list</buildtarget>
	    erstellt.  Es wird empfohlen,
	    <command>make config-recursive</command> so lange
	    auszuführen, bis alle Optionen der abhängigen Ports
	    definiert sind und keine Optionen und Menüs mehr
	    erscheinen.  Damit soll sichergestellt werden, dass alle
	    Optionen konfiguriert wurden.</para>
	</tip>

	<para>Es gibt diverse Möglichkeiten, dieses Menü nach dem
	  Bau eines Ports erneut aufzurufen, um Optionen zu
	  entfernen, hinzuzufügen oder anzupassen.  Sie können
	  beispielsweise mit <command>cd</command> in das
	  Verzeichnis des Ports wechseln und dort
	  <command>make config</command> eingeben.  Eine andere
	  Möglichkeit ist <command>make showconfig</command>.  Eine
	  weitere Alternative bietet
	  <command>make rmconfig</command>, das alle ursprünglich
	  gewählten Optionen zurücksetzt und es Ihnen dadurch
	  ermöglicht, die Konfiguration erneut zu beginnen.  Die
	  eben erwähnten Optionen werden ausführlich in
	  &man.ports.7; beschrieben.</para>

	<para>Die Ports-Sammlung benutzt zum Herunterladen von
	  Dateien &man.fetch.3;, das diverse Umgebungsvariablen
	  unterstützt.  Die Variablen
	  <envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>
	  und <envar>FTP_PASSWORD</envar> müssen unter Umständen
	  gesetzt werden, wenn das &os;-System hinter einer Firewall
	  oder einem FTP/HTTP-Proxy arbeitet.  Eine vollständige
	  Liste der unterstützten Variablen finden Sie in
	  &man.fetch.1;.</para>

	<para>Benutzer ohne eine ständige Internet-Verbindung können
	  <command>make fetch</command> im Verzeichnis
	  <filename>/usr/ports</filename> ausführen, um die
	  benötigten Dateien herunterzuladen.  Es ist auch möglich,
	  <command>make fetch</command> nur in einem Teil des Baums,
	  wie <filename>/usr/ports/net</filename>, aufzurufen.  Die
	  Dateien von allen abhängigen Ports werden mit diesem
	  Kommando allerdings nicht heruntergeladen.  Wenn Sie diese
	  Dateien ebenfalls herunterladen wollen, benutzen Sie
	  stattdessen
	  <command>make fetch-recursive</command>.</para>

	<para>In einigen seltenen Fällen ist es erforderlich, die
	  benötigten Dateien von einem anderen Ort als den im Port
	  definierten <varname>MASTER_SITES</varname>
	  herunterzuladen.  Sie können
	  <varname>MASTER_SITES</varname> mit dem folgenden Kommando
	  überschreiben:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
<replaceable>ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</replaceable> fetch</userinput></screen>

	<para>Die Variablen <varname>WRKDIRPREFIX</varname> und
	  <varname>PREFIX</varname> überschreiben das voreingestellte
	  Bau- und Zielverzeichnis.  Zum Beispiel:</para>

	<screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>

	<para>Dieses Kommando baut den Port unter
	  <filename>/usr/home/example/ports</filename> und installiert
	  ihn unter <filename>/usr/local</filename>.</para>

	<para>Die Variable <varname>PREFIX</varname> legt das
	  Installations-Verzeichnis fest:</para>

	<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>

	<para>In diesem Beispiel wird der Port unter
	  <filename>/usr/ports</filename> gebaut und nach
	  <filename>/usr/home/example/local</filename>
	  installiert.</para>

	<para>Sie können beide Variablen auch zusammen
	  benutzen:</para>

	<screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen>

	<para>Alternativ können diese Variablen auch als
	  Umgebungsvariablen gesetzt werden.  In der Manualpage Ihrer
	  Shell finden Sie Anweisungen, wie Umgebungsvariablen gesetzt
	  werden.</para>
      </sect3>
    </sect2>

    <sect2 xml:id="ports-removing">
      <title>Entfernen installierter Ports</title>

      <indexterm>
	<primary>Ports</primary>
	<secondary>entfernen</secondary>
      </indexterm>

      <para>Installierte Ports können mit
	<command>pkg delete</command> wieder deinstalliert werden.
	Beispiele für dieses Kommando finden Sie in
	&man.pkg-delete.8;.</para>

      <para>Alternativ kann <command>make deinstall</command> im
	Verzeichnis des Ports aufgerufen werden:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
<userinput>make deinstall</userinput>
===&gt;  Deinstalling for sysutils/lsof
===&gt;   Deinstalling
Deinstallation has been requested for the following 1 packages:

        lsof-4.88.d,8

Thee deinstallation will free 229 kB
[1/1] Deleting lsof-4.88.d,8... done</screen>

      <para>Es wird empfohlen die Nachrichten zu lesen, die
	ausgegeben werden, wenn ein Port deinstalliert wird.  Wenn
	der Port noch Anwendungen hat, die von ihm abhängig sind,
	werdenn diese am Bildschirm angezeigt, aber die Deinstallation
	wird forgesetzt.  In solchen Fällen ist es besser, die
	Anwendung neu zu installieren, um fehlende Abhängigkeiten zu
	vermeiden.</para>
    </sect2>

    <sect2 xml:id="ports-upgrading">
      <title>Ports aktualisieren</title>

      <indexterm>
	<primary>Ports</primary>
	<secondary>aktualisieren</secondary>
      </indexterm>

      <para>Im Laufe der Zeit stehen neuere Versionen der Software in
	der Ports-Sammlung zur Verfügung.  In diesem Abschnitt wird
	beschrieben, wie Sie bestimmen, welche Software aktualisiert
	werden kann und wie das Upgrade durchzuführen ist.</para>

      <para>Um festzustellen, ob neuere Versionen der installierten
	Ports verfügbar sind, stellen Sie sicher, dass die neueste
	Version der Ports-Sammlung installiert ist.  Dies wird in
	<xref linkend="ports-using-portsnap-method"/> und
	<xref linkend="ports-using-subversion-method"/> beschrieben.  Führen Sie unter
	&os; 10 und neueren Versionen, bzw. auf Systemen die bereits
	mit <application>pkg</application> arbeiten, den folgenden
	Befehl aus, um eine Liste der installierten Ports zu erhalten
	für die eine aktuelle Version existiert:</para>

      <screen>&prompt.root; <userinput>pkg version -l "&lt;"</userinput></screen>

      <para>Mit &os; 9.<replaceable>X</replaceable> und älteren
	Versionen kann stattdessen dieser Befehl verwendet
	werden:</para>

      <screen>&prompt.root; <userinput>pkg_version -l "&lt;"</userinput></screen>

      <important>
	<para>Lesen Sie zuerst
	  <filename>/usr/ports/UPDATING</filename>, bevor
	  Sie einen Port aktualisieren.  In dieser Datei werden
	  Probleme und zusätzlich durchzuführende
	  Schritte bei der Aktualisierung einzelner Ports
	  beschrieben.  Dazu gehören solche Dinge wie
	  geänderte Dateiformate, verschobene Konfigurationsdateien,
	  aber auch Inkompatibilitäten zu einer
	  Vorgängerversion.  Notieren Sie sich alle Anweisungen der
	  Ports, die aktualisiert werden müssen.  Folgen Sie den
	  Anweisungen, wenn Sie das Upgrade durchführen.</para>
      </important>

      <sect3 xml:id="ports-upgrading-tools">
	<title>Werkzeuge für die Aktualisierung und Verwaltung von
	  Ports</title>

	<indexterm>
	  <primary>Ports</primary>
	  <secondary>upgrading-tools</secondary>
	</indexterm>

	<para>Die Ports-Sammlung enthält mehrere Werkzeuge, um die
	  eigentliche Aktualisierung durchzuführen.  Jedes hat seine
	  Stärken und Schwächen.</para>

	<para>Historisch gesehen verwenden die meisten Installationen
	  entweder <application>Portmaster</application> oder
	  <application>Portupgrade</application>.
	  <application>Synth</application> ist eine neuere
	  Alternative.</para>

	<note>
	  <para>Es bleibt dem Systemadministrator überlassen, welches
	    dieser Werkzeuge für ein bestimmtes System am besten
	    geeignet ist.  Es wird empfohlen, die Daten zu sichern,
	    bevor Sie eines dieser Werkzeuge verwenden.</para>
	</note>
      </sect3>

      <sect3 xml:id="portmaster">
	<title>Ports mit <application>Portmaster</application>
	  aktualisieren</title>

	<indexterm>
	  <primary>portmaster</primary>
	</indexterm>

	<para><package>ports-mgmt/portmaster</package> ist ein sehr
	  kleines Werkzeug zum Aktualisieren von Ports.  Es wurde
	  entwickelt, um mit den Werkzeugen aus dem &os; Basissystem
	  zu arbeiten, ohne dabei von anderen Ports oder Datenbanken
	  abhängig zu sein.  Sie können das Programm aus der
	  Ports-Sammlung installieren:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portmaster</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

	<para><application>Portmaster</application> teilt Ports in vier
	  Kategorien ein:</para>

	<itemizedlist>
	  <listitem>
	    <para>Root Port: hat keine Abhängigkeiten und andere Ports
	      sind nicht von diesem Port abhängig.</para>
	  </listitem>
	  <listitem>
	    <para>Trunk Port: hat keine Abhängigkeiten, aber andere
	      Ports sind von diesem Port abhängig.</para>
	  </listitem>
	  <listitem>
	    <para>Branch Port: hat Abhängigkeiten und andere Ports
	      sind von diesem Port abhängig.</para>
	  </listitem>
	  <listitem>
	    <para>Leaf Port: hat Abhängigkeiten, aber andere Ports
	      sind nicht von diesem Port abhängig.</para>
	  </listitem>
	</itemizedlist>

	<para>Um eine Liste der installierten Ports anzuzeigen und
	  nach neueren Versionen zu suchen, verwenden Sie:</para>

	<screen>&prompt.root; <userinput>portmaster -L</userinput>
===&gt;&gt;&gt; Root ports (No dependencies, not depended on)
===&gt;&gt;&gt; ispell-3.2.06_18
===&gt;&gt;&gt; screen-4.0.3
        ===&gt;&gt;&gt; New version available: screen-4.0.3_1
===&gt;&gt;&gt; tcpflow-0.21_1
===&gt;&gt;&gt; 7 root ports
...
===&gt;&gt;&gt; Branch ports (Have dependencies, are depended on)
===&gt;&gt;&gt; apache22-2.2.3
        ===&gt;&gt;&gt; New version available: apache22-2.2.8
...
===&gt;&gt;&gt; Leaf ports (Have dependencies, not depended on)
===&gt;&gt;&gt; automake-1.9.6_2
===&gt;&gt;&gt; bash-3.1.17
        ===&gt;&gt;&gt; New version available: bash-3.2.33
...
===&gt;&gt;&gt; 32 leaf ports

===&gt;&gt;&gt; 137 total installed ports
        ===&gt;&gt;&gt; 83 have new versions available</screen>

	<para>Um alle installierten Ports zu aktualisieren,
	  verwenden Sie folgenden Befehl:</para>

	<screen>&prompt.root; <userinput>portmaster -a</userinput></screen>

	<note>
	  <para>In der Voreinstellung erzeugt
	    <application>Portmaster</application> eine
	    Sicherheitskopie, bevor ein installierter Port gelöscht
	    wird.  Ist die Installation der neuen Version erfolgreich,
	    wird dieses Backup wieder gelöscht.  Wollen Sie das Backup
	    lieber manuell löschen, verwenden Sie die Option
	    <option>-b</option> beim Aufruf von
	    <application>Portmaster</application>.  Durch die
	    Verwendung von <option>-i</option> wird
	    <application>Portmaster</application> im interaktiven
	    Modus gestartet und fragt bei jedem zu aktualisierenden
	    Port nach, wie weiter vorgegangen werden soll.  Viele
	    weitere Optionen stehen zur Verfügung.  Lesen Sie die
	    Manualpage von &man.portmaster.8; für weitere Einzelheiten
	    in Bezug auf ihre Nutzung.</para>
	</note>

	<para>Treten während der Aktualisierung Fehler auf, verwenden
	  Sie die Option <option>-f</option>, um alle Ports zu
	  aktualisieren beziehungsweise neu zu bauen:</para>

	<screen>&prompt.root; <userinput>portmaster -af</userinput></screen>

	<para><application>Portmaster</application> ist auch in der
	  Lage, neue Ports zu installieren, wobei zuvor alle
	  abhängigen Ports aktualisiert werden.  Um diese Funktion
	  zu nutzen, geben Sie den Pfad des Ports in der
	  Ports-Sammlung an:</para>

	<screen>&prompt.root; <userinput>portmaster <replaceable>shells/bash</replaceable></userinput></screen>

	<para>Weitere Informationen über
	  <package>ports-mgmt/portmaster</package> finden Sie in der
	  Beschreibung <filename>pkg-descr</filename>.</para>
      </sect3>

      <sect3 xml:id="portupgrade">
	<title>Ports mit Portupgrade aktualisieren</title>

	<indexterm>
	  <primary>portupgrade</primary>
	</indexterm>

	<para><package>ports-mgmt/portupgrade</package> ist ein
	  weiteres Werkzeug zur Aktualisierung von Ports.  Es
	  installiert eine Reihe von Anwendungen, die für die
	  Verwaltung von Ports verwendet werden können.  Das Programm
	  ist jedoch von Ruby abhängig.  Um den Port zu installieren,
	  geben Sie ein:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portupgrade</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

	<para>Durchsuchen Sie vor jedem Update die Liste der
	  installierten Ports mit <command>pkgdb -F</command> und
	  beheben Sie alle gefundenen Probleme.</para>

	<para>Benutzen Sie <command>portupgrade -a</command>, um
	  automatisch alle veralteten Ports auf dem System zu
	  aktualisieren.  Verwenden Sie zusätzlich den Schalter
	  <option>-i</option>, wenn Sie individuell entscheiden
	  wollen, ob ein Port aktualisiert werden soll:</para>

	<screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen>

	<para>Um nur eine spezifische Anwendung zu aktualisieren,
	  verwenden Sie <command>portupgrade
	    <replaceable>Paketname</replaceable></command>.  Es ist
	  wichtig den Schalter <option>-R</option> zu benutzen, um
	  zuvor alle Ports zu aktualisieren, die von dem gegebenen
	  Anwendung abhängen.</para>

	<screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen>

	<para>Um Pakete anstelle von Ports zu installieren, verwenden
	  Sie den Schalter <option>-P</option>.  Mit dieser
	  Option durchsucht <application>Portupgrade</application>
	  die in der Umgebungsvariablen <envar>PKG_PATH</envar>
	  aufgeführten Verzeichnisse nach Paketen.  Sind
	  lokal keine Pakete vorhanden, versucht
	  <application>Portupgrade</application> die Pakete
	  über das Netz herunterzuladen.  Gibt es die Pakete
	  weder lokal noch auf entfernten Rechnern, werden die Ports
	  verwendet.  Um die Nutzung von Ports gänzlich zu verhindern,
	  benutzen Sie die Option <option>-PP</option>.
	  <application>Portupgrade</application> würde dann abbrechen,
	  falls keine Pakete zur Verfügung stehen.</para>

	<screen>&prompt.root; <userinput>portupgrade -PP gnome3</userinput></screen>

	<para>Wenn Sie nur die Quelldateien des Ports, oder die Pakete
	  mit <option>-P</option> herunterladen möchten, ohne die
	  Anwendung zu bauen oder zu installieren, geben Sie den
	  Schalter <option>-F</option> an.  Weitere Informationen zu
	  den verfügbaren Schaltern finden Sie in der Manualpage von
	  &man.portupgrade.1;.</para>

	<para>Weitere Informationen über
	  <package>ports-mgmt/portupgrade</package> finden Sie in der
	  Beschreibung <filename>pkg-descr</filename>.</para>
      </sect3>
    </sect2>

    <sect2 xml:id="ports-disk-space">
      <title>Platzbedarf von Ports</title>

      <indexterm>
	<primary>Ports</primary>
	<secondary>Plattenplatz</secondary>
      </indexterm>

      <para>Die Nutzung der Ports-Sammlung wird im Laufe der Zeit viel
	Plattenplatz verschlingen.  Nach dem Bau und der Installation
	eines Ports, wird <command>make clean</command> die temporären
	Arbeitsverzeichnisse <filename>work</filename> aufräumen.
	<application>Portmaster</application> wird dieses Verzeichnis
	nach der Installation eines Ports automatisch entfernen
	(es sei denn, die Option <option>-K</option> wird verwendet).
	Wenn <application>Portupgrade</application>
	installiert ist, wird der folgende Befehl alle Arbeitsverzeichnisse
	der lokalen Ports-Sammlung entfernen:</para>

      <screen>&prompt.root; <userinput>portsclean -C</userinput></screen>

      <para>Zusätzlich werden sich im Laufe der Zeit zahlreiche
	veraltete Distfiles in
	<filename>/usr/ports/distfiles</filename> ansammeln.  Mit
	<application>Portupgrade</application> können alle Distfiles
	gelöscht werden, die vom keinem Port mehr benötigt
	werden:</para>

      <screen>&prompt.root; <userinput>portsclean -D</userinput></screen>

      <para><application>Portupgrade</application> kann alle Distfiles
	löschen, die von keinem derzeit installierten Port benötigt
	werden:</para>

      <screen>&prompt.root; <userinput>portsclean -DD</userinput></screen>

      <para>Wenn <application>Portmaster</application> installiert
	ist, benutzen Sie diesen Befehl:</para>

      <screen>&prompt.root; <userinput>portmaster --clean-distfiles</userinput></screen>

      <para>In der Voreinstellung arbeitet dieses Programm interaktiv
	und fragt den Benutzer um Bestätigung, bevor ein Distfile
	gelöscht wird.</para>

      <para>Zusätzlich zu diesen Kommandos gibt es noch
	<package>port-mgmt/pkg_cutleaves</package>.  Dieses Werkzeug
	automatisiert die Deinstallation von installierten Ports, die
	nicht weiter benötigt werden.</para>
    </sect2>
  </sect1>

  <sect1 xml:id="ports-poudriere">
    <title>Pakete mit <application>Poudriere</application>
      bauen</title>

    <para><application>Poudriere</application> ist ein unter der
      <acronym>BSD</acronym>-Lizenz stehendes Werkzeug zum Erstellen
      und Testen von &os;-Paketen.  Dieses Programm nutzt &os; Jails,
      um die Pakete in einer isolierten Umgebung zu bauen.  Diese
      Jails können verwendet werden, um Pakete für andere Versionen
      von &os; zu bauen, oder um auf einem &arch.amd64;-System Pakete
      für i386 zu bauen.  Sobald die Pakete gebaut sind, haben sie das
      gleiche Format wie auf den offiziellen Spiegeln.  Die Pakete
      können dann mit &man.pkg.8; oder anderen
      Paketverwaltungswerkzeugen benutzt werden.</para>

    <para><application>Poudriere</application> wird über das Paket
      oder den Port <package>ports-mgmt/poudriere</package>
      installiert.  Die Installation beinhaltet eine
      Beispielkonfiguration in
      <filename>/usr/local/etc/poudriere.conf.sample</filename>.
      Kopieren Sie diese Datei nach
      <filename>/usr/local/etc/poudriere.conf</filename>.  Bearbeiten
      Sie dann die kopierte Datei, um die Konfiguration
      anzupassen.</para>

    <para>Obwohl <acronym>ZFS</acronym> für
      <application>poudriere</application> nicht zwingend erforderlich
      ist, so hat die Nutzung doch einige Vorteile.  Wird
      <acronym>ZFS</acronym> eingesetzt, muss in
      <filename>/usr/local/etc/poudriere.conf</filename> die Variable
      <varname>ZPOOL</varname> definiert, und die Variable
      <varname>FREEBSD_HOST</varname> auf einen nahe gelegenen
      Spiegel gesetzt werden.  Die Definition von
      <varname>CCACHE_DIR</varname> erlaubt die Verwendung von
      <package>devel/ccache</package>, um die Bauzeit für häufig
      kompilierten Code verkürzen.  Es kann vorteilhaft sein, die
      <application>poudriere</application>-Datasets in einem separaten
      Verzeichnis auf <filename>/poudriere</filename> einzuhängen.
      Die Werte der anderen Konfigurationsvariablen sind in der Regel
      angemessen und brauchen nicht geändert werden.</para>

    <para>Die Anzahl der Kerne im Prozessor wird verwendet um zu
      bestimmen, wie viele Bauprozesse parallel ausgeführt werden.
      Stellen Sie ausreichend virtuellen Speicher bereit,
      entweder in Form von <acronym>RAM</acronym> oder als
      Swap-Speicher.  Ist der virtuelle Speicher aufgebraucht, bricht
      der Bauprozess ab und die Jails stürzen ab, was zu seltsamen
      Fehlermeldungen führt.</para>

    <sect2 xml:id="poudriere-initialization">
      <title>Jails und Ports-Sammlung initialisieren</title>

      <para>Nach der Konfiguration muss
	<application>poudriere</application> initialisiert werden,
	damit es eine Jail mit der benötigten Ports-Sammlung startet.
	Geben Sie mit <option>-j</option> den Namen der Jail und mit
	<option>-v</option> die gewünschte &os;-Version an.  Auf
	&os;/&arch.amd64;-Systemen kann die Architektur mit dem
	Schalter <option>-a</option> und <literal>i386</literal> oder
	<literal>amd64</literal> gesetzt werden.  Der voreingestellte
	Wert für die Architektur können Sie sich mit
	<command>uname</command> anzeigen lassen.</para>

      <screen>&prompt.root; <userinput>poudriere jail -c -j <replaceable>10amd64</replaceable> -v <replaceable>10.0-RELEASE</replaceable></userinput>
====&gt;&gt; Creating 10amd64 fs... done
====&gt;&gt; Fetching base.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/base.txz      100% of   59 MB 1470 kBps 00m42s
====&gt;&gt; Extracting base.txz... done
====&gt;&gt; Fetching src.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/src.txz       100% of  107 MB 1476 kBps 01m14s
====&gt;&gt; Extracting src.txz... done
====&gt;&gt; Fetching games.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/games.txz     100% of  865 kB  734 kBps 00m01s
====&gt;&gt; Extracting games.txz... done
====&gt;&gt; Fetching lib32.txz for FreeBSD 10.0-RELEASE amd64
/poudriere/jails/10amd64/fromftp/lib32.txz     100% of   14 MB 1316 kBps 00m12s
====&gt;&gt; Extracting lib32.txz... done
====&gt;&gt; Cleaning up... done
====&gt;&gt; Jail 10amd64 10.0-RELEASE amd64 is ready to be used</screen>

      <screen>&prompt.root; <userinput>poudriere ports -c -p <replaceable>local</replaceable></userinput>
====&gt;&gt; Creating local fs... done
====&gt;&gt; Extracting portstree "local"...
Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Tue Feb 11 01:07:15 CET 2014:
94a3431f0ce567f6452ffde4fd3d7d3c6e1da143efec76100% of   69 MB 1246 kBps 00m57s
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Tue Feb 11 01:07:15 CET 2014 to Tue Feb 11 16:05:20 CET 2014.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 48 patches.
(48/48) 100.00%  done.
done.
Applying patches...
done.
Fetching 1 new ports or files... done.
/poudriere/ports/tester/CHANGES
/poudriere/ports/tester/COPYRIGHT

[...]

Building new INDEX files... done.</screen>

      <para><application>poudriere</application> kann auf einem
	einzelnen Rechner Ports mit mehreren Konfigurationen
	bauen, in mehreren Jails und aus unterschiedlichen
	Ports-Sammlungen.  Spezifische Konfigurationen für diese
	Kombinationen werden <emphasis>Sets</emphasis>
	genannt.  Lesen Sie den Abschnitt CUSTOMIZATION in
	&man.poudriere.8; für weitere Einzelheiten nach der
	Installation von <package>port-mgmt/poudriere</package> oder
	<package>ports-mgmt/poudriere-devel</package>.</para>

      <para>Die hier gezeigte Konfiguration verwendet eine einzelne
	Jail-, Port- und Set-spezifische
	<filename>make.conf</filename> in
	<filename>/usr/local/etc/poudriere.d</filename>.  Der
	verwendete Dateiname in diesem Beispiel wird aus einer
	Kombination von Jailnamen, Portnamen und Setnamen zusammen
	gesetzt:
	<filename><replaceable>10amd64-local-workstation</replaceable>-make.conf</filename>.
	Die <filename>make.conf</filename> des Systems und diese neue
	Datei werden verwendet, um die <filename>make.conf</filename>
	für die Jail zu erzeugen.</para>

      <para>Die zu bauenden Pakete werden in
	<filename><replaceable>10amd64-local-workstation</replaceable>-pkglist</filename>
	eingetragen:</para>

      <programlisting>editors/emacs
devel/git
ports-mgmt/pkg
...</programlisting>

      <para>Die Optionen und Abhängigkeiten für die Ports werden wie
	folgt konfiguriert:</para>

      <screen>&prompt.root; <userinput>poudriere options -j <replaceable>10amd64</replaceable> -p <replaceable>local</replaceable> -z <replaceable>workstation</replaceable> -f <replaceable>10amd64-local-workstation-pkglist</replaceable></userinput></screen>

      <para>Schließlich werden die Pakete gebaut und ein
	Paket-Repository erstellt:</para>

      <screen>&prompt.root; <userinput>poudriere bulk -j <replaceable>10amd64</replaceable> -p <replaceable>local</replaceable> -z <replaceable>workstation</replaceable> -f <replaceable>10amd64-local-workstation-pkglist</replaceable></userinput></screen>

      <para>Während der Ausführung zeigt <keycombo
	  action="simul"><keycap>Ctrl</keycap><keycap>t</keycap></keycombo>
	den aktuellen Status des Baus an.
	<application>Poudriere</application> speichert zudem Dateien
	in <filename>/poudriere/logs/bulk/jailname</filename>.  Diese
	Dateien kann ein Webserver nutzen, um Informationen über den
	Bau anzuzeigen.</para>

      <para>Nach der Fertigstellung stehen die Pakete im
	<application>poudriere</application> Repository für die
	Installation zur Verfügung.</para>

      <para>Weitere Informationen zu
	<application>poudriere</application> finden Sie in
	&man.poudriere.8; und unter <link
	  xlink:href="https://github.com/freebsd/poudriere/wiki"></link>.</para>
    </sect2>

    <sect2>
      <title>Konfiguration des pkg-Clients für das Poudriere
	Repository</title>

      <para>Obwohl es möglich ist ein eigenes Repository zusammen mit
	dem offiziellen Repository zu nutzen, ist es manchmal
	sinnvoll das offizielle Repository zu deaktivieren.  Dazu
	wird eine Konfigurationsdatei erstellt, welche die offizielle
	Konfigurationsdatei überschreibt.  Erzeugen Sie dazu
	<filename>/usr/local/etc/pkg/repos/FreeBSD.conf</filename>
	mit dem folgenden Inhalt:</para>

      <programlisting>FreeBSD: {
        enabled: no
}</programlisting>

      <para>Am einfachsten ist es, das poudriere Repository über
	<acronym>HTTP</acronym> zur Verfügung zu stellen.  Setzen Sie
	einen Webserver auf, der die Dateien des Paketverzeichnisses
	ausliefert, zum Beispiel
	<filename>/usr/local/poudriere/data/packages/<replaceable>10amd64</replaceable></filename>.
	<filename><replaceable>10amd64</replaceable></filename>
	bezeichnet dabei den Namen des Baus.</para>

      <para>Wenn die <acronym>URL</acronym> des Paket Repositories
	<literal>http://pkg.example.com/10amd64</literal> ist, dann
	sollte die Konfiguration des Repositories in
	<filename>/usr/local/etc/pkg/repos/custom.conf</filename>
	wie folgt aussehen:</para>

      <programlisting>custom: {
	url: "<replaceable>http://pkg.example.com/10amd64</replaceable>",
	enabled: yes,
}</programlisting>
    </sect2>
  </sect1>

  <sect1 xml:id="ports-nextsteps">
    <title>Nach der Installation</title>

    <para>Unabhängig davon, ob die Software aus einem binären Paket
      oder aus einem Port installiert wird, benötigen die meisten
      Anwendungen von Drittanbietern ein gewisses Maß an
      Konfiguration, nachdem sie installiert wurden.  Die folgenden
      Kommandos und Speicherorte helfen Ihnen dabei festzustellen, was
      mit der Anwendung zusammen installiert wurde.</para>

    <itemizedlist>
      <listitem>
	<para>Die meisten Anwendungen installieren mindestens eine
	  Konfigurationsdatei nach
	  <filename>/usr/local/etc</filename>.  Falls die Anwendung
	  viele Konfigurationsdateien enthält, wird ein
	  Unterverzeichnis erstellt um die Dateien zu speichern.  Oft
	  werden die Konfigurationsdateien mit einem Suffix wie
	  beispielsweise <filename>.sample</filename> installiert.
	  Die Konfigurationsdateien sollten überprüft und ggf.
	  bearbeitet werden, um die Anforderungen des Systems zu
	  erfüllen.  Um eine Konfigurationsdatei zu bearbeiten,
	  kopieren Sie diese zunächst ohne die Erweiterung
	  <filename>.sample</filename>.</para>
      </listitem>

      <listitem>
	<para>Wenn die Anwendung Dokumentation zur Verfügung stellt,
	  wird diese nach <filename>/usr/local/share/doc</filename>
	  installiert.  Viele Anwendungen installieren auch
	  Manualpages.  Diese Dokumentation sollten Sie lesen, bevor
	  Sie fortfahren.</para>
      </listitem>

      <listitem>
	<para>Einige Anwendungen laufen als Dienst und müssen vor
	  dem ersten Start in <filename>/etc/rc.conf</filename>
	  eingetragen werden.  Diese Anwendungen installieren meist
	  ein Skript in <filename>/usr/local/etc/rc.d</filename>.
	  Weitere Informationen finden Sie im <xref
	    linkend="configtuning-starting-services"/>.</para>

	<note>
	  <para>In der Voreinstellung führen Anwendungen weder ihr
	    Startskript bei der Installation aus, noch führen sie ihr
	    Stopskript während der Deinstallation aus.  Diese
	    Entscheidung bleibt dem einzelnen Systemadministrator
	    überlassen.</para>
	</note>
      </listitem>

      <listitem>
	<para>Benutzer der &man.csh.1; sollten
	  <command>rehash</command> ausführen, um die neu
	  installierten Programme nutzen zu können.</para>
      </listitem>

      <listitem>
	<para>Benutzen Sie <command>pkg info</command>, um die
	  Dateien, Manualpages und Binaries zu ermitteln, die mit der
	  Anwendung installiert wurden.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 xml:id="ports-broken">
    <title>Kaputte Ports</title>

    <para>Wenn sich ein Port nicht bauen oder installieren lässt,
      versuchen Sie folgendes:</para>

    <orderedlist>
      <listitem>
	<para>Stellen Sie fest, ob die <link
	    xlink:href="&url.base;/de/support.html">Datenbank mit den
	    Problemberichten</link> bereits einen Lösungsvorschlag
	  enthält.  Ist dies der Fall, kann die vorgeschlagene Lösung
	  getestet werden.</para>
      </listitem>

      <listitem>
	<para>Bitten Sie den Betreuer des Ports um Hilfe.  Geben Sie
	  dazu <command>make maintainer</command> ein oder lesen Sie
	  das <filename>Makefile</filename> im Verzeichnis des Ports,
	  um an die E-Mail-Adresse zu kommen.  Vergessen Sie nicht
	  die Zeile mit <literal>&dollar;FreeBSD:</literal> aus dem
	  <filename>Makefile</filename> und die Ausgabe bis zur
	  Fehlermeldung mitzuschicken.</para>

	<note>
	  <para>Einige Ports werden nicht von einer Einzelperson,
	    sondern von einer <link
	      xlink:href="&url.articles.mailing-list-faq.en;/article.html">
	      Mailingliste</link> betreut.  Viele (aber nicht alle)
	    dieser Adressen haben die Form <email
	      role="nolink">freebsd-<replaceable>NameDerListe</replaceable>@FreeBSD.org</email>.
	    Denken Sie daran, wenn Sie Ihre Fragen formulieren.</para>

	  <para>Dies gilt insbesondere für Ports, die von
	    <email role="nolink">ports@FreeBSD.org</email> betreut
	    werden.  Derartige Ports haben überhaupt keinen
	    Betreuer.  Korrekturen und Unterstützung kommen daher nur
	    von Personen, die diese Mailingliste abonniert haben.
	    Gerade in diesem Bereich werden jederzeit zusätzliche
	    freiwillige Helfer benötigt!</para>
	</note>

	<para>Erhalten Sie auf Ihre Anfrage keine Antwort, benutzen
	  Sie Bugzilla, um einen Problembericht zu erstellen.
	  Bevor Sie einen solchen Bericht erstellen, lesen Sie den
	  Artikel <link xlink:href="&url.articles.problem-reports.en;/article.html">Writing
	  &os; Problem Reports</link>.</para>
      </listitem>

      <listitem>
	<para>Reparieren Sie ihn!  Das <link xlink:href="&url.books.porters-handbook.en;/index.html">&os;
	  Porter's Handbook</link> enthält eine detaillierte
	  Beschreibung des Portsystems.  Damit sind Sie in der Lage,
	  einen zeitweilig kaputten Port zu reparieren oder einen
	  eigenen Port zu erstellen.</para>
      </listitem>

      <listitem>
	<para>Installieren Sie das Paket anstelle des Ports.
	  Anweisungen hierzu finden Sie in
	  <xref linkend="pkgng-intro"/>.</para>
      </listitem>
    </orderedlist>
  </sect1>
</chapter>