diff --git a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
index c1e1cc67b9..ca74d739f8 100644
--- a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml
@@ -1,5812 +1,5834 @@
JohannKoisÜbersetzt von Weiterführende NetzwerkthemenÜbersichtDieses Kapitel beschreibt verschiedene
weiterführende Netzwerkthemen.Nachdem Sie dieses Kapitel gelesen haben, werden SieDie Grundlagen von Gateways und Routen kennen.Bluetooth- sowie drahtlose, der Norm IEEE 802.11
entsprechende, Geräte mit FreeBSD verwenden
können.Eine Bridge unter FreeBSD einrichten können.Einen plattenlosen Rechner über das Netzwerk starten
können.Wissen, wie man NAT (Network Address Translation)
einrichtet.Zwei Computer über PLIP verbinden können.IPv6 auf einem FreeBSD-Rechner einrichten
können.ATM einrichten können.CARP, das Common Access Redundancy Protocol, unter
&os; einsetzen können.Bevor Sie dieses Kapitel lesen, sollten SieDie Grundlagen der /etc/rc-Skripte
verstanden haben.Mit der grundlegenden Netzwerkterminologie vertraut
sein.Einen neuen FreeBSD-Kernel konfigurieren und installieren
können ().Wissen, wie man zusätzliche Softwarepakete von
Drittherstellern installiert ().CoranthGryphonBeigetragen von Gateways und RoutenRoutingGatewaySubnetzDamit ein Rechner einen anderen über ein Netzwerk
finden kann, muss ein Mechanismus vorhanden sein, der
beschreibt, wie man von einem Rechner zum anderen gelangt.
Dieser Vorgang wird als Routing
bezeichnet. Eine Route besteht aus einem
definierten Adressenpaar: Einem Ziel und einem
Gateway. Dieses Paar zeigt an, dass Sie
über das Gateway zum
Ziel gelangen wollen. Es gibt drei Arten
von Zielen: Einzelne Rechner (Hosts), Subnetze und das
Standardziel. Die Standardroute
wird verwendet, wenn keine andere Route zutrifft. Wir werden
Standardrouten später etwas genauer behandeln.
Außerdem gibt es drei Arten von Gateways: Einzelne Rechner
(Hosts), Schnittstellen (Interfaces, auch als Links
bezeichnet), sowie Ethernet Hardware-Adressen (MAC-Adressen).
Ein BeispielUm die verschiedenen Aspekte des Routings zu
veranschaulichen, verwenden wir folgende Ausgaben von
netstat:&prompt.user; netstat -r
Routing tables
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
example.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.example.com link#1 UC 0 0
224 link#1 UC 0 0
DefaultrouteDie ersten zwei Zeilen geben die Standardroute (die wir
im nächsten
Abschnitt behandeln), sowie die
localhost Route an.Loopback-GerätDas in der Routingtabelle für
localhost festgelegte Interface
(Netif-Spalte)
lo0, ist auch als loopback-Gerät
(Prüfschleife) bekannt. Das heißt, dass der ganze
Datenverkehr für dieses Ziel intern (innerhalb des
Gerätes) bleibt, anstatt ihn über ein Netzwerk (LAN)
zu versenden, da das Ziel dem Start entspricht.EthernetMAC-AdresseDer nächste auffällige Punkt sind die mit
0:e0: beginnenden Adressen. Es
handelt sich dabei um Ethernet Hardwareadressen, die auch als
MAC-Adressen bekannt sind. FreeBSD identifiziert Rechner im
lokalen Netz automatisch (im Beispiel test0)
und fügt eine direkte Route zu diesem Rechner hinzu. Dies
passiert über die Ethernet-Schnittstelle
ed0. Außerdem existiert ein Timeout
(in der Spalte Expire) für diese Art
von Routen, der verwendet wird, wenn dieser Rechner in einem
definierten Zeitraum nicht reagiert. Wenn dies passiert, wird
die Route zu diesem Rechner automatisch gelöscht.
Rechner im lokalen Netz werden durch einen als RIP (Routing
Information Protocol) bezeichneten Mechanismus identifiziert,
der den kürzesten Weg zu den jeweiligen Rechnern
bestimmt.SubnetzFreeBSD fügt außerdem Subnetzrouten für das
lokale Subnetz hinzu (10.20.30.255 ist die Broadcast-Adresse
für das Subnetz 10.20.30,
example.com ist der zu
diesem Subnetz gehörige Domainname). Das Ziel
link#1 bezieht sich auf die erste
Ethernet-Karte im Rechner. Sie können auch feststellen,
dass keine zusätzlichen Schnittstellen angegeben
sind.Routen für Rechner im lokalen Netz und lokale
Subnetze werden automatisch durch den
routed Daemon konfiguriert. Ist
dieser nicht gestartet, sind nur statisch definierte
(explizit eingegebene) Routen vorhanden.Die Zeile host1 bezieht sich auf
unseren Rechner, der durch seine Ethernetadresse bekannt ist.
Da unser Rechner der Sender ist, verwendet FreeBSD automatisch
das Loopback-Gerät (lo0),
anstatt den Datenverkehr über die Ethernetschnittstelle
zu senden.Die zwei host2 Zeilen sind ein Beispiel
dafür, was passiert, wenn wir ein &man.ifconfig.8; Alias
verwenden (Lesen Sie dazu den Abschnitt über Ethernet,
wenn Sie wissen wollen, warum wir das tun sollten.). Das
Symbol => (nach der
lo0-Schnittstelle) sagt aus, dass wir
nicht nur das Loopbackgerät verwenden (da sich die
Adresse auf den lokalen Rechner bezieht), sondern dass es sich
zusätzlich auch um ein Alias handelt. Solche Routen sind
nur auf Rechnern vorhanden, die den Alias bereitstellen;
alle anderen Rechner im lokalen Netz haben für solche
Routen nur eine einfache link#1
Zeile.Die letzte Zeile (Zielsubnetz 224)
behandelt das Multicasting, das wir in einem anderen Abschnitt
besprechen werden.Schließlich gibt es für Routen noch
verschiedene Attribute, die Sie in der Spalte
Flags finden. Nachfolgend finden Sie eine
kurze Übersicht von einigen dieser Flags und ihrer
Bedeutung:UUp: Die Route ist aktiv.HHost: Das Ziel der Route ist ein einzelner
Rechner (Host).GGateway: Alle Daten, die an dieses Ziel gesendet
werden, werden von diesem System an ihr jeweiliges
Ziel weitergeleitet.SStatic: Diese Route wurde manuell konfiguriert,
das heißt sie wurde nicht
automatisch vom System erzeugt.CClone: Erzeugt eine neue Route, basierend auf der
Route für den Rechner, mit dem wir uns verbinden.
Diese Routenart wird normalerweise für lokale
Netzwerke verwendet.WWasCloned: Eine Route, die automatisch
konfiguriert wurde. Sie basiert auf einer lokalen
Netzwerkroute (Clone).LLink: Die Route beinhaltet einen Verweis auf eine
Ethernetkarte (MAC-Adresse).StandardroutenDefaultrouteStandardrouteDefaultrouteWenn sich der lokale Rechner mit einem entfernten Rechner
verbinden will, wird die Routingtabelle überprüft,
um festzustellen, ob bereits ein bekannter Pfad vorhanden ist.
Gehört dieser entfernte Rechner zu einem Subnetz, dessen
Pfad uns bereits bekannt ist
(Cloned route), dann versucht der
lokale Rechner über diese Schnittstelle eine Verbindung
herzustellen.Wenn alle bekannten Pfade nicht funktionieren, hat der
lokale Rechner eine letzte Möglichkeit: Die
Standardroute (Defaultroute). Bei dieser
Route handelt es sich um eine spezielle Gateway-Route
(gewöhnlich die einzige im System vorhandene), die im
Flags-Feld immer mit C gekennzeichnet ist.
Für Rechner im lokalen Netzwerk ist dieses Gateway auf
welcher Rechner auch immer eine Verbindung nach
außen hat gesetzt (entweder über eine
PPP-Verbindung, DSL, ein Kabelmodem, T1 oder eine beliebige
andere Netzwerkverbindung).Wenn Sie die Standardroute für einen Rechner
konfigurieren, der selbst als Gateway zur Außenwelt
funktioniert, wird die Standardroute zum Gateway-Rechner Ihres
Internetanbieter (ISP) gesetzt.Sehen wir uns ein Beispiel für Standardrouten an. So
sieht eine übliche Konfiguration aus:
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
Die Rechner Local1 und
Local2 befinden sich auf Ihrer Seite.
Local1 ist mit einem ISP über eine
PPP-Verbindung verbunden. Dieser PPP-Server ist über ein
lokales Netzwerk mit einem anderen Gateway-Rechner verbunden,
der über eine Schnittstelle die Verbindung des ISP zum
Internet herstellt.Die Standardrouten für Ihre Maschinen lauten:HostStandard GatewaySchnittstelleLocal2Local1EthernetLocal1T1-GWPPPEine häufig gestellte Frage lautet: Warum (oder
wie) sollten wir T1-GW als Standard-Gateway
für Local1 setzen, statt den (direkt
verbundenen) ISP-Server zu verwenden?.Bedenken Sie, dass die PPP-Schnittstelle für die
Verbindung eine Adresse des lokalen Netzes des ISP verwendet.
Daher werden Routen für alle anderen Rechner im lokalen
Netz des ISP automatisch erzeugt. Daraus folgt, dass Sie
bereits wissen, wie Sie T1-GW erreichen
können! Es ist also unnötig, einen Zwischenschritt
über den ISP-Server zu machen.Es ist üblich, die Adresse X.X.X.1 als Gateway-Adresse für
ihr lokales Netzwerk zu verwenden. Für unser Beispiel
bedeutet dies Folgendes: Wenn Ihr lokaler Klasse-C-Adressraum
10.20.30 ist und Ihr ISP
10.9.9 verwendet, sehen die
Standardrouten so aus:Rechner (Host)StandardrouteLocal2 (10.20.30.2)Local1 (10.20.30.1)Local1 (10.20.30.1, 10.9.9.30)T1-GW (10.9.9.1)Sie können die Standardroute ganz einfach in der Datei
/etc/rc.conf festlegen. In unserem
Beispiel wurde auf dem Rechner Local2
folgende Zeile in /etc/rc.conf
eingefügt:defaultrouter="10.20.30.1"Die Standardroute kann über &man.route.8; auch direkt
gesetzt werden:&prompt.root; route add default 10.20.30.1Weitere Informationen zum Bearbeiten von
Netzwerkroutingtabellen finden Sie in &man.route.8;.Rechner mit zwei HeimatnetzenDual-Homed-HostsEs gibt noch eine Konfigurationsmöglichkeit, die wir
besprechen sollten, und zwar Rechner, die sich in zwei
Netzwerken befinden. Technisch gesehen, zählt jeder als
Gateway arbeitende Rechner zu den Rechnern mit zwei
Heimatnetzen (im obigen Beispiel unter Verwendung einer
PPP-Verbindung). In der Praxis meint man damit allerdings nur
Rechner, die sich in zwei lokalen Netzen befinden.Entweder verfügt der Rechner über zwei
Ethernetkarten und jede dieser Karten hat eine Adresse in
einem separaten Subnetz, oder der Rechner hat nur eine
Ethernetkarte und verwendet &man.ifconfig.8; Aliasing. Die
erste Möglichkeit wird verwendet, wenn zwei physikalisch
getrennte Ethernet-Netzwerke vorhanden sind, die zweite, wenn
es nur ein physikalisches Ethernet-Netzwerk gibt, das aber aus
zwei logisch getrennten Subnetzen besteht.In beiden Fällen werden Routingtabellen erstellt,
damit jedes Subnetz weiß, dass dieser Rechner als Gateway
zum anderen Subnetz arbeitet (inbound
route). Diese Konfiguration (der
Gateway-Rechner arbeitet als Router zwischen den Subnetzen) wird
häufig verwendet, wenn es darum geht, Paketfilterung oder
eine Firewall (in eine oder beide Richtungen) zu implementieren.
Soll dieser Rechner Pakete zwischen den beiden
Schnittstellen weiterleiten, müssen Sie diese Funktion
manuell konfigurieren und aktivieren. Lesen Sie den
nächsten Abschnitt, wenn Sie weitere Informationen zu
diesem Thema benötigen.Einen Router konfigurierenRouterEin Netzwerkrouter ist einfach ein System, das Pakete von
einer Schnittstelle zur anderen weiterleitet.
Internetstandards und gute Ingenieurspraxis sorgten
dafür, dass diese Funktion in FreeBSD in der Voreinstellung
deaktiviert ist. Sie können diese Funktion aktivieren,
indem Sie in &man.rc.conf.5; folgende Änderung
durchführen:gateway_enable=YES # Auf YES setzen, wenn der Rechner als Gateway arbeiten sollDiese Option setzt die &man.sysctl.8;-Variable
net.inet.ip.forwarding auf
1. Wenn Sie das Routing kurzzeitig
unterbrechen wollen, können Sie die Variable auf
0 setzen.BGPRIPOSPFIhr neuer Router benötigt nun noch Routen, um zu
wissen, wohin er den Verkehr senden soll. Haben Sie ein
(sehr) einfaches Netzwerk, können Sie statische Routen
verwenden. FreeBSD verfügt über den Standard
BSD-Routing-Daemon &man.routed.8;, der RIP (sowohl Version 1
als auch Version 2) und IRDP versteht. BGP v4,
OSPF v2 und andere Protokolle werden von
net/zebra
unterstützt. Es stehen auch kommerzielle Produkte
wie gated zur Verfügung.AlHoangBeigetragen von Statische Routen einrichtenManuelle KonfigurationNehmen wir an, dass wir über folgendes Netzwerk
verfügen:
INTERNET
| (10.0.0.1/24) Default Router to Internet
|
|Interface xl0
|10.0.0.10/24
+------+
| | RouterA
| | (FreeBSD gateway)
+------+
| Interface xl1
| 192.168.1.1/24
|
+--------------------------------+
Internal Net 1 | 192.168.1.2/24
|
+------+
| | RouterB
| |
+------+
| 192.168.2.1/24
|
Internal Net 2
RouterA, ein &os;-Rechner, dient als
Router für den Zugriff auf das Internet. Die
Standardroute ist auf 10.0.0.1
gesetzt, damit ein Zugriff auf das Internet möglich wird.
Wir nehmen nun an, dass RouterB bereits
konfiguriert ist und daher weiß, wie er andere Rechner
erreichen kann. Dazu wird die Standardroute von
RouterB auf
192.168.1.1 gesetzt, da dieser
Rechner als Gateway fungiert.Sieht man sich die Routingtabelle für
RouterA an, erhält man folgende Ausgabe:
&prompt.user; netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.1 UGS 0 49378 xl0
127.0.0.1 127.0.0.1 UH 0 6 lo0
10.0.0/24 link#1 UC 0 0 xl0
192.168.1/24 link#2 UC 0 0 xl1Mit dieser Routingtabelle kann RouterA
unser internes Netz 2 nicht erreichen, da keine Route zum
Rechner 192.168.2.0/24
vorhanden ist. Um dies zu korrigieren, kann die Route manuell
gesetzt werden. Durch den folgenden Befehl wird das
interne Netz 2 in die Routingtabelle des Rechners
RouterA aufgenommen, indem
192.168.1.2 als nächster
Zwischenschritt verwenden wird:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2Ab sofort kann RouterA alle Rechner des
Netzwerks 192.168.2.0/24
erreichen.Routen dauerhaft einrichtenDas obige Beispiel ist für die Konfiguration einer
statischen Route auf einem laufenden System geeignet. Diese
Information geht jedoch verloren, wenn der &os;-Rechner neu
gestartet werden muss. Um dies zu verhindern, wird diese
Route in /etc/rc.conf eingetragen:# Add Internal Net 2 as a static route
static_routes="internalnet2"
route_internalnet2="-net 192.168.2.0/24 192.168.1.2"Die Variable static_routes enthält
eine Reihe von Strings, die durch Leerzeichen getrennt sind.
Jeder String bezieht sich auf den Namen einer Route. In
unserem Beispiel hat static_routesinternalnet2 als einzigen String.
Zusätzlich verwendet man die Konfigurationsvariable
route_internalnet2,
in der alle sonstigen an &man.route.8; zu übergebenden
Parameter festgelegt werden. In obigen Beispiel hätte
man folgenden Befehl verwendet:&prompt.root; route add -net 192.168.2.0/24 192.168.1.2Daher wird
"-net 192.168.2.0/24 192.168.1.2" als
Parameter der Variable route_ angegeben.
Wie bereits erwähnt, können bei
static_routes auch mehrere Strings
angegeben werden. Dadurch lassen sich mehrere statische
Routen anlegen. Durch folgende Zeilen werden auf einem
imaginären Rechner statische Routen zu den Netzwerken
192.168.0.0/24 sowie 192.168.1.0/24 definiert:static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.0.1"
route_net2="-net 192.168.1.0/24 192.168.1.1"Verteilung von Routing-Informationenrouting propagationWir haben bereits darüber gesprochen, wie wir unsere
Routen zur Außenwelt definieren, aber nicht darüber,
wie die Außenwelt uns finden kann.Wir wissen bereits, dass Routing-Tabellen so erstellt
werden können, dass sämtlicher Verkehr für
einen bestimmten Adressraum (in unserem Beispiel ein
Klasse-C-Subnetz) zu einem bestimmten Rechner in diesem
Netzwerk gesendet wird, der die eingehenden Pakete im Subnetz
verteilt.Wenn Sie einen Adressraum für Ihre Seite zugewiesen
bekommen, richtet Ihr Diensteanbieter seine Routingtabellen so
ein, dass der ganze Verkehr für Ihr Subnetz entlang Ihrer
PPP-Verbindung zu Ihrer Seite gesendet wird. Aber woher
wissen die Seiten in der Außenwelt, dass sie die Daten an
Ihren ISP senden sollen?Es gibt ein System (ähnlich dem verbreiteten DNS),
das alle zugewiesenen Adressräume verwaltet und ihre
Verbindung zum Internet-Backbone definiert und dokumentiert.
Der Backbone ist das Netz aus
Hauptverbindungen, die den Internetverkehr in der ganzen Welt
transportieren und verteilen. Jeder Backbone-Rechner
verfügt über eine Kopie von Haupttabellen, die den
Verkehr für ein bestimmtes Netzwerk hierarchisch vom
Backbone über eine Kette von Diensteanbietern bis hin zu
Ihrer Seite leiten.Es ist die Aufgabe Ihres Diensteanbieters, den
Backbone-Seiten mitzuteilen, dass sie mit Ihrer Seite
verbunden wurden. Durch diese Mitteilung der Route ist nun
auch der Weg zu Ihnen bekannt. Dieser Vorgang wird als
Bekanntmachung von Routen
(routing propagation)
bezeichnet.ProblembehebungtracerouteManchmal kommt es zu Problemen bei der Bekanntmachung von
Routen, und einige Seiten sind nicht in der Lage, Sie zu
erreichen. Vielleicht der nützlichste Befehl, um
festzustellen, wo das Routing nicht funktioniert, ist
&man.traceroute.8;. Er ist außerdem sehr nützlich,
wenn Sie einen entfernten Rechner nicht erreichen können
(lesen Sie dazu auch &man.ping.8;).&man.traceroute.8; wird mit dem zu erreichenden Rechner
(Host) ausgeführt. Angezeigt werden die Gateway-Rechner
entlang des Verbindungspfades. Schließlich wird der
Zielrechner erreicht oder es kommt zu einem Verbindungsabbruch
(beispielsweise durch Nichterreichbarkeit eines
Gateway-Rechners).Weitere Informationen finden Sie in
&man.traceroute.8;.Multicast-RoutingMulticast-RoutingKerneloptionenMROUTING&os; unterstützt sowohl Multicast-Anwendungen als
auch Multicast-Routing. Multicast-Anwendungen müssen
nicht konfiguriert werden, sie laufen einfach.
Multicast-Routing muss in der Kernelkonfiguration aktiviert
werden:options MROUTINGZusätzlich muss &man.mrouted.8;, der
Multicast-Routing-Daemon, über die Datei
/etc/mrouted.conf eingerichtet werden,
um Tunnel und DVMRP zu aktivieren. Weitere
Informationen zu diesem Thema finden Sie in
&man.mrouted.8;.LoaderMarcFonvieilleMurrayStokelyDrahtlose NetzwerkeNetzwerke, drahtlos802.11drahtlose NetzwerkeGrundlagenDie meisten drahtlosen Netzwerke basieren auf dem
Standard IEEE 802.11. Sie bestehen aus Stationen, die
in der Regel im 2,4 GHz- oder im 5 GHz-Band
miteinander kommunizieren. Es ist aber auch
möglich, dass regional andere Frequenzen,
beispielsweise im 2,3 GHz- oder 4,9 GHz-Band,
verwendet werden.802.11-Netzwerke können auf zwei verschiedene
Arten aufgebaut sein: Im
Infrastruktur-Modus agiert eine
Station als Master, mit dem sich alle andere Stationen
verbinden. Die Summe aller Stationen wird als BSS
(Basic Service Set), die Master-Station hingegen als
Access Point (AP) bezeichnet. In einem BSS läuft
jedwede Kommunikation über den Access Point. Die
zweite Form drahtloser Netzwerke sind die sogenannten
Ad-hoc-Netzwerke (auch als IBSS
bezeichnet), in denen es keinen Access Point gibt und
in denen die Stationen direkt miteinander
kommunizieren.Die ersten 802.11-Netzwerke arbeiteten im
2,4 GHz-Band und nutzten dazu Prokolle der
IEEE-Standards 802.11 sowie 802.11b. Diese Standards
legen unter anderem Betriebsfrequenzen sowie Merkmale
des MAC-Layers (wie Frames und Transmissionsraten) fest.
Später kam der Standard 802.11a hinzu, der im
5 GHz-Band, im Gegensatz zu den ersten beiden
Standards aber mit unterschiedlichen Signalmechanismen
und höheren Transmissionsraten arbeitet. Der
neueste Standard 802.11g implementiert die Signal- und
Transmissionsmechanismen von 802.11a im 2,4 GHz-Band,
ist dabei aber abwärtskompatibel zu
802.11b-Netzwerken.Unabhängig von den zugrundeliegenden
Transportmechanismen verfügen 802.11-Netzwerke
über diverse Sicherheitsmechanismen. Der
ursprüngliche 802.11-Standard definierte lediglich
ein einfaches Sicherheitsprotokoll namens WEP. Dieses
Protokoll verwendet einen fixen (gemeinsam verwendeten)
Schlüssel sowie die RC4-Kryptografie-Chiffre,
um Daten verschlüsselt über das drahtlose
Netzwerk zu senden. Alle Stationen des Netzwerks
müssen sich auf den gleichen fixen Schlüssel
einigen, um miteinander kommunizieren zu können. Dieses
Schema ist sehr leicht zu knacken und wird deshalb heute
kaum mehr eingesetzt. Aktuelle Sicherheitsmechanismen
bauen auf dem Standard IEEE 802.11i auf, der neue
kryptografische Schlüssel (Chiffren), ein neues
Protokoll für die Anmeldung von Stationen an einem
Access Point sowie Mechanismen zum Austausch von
Schlüsseln als Vorbereitung der Kommunikation zwischen
verschiedenen Geräten festlegt. Kryptografische
Schlüssel werden regelmäßig getauscht.
Außerdem gibt es Mechanismen, um Einbruchsversuche
zu entdecken (und Gegenmaßnahmen ergreifen zu können).
Ein weiteres häufig verwendetes Sicherheitsprotokoll ist
WPA. Dabei handelt es sich um einen Vorläufer von 802.11i,
der von einem Industriekonsortium als Zwischenlösung bis
zur endgültigen Verabschiedung von 802.11i entwickelt
wurde. WPA definiert eine Untergruppe der Anforderungen des
802.11i-Standards und ist für den Einsatz in älterer
Hardware vorgesehen. WPA benötigt nur den (auf dem
ursprünglichen WEP-Code basierenden) TKIP-Chiffre. 802.11i
erlaubt zwar auch die Verwendung von TKIP, fordert aber
zusätzlich eine stärkere Chiffre (AES-CCM)
für die Datenverschlüsselung. (AES war für
WPA nicht vorgesehen, weil man es als zu rechenintensiv
für den Einsatz in älteren Geräten ansah.)Neben den weiter oben erwähnten Standards ist auch
der Standard 802.11e von großer Bedeutung. Dieser
definiert Protokolle zur Übertragung von
Multimedia-Anwendungen wie das Streaming von Videodateien
oder Voice-over-IP (VoIP) in einem 802.11-Netzwerk. Analog
zu 802.11i verfügt auch 802.11e über eine
vorläufige Spezifikation namens WMM (ursprünglich
WME), die von einem Industriekonsortium als Untergruppe
von 802.11e spezifiziert wurde, um Multimedia-Anwendungen
bereits vor der endgültigen Verabschiedung des
802.11e-Standards implementieren zu können. 802.11e
sowie WME/WMM erlauben eine Prioritätenvergabe beim
Datentransfer im einem drahtlosen Netzwerk. Möglich
wird dies durch den Einsatz von Quality of Service-Protokollen
(QoS) und erweiterten Medienzugriffsprotokollen. Werden
diese Protokolle korrekt implementiert, erlauben sie daher
hohe Datenübertragungsraten und einen priorisierten
Datenfluss.&os; unterstützt seit der Version 6.0 die Standards
802.11a, 802.11b, sowie 802.11g. Ebenfalls unterstützt
werden WPA sowie die Sicherheitsprotokolle gemäß
802.11i (dies sowohl für 11a, 11b als auch 11g). QoS und
Verkehrpriorisierung, die von den WME/WMM-Protokollen
benötigt werden, werden ebenfalls (allerdings nicht
für alle drahtlosen Geräte) unterstützt.BasiskonfigurationKernelkonfigurationUm ein drahtloses Netzwerk zu nutzen, benötigen
Sie eine drahtlose Netzkarte und einen Kernel, der
drahtlose Netzwerke unterstützt. Der &os;-Kernel
unterstützt den Einsatz von Kernelmodulen. Daher
müssen Sie nur die Unterstützung für die
von Ihnen verwendeten Geräte aktivieren.Als Erstes benötigen Sie ein drahtloses Gerät.
Die meisten drahtlosen Geräte verwenden Bauteile von
Atheros und werden deshalb vom &man.ath.4;-Treiber
unterstützt. Um diesen Treiber zu verwenden,
nehmen Sie die folgende Zeile in die Datei
/boot/loader.conf auf:if_ath_load="YES"Der Atheros-Treiber besteht aus drei Teilen:
dem Treiber selbst (&man.ath.4;), dem
Hardware-Support-Layer für die
chip-spezifischen Funktionen (&man.ath.hal.4;)
sowie einem Algorithmus zur Auswahl der korrekten
Frame-Übertragungsrate (ath_rate_sample).
Wenn Sie die Unterstützung für diesen
Treiber als Kernelmodul laden, kümmert sich
dieses automatisch um diese Aufgaben. Verwenden
Sie ein Nicht-Atheros-Gerät, so müssen
Sie hingegen das für dieses Gerät geeignete
Modul laden, beispielsweiseif_wi_load="YES"für Geräte, die auf Bauteilen von
Intersil Prism basieren und daher den Treiber
&man.wi.4; voraussetzen.In den folgenden Abschnitten wird der
&man.ath.4;-Treiber verwendet. Verwenden Sie ein
anderes Gerät, müssen Sie diesen Wert
daher an Ihre Konfiguration anpassen. Eine Liste aller
verfügbaren Treiber für drahtlose Geräte
finden Sie in der Manualpage &man.wlan.4;. Gibt es
keinen nativen &os;-Treiber für Ihr drahtloses
Gerät, können Sie möglicherweise mit
NDIS einen
&windows;-Treiber verwenden.Neben dem korrekten Treiber benötigen Sie auch
die Unterstützung für 802.11-Netzwerke. Für
den &man.ath.4;-Treiber wird dazu automatisch das
Kernelmodul &man.wlan.4; geladen. Zusätzlich
benötigen Sie noch Module zur Verschlüsselung
ihres drahtlosen Netzwerks. Diese werden normalerweise
dynamisch vom &man.wlan.4;-Modul geladen. Im folgenden
Beispiel erfolgt allerdings eine manuelle Konfiguration.
Folgende Module sind verfügbar: &man.wlan.wep.4;,
&man.wlan.ccmp.4; sowie &man.wlan.tkip.4;. Sowohl
&man.wlan.ccmp.4; als auch &man.wlan.tkip.4; werden nur
benötigt, wenn Sie WPA und/oder die Sicherheitsprotokolle
von 802.11i verwenden wollen. Wollen Sie Ihr Netzwerk
hingegen offen betreiben (also völlig ohne
Verschlüsselung), benötigen Sie nicht einmal
die &man.wlan.wep.4;-Unterstützung. Um alle drei
Module beim Systemstart zu laden, fügen Sie folgende
Zeilen in die Datei /boot/loader.conf
ein:wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"Danach müssen Sie Ihr &os;-System neu starten.
Alternativ können Sie die Kernelmodule aber auch
manuell mit &man.kldload.8; laden.Wollen Sie keine Kernelmodule verwenden, können
Sie die benötigten Treiber auch in Ihren Kernel
kompilieren. Daz nehmen Sie folgende Zeilen in Ihre
Kernelkonfigurationsdatei auf:device ath # Atheros IEEE 802.11 wireless network driver
device ath_hal # Atheros Hardware Access Layer
device ath_rate_sample # John Bicket's SampleRate control algorithm.
device wlan # 802.11 support (Required)
device wlan_wep # WEP crypto support for 802.11 devices
device wlan_ccmp # AES-CCMP crypto support for 802.11 devices
device wlan_tkip # TKIP and Michael crypto support for 802.11 devicesDanach bauen Sie den neuen Kernel und starten Ihr
&os;-System neu.Während des Systemstarts sollten nun einige
Informationen ähnlich den folgenden über das von
Ihnen verwendete drahtlose Gerät ausgegeben
werden:ath0: <Atheros 5212> mem 0xff9f0000-0xff9fffff irq 17 at device 2.0 on pci2
ath0: Ethernet address: 00:11:95:d5:43:62
ath0: mac 7.9 phy 4.5 radio 5.6Infrastruktur-ModusDrahtlose Netzwerke werden in der Regel im
Infrastruktur-Modus (auch BSS-Modus genannt) betrieben.
Dazu werden mehrere drahtlose Access Points zu einem
gemeinsamen drahtlosen Netzwerk verbunden. Jedes dieser
drahtlosen Netzwerke hat einen eigenen Namen, der als
SSID bezeichnet wird. Alle Clients
eines drahtlosen Netzwerks verbinden sich in diesem Modus
mit einem Access Point.&os;-ClientsEinen Access Point findenUm nach drahtlosen Netzwerken zu suchen, verwenden Sie
ifconfig. Dieser Scanvorgang kann einige
Zei in Anspruch nehmen, da dazu jede verfügbare
Frequenz auf verfügbare Access Points hin
überprüft werden muss. Um die Suche zu starten,
müssen Sie als Super-User angemeldet sein:&prompt.root; ifconfig ath0 up scan
SSID BSSID CHAN RATE S:N INT CAPS
-dlinkap 00:13:46:49:41:76 6 54M 29:0 100 EPS WPA WME
-freebsdap 00:11:95:c3:0d:ac 1 54M 22:0 100 EPS WPA
+dlinkap 00:13:46:49:41:76 6 54M 29:3 100 EPS WPA WME
+freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS WPA
Ihre Netzwerkkarte muss in den Status
versetzt werden, bevor Sie den ersten
Scanvorgang starten können. Für spätere
Scans ist dies aber nicht mehr erforderlich.Als Ergebnis erhalten Sie eine Liste mit allen
gefundenen BSS/IBSS-Netzwerken. Zusätzlich zur
SSID (dem Namen des Netzwerks) wird
auch die BSSID ausgegeben. Dabei
handelt es sich um MAC-Adresse des Access Points. Das
Feld CAPS gibt den Typ des Netzwerks
sowie die Fähigkeiten der Stationen innerhalb des
Netzwerks an:EExtended Service Set (ESS). Zeigt an, dass die
Station Teil eines Infrastruktur-Netzwerks ist (und
nicht eines IBSS/Ad-hoc-Netzwerks).IIBSS/Ad-hoc-Netzwerk. Die Station ist Teil eines
Ad-hoc-Netzwerks (und nicht eines
ESS-Netzwerks).PPrivacy. Alle Datenframes, die innerhalb des
BSS ausgetauscht werden, sind verschlüsselt.
Dieses BSS verwendet dazu kryptografische Verfahren
wie WEP, TKIP oder AES-CCMP.SShort Preamble. Das Netzwerk verwendet eine
kurze Präambel (definiert in 802.11b High
Rate/DSSS PHY). Eine kurze Präambel verwendet
ein 56 Bit langes Sync-Feld (im Gegensatz
zu einer langen Präambel, die ein
128 Bit langes Sync-Feld verwendet).sShort slot time. Das 802.11g-Netzwerk verwendet
eine kurze Slotzeit, da es in diesem Netzwerk keine
veralteten (802.11b) Geräte gibt.Um eine Liste der bekannten Netzwerke auszugeben,
verwenden Sie den folgenden Befehl:&prompt.root; ifconfig ath0 list scanDiese Liste kann entweder automatisch durch das
drahtlose Gerät oder manuell durch eine
-Aufforderung aktualisiert werden.
Veraltete Informationen werden dabei automatisch
entfernt.BasiseinstellungenDieser Abschnitt beschreibt, wie Sie ein einfaches
drahtloses Netzerk ohne Verschlüsselung unter &os;
einrichten. Nachdem Sie sich mit den Informationen dieses
Abschnitts vertraut gemacht haben, sollten Sie Ihr
drahtloses Netzwerk mit WPA
verschlüsseln.Das Einrichten eines drahtlosen Netzwerks erfolgt
in drei Schritten: Der Auswahl eines Access Points, der
Anmeldung Ihrer Station sowie der Konfiguration Ihrer
IP-Adresse.Einen Access Point auswählenIm Normalfall wird sich Ihre Station automatisch mit
einem der zur Verfügung stehenden Access Points
verbinden. Sie müssen dazu lediglich Ihr
drahtloses Gerät aktivieren. Alternativ können
Sie auch einen Eintrag ähnlich dem folgenden in
/etc/rc.conf aufnehmen:ifconfig_ath0="DHCP"Wollen Sie sich hingegen mit einem bestimmten
Access Point verbinden, müssen Sie dessen
SSID angeben:ifconfig_ath0="ssid Ihre_SSID DHCP"Gibt es in Ihrem Netzwerk mehrere Access Points
mit der gleichen SSID (was der Einfachheit wegen
häufig der Fall ist), können Sie sich dennoch
mit einem bestimmten Access Point verbinden. Dazu
müssen Sie lediglich die BSSID des Access Points
angeben (die Angabe der SSID ist in diesem Fall nicht
erforderlich):ifconfig_ath0="ssid Ihre_SSID bssid xx:xx:xx:xx:xx:xx DHCP"Es gibt noch weitere Möglichkeiten, den Zugriff
auf bestimmte Access Point zu beschränken,
beispielsweise durch die Begrenzung der Frequenzen, auf
denen eine Station nach einem Acces Point sucht. Sinnvoll
ist ein solches Vorgehen beispielsweise, wenn Ihr
drahtloses Gerät in verschiedenen Frequenzbereichen
arbeiten kann, da in diesem Fall das Prüfen aller
Frequenzen sehr zeitintensiv ist. Um nur innerhalb eines
bestimmten Frequenzbereichs nach einem Access Point zu
suchen, verwenden Sie die Option :ifconfig_ath0="mode 11g ssid Ihre_SSID DHCP"Dadurch sucht Ihr drahtloses Gerät nur im
2,4 GHz-Band (802.11g), aber nicht innerhalb des
5 GHz-Bandes nach einem Access Point. Mit der
Option können Sie eine
bestimmte Frequenz vorgeben, auf der gesucht werden
soll. Die Option erlaubt
die Angabe mehrerer erlaubter Frequenzen. Eine
umfassende Beschreibung dieser Optionen finden Sie in
der Manualpage &man.ifconfig.8;.AuthentifizierungWenn Sie einen Access Point gefunden haben, muss
sich Ihrem Station am Access Point anmelden, bevor
Sie Daten übertragen kann. Dazu gibt es
verschiedene Möglichkeiten. Am häufigsten
wird nach wie vor die sogenannte offene
Authentifizierung verwendet. Dabei wird
es jeder Station erlaubt, sich mit einem Netzwerk
zu verbinden und Daten zu übertragen. Aus
Sicherheitsgründen sollte diese Methode allerdings
nur zu Testzwecken bei der erstmaligen Einrichtung
eines drahtlosen Netzwerks verwendet werden. Andere
Authentifizierungsmechanismen erfordern den Austausch
kryptografischer Informationen, bevor Sie die
Übertragung von Daten erlauben. Dazu gehören
der Austausch fixer (vorher vereinbarter) Schlüssel
oder Kennwörter sowie der Einsatz komplexerer
Verfahren mit Backend-Diensten wie RADIUS. Die meisten
Netzwerke nutzen allerdings nach wie vor die offene
Authentifizierung, da dies die Voreinstellung ist. Am
zweithäufigsten kommt das weiter unten beschriebene
WPA-PSK
(das auch als WPA Personal
bezeichnet wird) zum Einsatz.Verwenden Sie eine
&apple; &airport; Extreme-Basisstation als Access Point,
benötigen Sie wahrscheinlich sowohl die
Shared-Key-Authentifizierung als auch einen
WEP-Schlüssel. Die entsprechende Konfiguration
erfolgt entweder in der Datei
/etc/rc.conf oder über das
Programm &man.wpa.supplicant.8;. Verwenden Sie nur
eine einzige &airport;-Basisstation, benötigen
Sie einen Eintrag ähnlich dem folgenden:ifconfig_ath0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP"Normalerweise sollten Sie
Shared-Key-Authentifizierung aber nicht verwenden,
da diese die Sicherheit des WEP-Schlüssel noch
weiter verringert. Müssen Sie WEP einsetzen
(beispielsweise weil Sie zu veralteten Geräten
kompatibel bleiben müssen), sollten Sie WEP
nur zusammen mit der offenen Authentifizierung
(open authentication) verwenden.
WEP wird im näher
beschrieben.Eine IP-Adresse über DHCP beziehenNachdem Sie einen Access Point gefunden und sich
authentifiziert haben, benötigen Sie noch eine
IP-Adresse, die Sie in der Regel über DHCP
zugewiesen bekommen. Dazu müssen Sie lediglich
die Option DHCP in Ihre
in der Datei /etc/rc.conf
vorhandene Konfiguration Ihres drahtlosen Geräts
aufnehmen:ifconfig_ath0="DHCP"Nun können Sie Ihr drahtloses Gerät
starten:&prompt.root; /etc/rc.d/netif startNachdem Sie das Gerät aktiviert haben,
können Sie mit ifconfig den
Status des Geräts ath0
abfragen:&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/54Mbps)
status: associated
ssid dlinkap channel 6 bssid 00:13:46:49:41:76
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100status: associated besagt, dass
sich Ihr Gerät mit dem drahtlosen Netzwerk verbunden
hat (konkret mit dem Netzwerk dlinkap).
bssid 00:13:46:49:41:76 gibt die
MAC-Adresse Ihres Access Points aus und die Zeile mit
authmode informiert Sie darüber,
dass Ihre Kommunikation nicht verschlüsselt wird
(OPEN).Statische IP-AdressenAlternativ zu dynamischen IP-Adressen
können Sie auch eine statische IP-Adresse verwenden.
Dazu ersetzen Sie in Ihrer Konfiguration
DHCP durch die zu verwendende
IP-Adresse. Beachten Sie dabei, dass Sie die anderen
Konfigurationsparameter nicht versehentlich
verändern:
- ifconfig_ath0="inet 192.168.1.100 netmask 255.255.255.0 ssid Ihre_SSID"
+ ifconfig_ath0="ssid Ihre_ssid inet 192.168.1.100 netmask 255.255.255.0"WPABei WPA (Wi-Fi Protected Access) handelt es sich um ein
Sicherheitsprotokoll, das in 802.11-Netzwerken verwendet
wird, um die Nachteile von WEP (fehlende
Authentifizierung und schwache Verschlüsselung)
zu vermeiden. WPA stellt das aktuelle
802.1X-Authentifizierungsprotokoll dar und verwendet
eine von mehreren Chiffren, um die Datensicherheit
zu gewährleisten. Die einzige Chiffre, die von
WPA verlangt wird, ist TKIP (Temporary
Key Integrity Protocol), eine Chiffre,
die die von WEP verwendete RC4-Chiffre um Funktionen
zur Prüfung der Datenintegrität und zur
Erkennung und Bekämpfung von Einbruchsversuchen
erweitert.
TKIP ist durch Softwaremodifikationen auch unter
veralteter Hardware lauffähig. Im Vergleich zu
WEP ist WPA zwar sehr viel sicherer, es ist aber dennoch
nicht völlig immun gegen Angriffe. WPA definiert
mit AES-CCMP noch eine weitere Chiffre als Alternative
zu TKIP. AES-CCMP (das häufig als WPA2 oder RSN
bezeichnet wird) sollte, wenn möglich, eingesetzt
werden.WPA definiert Authentifizierungs- und
Verschlüsselungsprotokolle. Die Authentifizierung
erfolgt in der Regel über eine der folgenden
Techniken: 802.1X gemeinsam mit einem
Backend-Authentifizierungsdienst wie RADIUS, oder durch
einen Minimal-Handshake zwischen der Station und dem
Access Point mit einem vorher vereinbarten gemeinsamen
Schlüssel. Die erste Technik wird als
WPA Enterprise, die zweite
hingegen als WPA Personal
bezeichnet. Da sich der Aufwand für das Aufsetzen
eines RADIUS-Backend-Servers für die meisten
drahtlosen Netzwerke nicht lohnt, wird WPA in der Regel
als WPA-PSK (WPA, Pre-Shared-Key) konfiguriert.Die Kontrolle der drahtlosen Verbindung sowie die
vorangehende Authentifizierung (über Schlüssel
oder durch die Kommunikation mit einem Server) erfolgt
über das Programm &man.wpa.supplicant.8;, das
über die Datei
/etc/wpa_supplicant.conf
eingerichtet wird. Ausführliche Informationen
zur Konfiguration des Programms finden sich in der
Manualpage &man.wpa.supplicant.conf.5;.WPA-PSKWPA-PSK oder WPA-Personal basiert auf einem
gemeinsamen (vorher vereinbarten) Schlüssel (PSK),
der aus einem Passwort generiert und danach als
Master-Key des drahtlosen Netzwerks verwendet wird.
Jeder Benutzer des drahtlosen Netzwerks verwendet daher
den gleichen Schlüssel. WPA-PSK
sollte nur in kleinen Netzwerken eingesetzt werden, in
denen die Konfiguration eines Authentifizierungsservers
nicht möglich oder erwünscht ist.Achten Sie darauf, dass Sie immer starke
Passwörter verwenden, die ausreichend lang
sind und, wenn möglich, auch Sonderzeichen
enthalten, damit diese nicht leicht erraten und/oder
geknackt werden können.Der erste Schritt zum Einsatz von WPA-PSK ist die
Konfiguration der SSID und des gemeinsamen Schlüssels
Ihres Netzwerks in der Datei
/etc/wpa_supplicant.conf:network={
ssid="freebsdap"
psk="freebsdmall"
}Danach geben Sie in /etc/rc.conf
an, dass WPA zur Verschlüsselung eingesetzt werden
soll und dass die IP-Adresse über DHCP bezogen
wird:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr Netzgerät aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.0.1
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/36Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Alternativ können Sie die Konfiguration von
WPA-PSK
auch manuell durchführen, wobei Sie wiederum die
Konfigurationsdatei
/etc/wpa_supplicant.conf
verwenden:&prompt.root; wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)
Associated with 00:11:95:c3:0d:ac
WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=TKIP GTK=TKIP]Im zweiten Schritt starten Sie nun
dhclient, um eine IP-Adresse vom
DHCP-Server zu beziehen:&prompt.root; dhclient ath0
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/48Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Enthält Ihre /etc/rc.conf
bereits die Zeile ifconfig_ath0="DHCP",
müssen Sie dhclient nicht mehr
manuell aufrufen, da dhclient in
diesem Fall automatisch gestartet wird, nachdem
wpa_supplicant die Schlüssel
übergibt.Sollte der Einsatz von DHCP nicht möglich sein,
können Sie auch eine statische IP-Adresse
angeben, nachdem wpa_supplicant Ihre
Station authentifiziert hat:&prompt.root; ifconfig ath0 inet 192.168.0.100 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/36Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100Verwenden Sie DHCP nicht, müssen Sie
zusätzlich noch das Standard-Gateway sowie
den/die Nameserver manuell festlegen:&prompt.root; route add default your_default_router
&prompt.root; echo "nameserver your_DNS_server" >> /etc/resolv.confWPA und EAP-TLSDie zweite Möglichkeit, WPA einzusetzen, ist
die Verwendung eines
802.1X-Backend-Authentifizierungsservers. Diese
Variante wird als WPA-Enterprise bezeichnet, um sie
vom weniger sicheren WPA-Personal abzugrenzen, das
auf dem Austausch gemeinsamer (und vorher vereinbarter
Schlüssel) basiert. Die bei WPA-Enterprise
verwendete Authentifizierung basiert auf EAP
(Extensible Authentication
Protocol).EAP selbst bietet keine Verschlüsselung,
sondern operiert in einem verschlüsselten
Tunnel. Es gibt verschiedene, auf EAP basierende
Authentifizierungsmethoden, darunter EAP-TLS,
EAP-TTLS sowie EAP-PEAP.Bei EAP-TLS (EAP with Transport Layers
Security) handelt es sich um sehr gut
unterstütztes Authentifizierungsprotokoll, da es
sich dabei um die erste EAP-Methode handelt, die von
der Wi-Fi
Alliance zertifiziert wurde. EAP-TLS
erfordert drei Zertifikate: Das (auf allen Rechnern
installierte) CA-Zertifikat, das Server-Zertifikat
Ihres Authentifizierungsservers, sowie ein
Client-Zertifikat für jeden drahtlosen Client.
Sowohl der Authentifizierungsservers als auch die
drahtlosen Clients authentifizieren sich gegenseitig
durch ihre Zertifikate, wobei sie überprüfen,
ob diese Zertifikate auch von der
Zertifizierungs-Authorität (CA) des jeweiligen
Unternehmens signiert wurden.Die Konfiguration erfolgt (analog zu WPA-PSK)
über die Datei
/etc/wpa_supplicant.conf:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=TLS
identity="loader"
ca_cert="/etc/certs/cacert.pem"
client_cert="/etc/certs/clientcert.pem"
private_key="/etc/certs/clientkey.pem"
private_key_passwd="freebsdmallclient"
}Der Name des Netzwerks (die SSID).Das RSN/WPA2-Protokoll (IEEE 802.11i) wird
verwendet.Die key_mgmt-Zeile bezieht
sich auf das verwendete Key-Management-Protokoll.
In diesem Beispiel wird WPA gemeinsam mit der
EAP-Authentifizierung verwendet
(WPA-EAP).Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den von EAP verwendeten Identifizierungsstring.Das Feld ca_cert gibt den Pfad
zum CA-Zertifikat an. Dieses Datei wird benötigt,
um das Server-Zertifikat zu verifizieren.Die client_cert-Zeile gibt den
Pfad zum Client-Zertifikat an. Jeder Client hat ein
eigenes, innerhalb des Netzwerks eindeutiges
Zertifikat.Das Feld private_key gibt den
Pfad zum privaten Schlüssel des
Client-Zertifikat an.Das Feld private_key_passwd
enthält die Passphrase für den privaten
Schlüssel.Danach fügen Sie die folgende Zeile in
/etc/rc.conf ein:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr drahtloses Gerät
über das rc.d-System
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100Alternativ können Sie Ihr drahtloses Gerält
wiederum manuell über
wpa_supplicant und
ifconfig aktivieren.WPA und EAP-TTLSBei EAP-TLS müssen sowohl der
Authentifizierungsserver als auch die Clients jeweils
ein eigenes Zertifikat aufweisen. Setzen Sie hingegen
EAP-TTLS (EAP-Tunneled
Transport Layer Security) ein, ist das
Client-Zertifikat optional. EAP-TTLS geht dabei
ähnlich vor wie verschlüsselte Webseiten,
bei denen der Webserver einen sicheren SSL-Tunnel
erzeugen kann, ohne dass der Besucher dabei über
ein client-seitiges Zertifikat verfügen muss.
EAP-TTLS verwendet einen verschlüsselten
TLS-Tunnel zum sicheren Transport der
Authentifizierungsdaten.Die Konfiguration von EAP-TTLS erfolgt in der
Datei /etc/wpa_supplicant.conf:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=TTLS
identity="test"
password="test"
ca_cert="/etc/certs/cacert.pem"
phase2="auth=MD5"
}Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den Identifizierungsstring für die
EAP-Authentifizierung innerhalb des
verschlüsselten TlS-Tunnels.Das password-Feld enthält
die Passphrase für die
EAP-Authentifizierung.Das Feld ca_cert gibt den
Pfad zum CA-Zertifikat an, das benötigt wird,
um das Server-Zertifikat zu verifizieren.Die innerhalb des verschlüsselten TLS-Tunnels
verwendete Authentifizierungsmethode. In unserem
Beispiel handelt es sich dabei um EAP und MD5. Diese
Phase der inneren Authentifizierung wird
oft als phase2 bezeichnet.Folgende Zeile muss zusätzlich in die Datei
/etc/rc.conf aufgenommen werden:ifconfig_ath0="WPA DHCP"Nun können Sie Ihr drahtloses Gerät
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100WPA und EAP-PEAPPEAP (Protected EAP)
wurde als Alternative zu EAP-TTLS entwickelt. Es gibt
zwei verschiedene PEAP-Methoden, wobei es sich bei
PEAPv0/EAP-MSCHAPv2 um die häufiger verwendete
Methode handelt. In den folgenden Ausführungen
wird der Begriff PEAP synonym für diese
EAP-Methode verwendet. PEAP ist nach EAP-TLS der
am häufigsten verwendete und am besten
unterstützte EAP-Standard.PEAP arbeitet ähnlich wie EAP-TTLS: Es
verwendet ein server-seitiges Zertifikat, um
einen verschlüsselten TLS-Tunnel zu erzeugen,
über den die sichere Authentifizierung zwischen
den Clients und dem Authentifizierungsserver erfolgt.
In Sachen Sicherheit unterscheiden sich EAP-TTLS und
PEAP allerdings: PEAP überträgt den
Benutzernamen im Klartext und verschlüsselt nur
das Passwort, während EAP-TTLS sowohl den
Benutzernamen als auch das Passwort über den
TLS-Tunnel überträgt.Um EAP-PEAP einzurichten, müssen Sie die
Konfigurationsdatei
/etc/wpa_supplicant.conf
anpassen:network={
ssid="freebsdap"
proto=RSN
key_mgmt=WPA-EAP
eap=PEAP
identity="test"
password="test"
ca_cert="/etc/certs/cacert.pem"
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}Die für die Verbindung verwendete
EAP-Methode.Das identity-Feld enthält
den Identifizierungsstring für die innerhalb
des verschlüsselten TLS-Tunnels erfolgende
EAP-Authentifizierung.Das Feld password enthält
die Passphrase für die EAP-Authentifizierung.Das Feld ca_cert gibt den Pfad
zum CA-Zertifikat an, das zur Verifizierung des
Server-Zertifikats benötigt wird.Dieses Feld enthält die Parameter für
die erste Phase der Authentifizierung (also den
TLS-Tunnel). Je nach dem, welchen
Authentifizierungsserver Sie verwenden, müssen
Sie hier einen unterschiedlichen Wert angeben.
In den meisten Fällen wird dieses Feld den
Wert client EAP encryption aufweisen,
der durch die Angabe von
peaplabel=0 gesetzt wird. Weitere
Informationen zur Konfiguration von PEAP finden Sie
in der Manualpage &man.wpa.supplicant.conf.5;.Das innerhalb des verschlüsselten TLS-Tunnels
verwendete Authentifizierungsprotokoll. In unserem
Beispiel handelt es sich dabei um
auth=MSCHAPV2.Danach fügen Sie die folgende Zeile in
/etc/rc.conf ein:ifconfig_ath0="WPA DHCP"Zuletzt müssen Sie die Netzkarte noch
aktivieren:&prompt.root; /etc/rc.d/netif start
Starting wpa_supplicant.
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.20
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA2/802.11i privacy ON deftxkey UNDEF TKIP 2:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100WEPWEP (Wired Equivalent Privacy) ist Teil des
ursprünglichen 802.11-Standards. Es enthält
keinen Authentifzierungsmechanismus und verfügt
lediglich über eine schwache Zugriffskontrolle,
die sehr leicht geknackt werden kann.WEP kann über ifconfig
aktiviert werden:
- &prompt.root; ifconfig ath0 inet 192.168.1.100 netmask 255.255.255.0 ssid my_net \
- wepmode on weptxkey 3 wepkey 3:0x3456789012
+ &prompt.root; ifconfig ath0 ssid my_net wepmode on weptxkey 3 wepkey 3:0x3456789012 \
+ inet 192.168.1.100 netmask 255.255.255.0 Mit weptxkey geben Sie an,
welcher WEP-Schlüssel für für die
Datenübertragung verwendet wird (in unserem
Beispiel ist dies der dritte Schlüssel). Der
gleiche Schlüssel muss auch am Access Point
eingestellt sein.Mit wepkey legen Sie den zu
verwendenden WEP-Schlüssel in der Form
Nummer:Schlüssel fest.
Ist der Schlüssel "Nummer" nicht vorhanden, wird
automatisch Schlüssel 1
verwendet. Die Angabe von "Nummer" ist zwingend
nötig, wenn Sie einen anderen als den ersten
Schlüssel verwenden wollen.In Ihrer Konfiguration müssen Sie
0x3456789012 durch den an
Ihrem Access Point konfigurierten Schlüssel
ersetzen.Weitere Informationen finden Sie in der Manualpage
&man.ifconfig.8;.Das Programm wpa_supplicant
eignet sich ebenfalls dazu, WEP für Ihr drahtloses
Gerät zu aktivieren. Obige Konfiguration lässt
sich dabei durch die Aufnahme der folgenden Zeilen in die
Datei /etc/wpa_supplicant.conf
realisieren:network={
ssid="my_net"
key_mgmt=NONE
wep_key3=3456789012
wep_tx_keyidx=3
}Danach müssen Sie das Programm noch aufrufen:&prompt.root; wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)
Associated with 00:13:46:49:41:76Ad-hoc-ModusDer IBSS-Modus (auch als Ad-hoc-Modus bezeichnet), ist
für Punkt-zu-Punkt-Verbindungen vorgesehen. Um
beispielsweise eine Ad-hoc-Verbindung zwischen den Rechnern
A und B aufzubauen,
benötigen Sie lediglich zwei IP-Adressen und eine
SSID.Auf dem Rechner A geben Sie Folgendes
ein:
- &prompt.root; ifconfig ath0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mediaopt adhoc
+ &prompt.root; ifconfig ath0 ssid freebsdap mediaopt adhoc inet 192.168.0.1 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4
ether 00:11:95:c3:0d:ac
media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <adhoc>)
status: associated
ssid freebsdap channel 2 bssid 02:11:95:c3:0d:ac
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100Der adhoc-Parameter gibt an, dass die
Schnittstelle im IBSS-Modus läuft.Rechner B sollte nun in der Lage sein,
Rechner A zu finden:&prompt.root; ifconfig ath0 up scan
SSID BSSID CHAN RATE S:N INT CAPS
- freebsdap 02:11:95:c3:0d:ac 2 54M 19:0 100 IS
+ freebsdap 02:11:95:c3:0d:ac 2 54M 19:3 100 ISDer Wert I (Spalte CAPS) gibt an,
dass sich Rechner A im Ad-hoc-Modus befindet.
Nun müssen Sie nur noch Rechner B eine
unterschiedliche IP-Adresse zuweisen:
- &prompt.root; ifconfig ath0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap mediaopt adhoc
+ &prompt.root; ifconfig ath0 ssid freebsdap mediaopt adhoc inet 192.168.0.2 netmask 255.255.255.0
&prompt.root; ifconfig ath0
ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <adhoc>)
status: associated
ssid freebsdap channel 2 bssid 02:11:95:c3:0d:ac
authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100Damit sind die Rechner A und
B bereit und können untereinander
Daten austauschen.
+
+ &os; Host Access Points
+
+ Dieser Abschnitt ist noch nicht übersetzt.
+ Lesen Sie bitte
+ das Original in englischer Sprache. Wenn Sie helfen
+ wollen, diesen Abschnitt zu übersetzen, senden Sie bitte
+ eine E-Mail an die Mailingliste &a.de.translators;.
+
+
ProblembehandlungDie folgenden Auflistung zeigt, wie Sie einige
häufig auftretende Probleme bei der Einrichtung
Ihres drahtlosen Netzwerks beheben können.Wird Ihr Access Point bei der Suche nicht gefunden,
sollten Sie überprüfen, ob Sie bei Konfiguration
Ihres drahtlosen Geräts die Anzahl der Kanäle
beschränkt haben.Wenn Sie sich nicht mit Ihrem Access Point verbinden
können, sollten Sie überprüfen, ob die
Konfiguration Ihrer Station auch der des Access Points
entspricht. Achten Sie dabei speziell auf die
Authentifzierungsmethode und die Sicherheitsprotokolle.
Halten Sie Ihre Konfiguration so einfach wie möglich.
Verwenden Sie ein Sicherheitsprotokoll wie WPA oder WEP,
sollten Sie testweise Ihren Access Point auf
offene Authentifizierung und
keine Sicherheit einstellen.
Danach versuchen Sie sich erneut mit Ihren Access Point
zu verbinden.Nachdem Sie sich mit dem Access Point verbinden
können, prüfen Sie die Sicherheitseinstellungen,
beginnend mit einfachen Werkzeugen wie &man.ping.8;.Das Programm wpa_supplicant
kann Ihnen bei der Fehlersuche helfen. Dazu starten
Sie es manuell mit der Option und
durchsuchen anschließend die Protokollinformationen
nach eventuellen Fehlermeldungen.Zusätzlich gibt es auch zahlreiche
Low-Level-Debugging-Werkzeuge. Die Ausgabe von
Debugging-Informationen des 802.11 Protocol Support Layers
lassen sich mit dem Programm wlandebug
(das sich unter
/usr/src/tools/tools/net80211
befindet) aktivieren. Um beispielsweise während
der Suche nach Access Points und des Aufbaus von
802.11-Verbindungen
(Handshake) auftretende
Systemmeldungen auf die Konsole auszugeben, verwenden
Sie den folgenden Befehl:&prompt.root; wlandebug -i ath0 +scan+auth+debug+assoc
net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>Der 802.11-Layer liefert umfangreiche Statistiken,
die Sie mit dem Werkzeug wlanstats
abrufen können. Diese Statistiken sollten alle
Fehler identifizieren, die im 802.11-Layer auftreten.
Beachten Sie aber, dass einige Fehler bereits im
darunterliegenden Gerätetreiber auftreten und
daher in diesen Statistiken nicht enthalten sind. Wie
Sie Probleme des Gerätetreibers identifizieren,
entnehmen Sie bitte der Dokumentation Ihres
Gerätetreibers.Können Sie Ihr Problem durch diese
Maßnahmen nicht lösen, sollten Sie einen
Problembericht (PR) erstellen und die Ausgabe der weiter
oben genannten Werkzeuge in den Bericht aufnehmen.PavLucistnikBeigetragen von pav@FreeBSD.orgBluetoothBluetoothÜbersichtBluetooth ermöglicht die Bildung von persönlichen
Netzwerken über drahtlose Verbindungen bei einer maximalen
Reichweite von 10 Metern und operiert im unlizensierten
2,4-GHz-Band. Solche Netzwerke werden normalerweise spontan
gebildet, wenn sich mobile Geräte, wie Mobiltelefone,
Handhelds oder Notebooks miteinander verbinden. Im Gegensatz zu
Wireless LAN ermöglicht Bluetooth auch höherwertige
Dienste, wie FTP-ähnliche Dateiserver, Filepushing,
Sprachübertragung, Emulation von seriellen Verbindungen
und andere mehr.Der Bluetooth-Stack von &os; verwendet das
Netgraph-Framework (&man.netgraph.4;). Viele
Bluetooth-USB-Adapter werden durch den &man.ng.ubt.4;-Treiber
unterstützt. Auf dem Chip BCM2033
von Broadcom basierende Bluetooth-Geräte werden von den
Treibern &man.ubtbcmfw.4; sowie &man.ng.ubt.4; unterstützt.
Die Bluetooth-PC-Card 3CRWB60-A von 3Com verwendet den
&man.ng.bt3c.4;-Treiber. Serielle sowie auf UART basierende
Bluetooth-Geräte werden von &man.sio.4;, &man.ng.h4.4;
sowie &man.hcseriald.8; unterstützt. Dieses Kapitel
beschreibt die Verwendung von USB-Bluetooth-Adaptern.Die Bluetooth-Unterstützung aktivierenBluetooth-Unterstützung ist in der Regel als
Kernelmodul verfügbar. Damit ein Gerät funktioniert,
muss der entsprechende Treiber im Kernel geladen werden:&prompt.root; kldload ng_ubtIst das Bluetooth-Gerät beim Systemstart angeschlossen,
kann das entsprechende Modul auch von
/boot/loader.conf geladen werden:ng_ubt_load="YES"Schließen Sie Ihren USB-Adapter an, sollte eine
Meldung ähnlich der folgenden auf der Konsole (oder in
syslog) erscheinen:ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
wMaxPacketSize=49, nframes=6, buffer size=294Verwenden Sie &os; 6.0 oder eine 5.X-Version vor 5.5,
müssen Sie den Bluetooth-Stack manuell starten. Ab
&os; 5.5 beziehungsweise 6.1 und neuer wird der Stack hingegen
automatisch von &man.devd.8; gestartet.Kopieren Sie
/usr/share/examples/netgraph/bluetooth/rc.bluetooth
nach /etc/rc.bluetooth. Über dieses
Skript wird der Bluetooth-Stack gestartet und beendet. Es ist
empfehlenswert, den Bluetooth-Stack zu beenden, bevor Sie den
Adapter entfernen. Selbst wenn Sie dies nicht tun, kommt es
(normalerweise) zu keinem fatalen Fehler. Wenn Sie den
Bluetooth-Stack starten, erhalten Sie eine Meldung ähnlich
der folgenden:&prompt.root; /etc/rc.bluetooth start ubt0
BD_ADDR: 00:02:72:00:d4:1a
Features: 0xff 0xff 0xf 00 00 00 00 00
<3-Slot> <5-Slot> <Encryption> <Slot offset>
<Timing accuracy> <Switch> <Hold mode> <Sniff mode>
<Park mode> <RSSI> <Channel quality> <SCO link>
<HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
<Paging scheme> <Power control> <Transparent SCO data>
Max. ACL packet size: 192 bytes
Number of ACL packets: 8
Max. SCO packet size: 64 bytes
Number of SCO packets: 8HCIDas Host Controller Interface (HCI)Das Host Controller Interface
(HCI) bietet eine Befehlsschnittstelle zum Basisbandcontroller
und Linkmanager, sowie Zugriff auf den Hardwarestatus und die
Kontrollregister. Dadurch wird ein einheitlicher Zugriff auf
die Fähigkeiten des Bluetooth-Basisbands möglich. Die
HCI-Layer des Rechners tauschen Daten und Befehle mit der
HCI-Firmware der Bluetooth-Geräte aus. Über den
Host Controller Transport Layer-Treiber (also den physikalischen
Bus) können beide HCI-Layer miteinander
kommunizieren.Eine einzelne Netgraph-Gerätedatei vom Typ
hci wird für ein einzelnes
Bluetooth-Gerät erzeugt. Die HCI-Gerätedatei ist
normalerweise mit der Bluetooth-Gerätetreiberdatei
(downstream) sowie der L2CAP-Gerätedatei (upstream)
verbunden. Alle HCI-Operationen müssen über die
HCI-Gerätedatei und nicht über die Treiberdatei
erfolgen. Der Standardname für die HCI-Gerätedatei
(die in &man.ng.hci.4; beschrieben wird) lautet
devicehci.Eine der wichtigsten Aufgaben ist das Auffinden von sich
in Reichweite befindenden Bluetooth-Geräten. Diese
Funktion wird als inquiry bezeichnet.
Inquiry sowie andere mit HCI in Verbindung stehende Funktionen
werden von &man.hccontrol.8; zur Verfügung gestellt. Das
folgende Beispiel zeigt, wie man herausfindet, welche
Bluetooth-Geräte sich in Reichweite befinden. Eine solche
Abfrage dauert nur wenige Sekunden. Beachten Sie, dass ein
Gerät nur dann antwortet, wenn es sich im Modus
discoverable befindet.&prompt.user; hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:80:37:29:19:a4
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 00
Page Scan Mode: 00
Class: 52:02:04
Clock offset: 0x78ef
Inquiry complete. Status: No error [00]BD_ADDR stellt, ähnlich der
MAC-Adresse einer Netzkarte, die eindeutige Adresse eines
Bluetooth-Gerätes dar. Diese Adresse ist für die
Kommunikation mit dem Gerät nötig. Es ist aber auch
möglich, BD_ADDR einen Klartextnamen zuzuweisen. Die
Datei /etc/bluetooth/hosts enthält
Informationen über die bekannten Bluetooth-Rechner. Das
folgende Beispiel zeigt, wie man den Klartextnamen eines
entfernten Geräts in Erfahrung bringen kann:&prompt.user; hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
BD_ADDR: 00:80:37:29:19:a4
Name: Pav's T39Wenn Sie ein entferntes Bluetooth-Gerät abfragen, wird
dieses Ihren Rechner unter dem Namen
your.host.name (ubt0) finden. Dieser Name kann
aber jederzeit geändert werden.Bluetooth ermöglicht Punkt-zu-Punkt-Verbindungen (an
denen nur zwei Bluetooth-Geräte beteiligt sind), aber auch
Punkt-zu-Multipunkt-Verbindungen, bei denen eine Verbindung von
mehreren Bluetooth-Geräten gemeinsam genutzt wird. Das
folgende Beispiel zeigt, wie man die aktiven
Basisbandverbindungen des lokalen Gerätes anzeigen kann:&prompt.user; hccontrol -n ubt0hci read_connection_list
Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State
00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPENEin connection handle ist für die
Beendigung einer Basisbandverbindung nützlich. Im
Normalfall werden inaktive Verbindungen aber automatisch vom
Bluetooth-Stack getrennt.&prompt.root; hccontrol -n ubt0hci disconnect 41
Connection handle: 41
Reason: Connection terminated by local host [0x16]Rufen Sie hccontrol help auf, wenn Sie
eine komplette Liste aller verfügbaren HCI-Befehle
benötigen. Die meisten dieser Befehle müssen nicht
als root ausgeführt werden.L2CAPDas Logical Link Control and Adaptation Protocol (L2CAP)Das Logical Link Control and Adaptation
Protocol (L2CAP) bietet
höherwertigen Protokollen verbindungsorientierte und
verbindungslose Datendienste an. Dazu gehören auch
Protokollmultiplexing, Segmentierung und Reassemblierung.
L2CAP erlaubt höherwertigen Protokollen und Programmen den
Versand und Empfang von L2CAP-Datenpaketen mit einer Länge
von bis zu 64 Kilobytes.L2CAP arbeitet kanalbasiert. Ein
Kanal ist eine logische Verbindung innerhalb einer
Basisbandverbindung. Jeder Kanal ist dabei an ein einziges
Protokoll gebunden. Mehrere Geräte können an das
gleiche Protokoll gebunden sein, es ist aber nicht möglich,
einen Kanal an mehrere Protokolle zu binden. Jedes über
einen Kanal ankommende L2CAP-Paket wird an das entsprechende
höherwertige Protokoll weitergeleitet. Mehrere Kanäle
können sich die gleiche Basisbandverbindung teilen.Eine einzelne Netgraph-Gerätedatei vom Typ
l2cap wird für ein einzelnes
Bluetooth-Gerät erzeugt. Die L2CAP-Gerätedatei ist
normalerweise mit der Bluetooth-HCI-Gerätedatei
(downstream) sowie der Bluetooth-Socket-Gerätedatei
(upstream) verbunden. Der Standardname für die
L2CAP-Gerätedatei, die in &man.ng.l2cap.4; beschrieben
wird, lautet devicel2cap.Ein nützlicher Befehl zum Anpingen von anderen
Geräten ist &man.l2ping.8;. Einige Bluetooth-Geräte
senden allerdings nicht alle erhaltenen Daten zurück. Die
Ausgabe 0 bytes ist also kein Fehler:&prompt.root; l2ping -a 00:80:37:29:19:a4
0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0Das Programm &man.l2control.8; liefert Informationen
über L2CAP-Dateien. Das folgende Beispiel zeigt, wie man
die Liste der logischen Verbindungen (Kanäle) sowie die
Liste der Basisbandverbindungen abfragen kann:&prompt.user; l2control -a 00:02:72:00:d4:1a read_channel_list
L2CAP channels:
Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State
00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN
&prompt.user; l2control -a 00:02:72:00:d4:1a read_connection_list
L2CAP connections:
Remote BD_ADDR Handle Flags Pending State
00:07:e0:00:0b:ca 41 O 0 OPEN&man.btsockstat.1; ist ein weiteres Diagnoseprogramm. Es
funktioniert analog zu &man.netstat.1;, arbeitet aber mit
Bluetooth-Datenstrukturen. Das folgende Beispiel zeigt die
gleiche Liste der logischen Verbindungen wie &man.l2control.8;
im vorherigen Beispiel.&prompt.user; btsockstat
Active L2CAP sockets
PCB Recv-Q Send-Q Local address/PSM Foreign address CID State
c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN
Active RFCOMM sessions
L2PCB PCB Flag MTU Out-Q DLCs State
c2afe900 c2b53380 1 127 0 Yes OPEN
Active RFCOMM sockets
PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State
c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPENDas RFCOMM-ProtokollRFCOMMDas RFCOMM-Protokoll emuliert serielle Verbindungen
über das L2CAP-Protokoll. Es basiert auf dem ETSI-Standard
TS 07.10. Bei RFCOMM handelt es sich um ein einfaches
Transportprotokoll, das um Funktionen zur Emulation der
9poligen Schaltkreise von mit RS-232 (EIATIA-232-E) kompatiblen
seriellen Ports ergänzt wurde. RFCOMM erlaubt bis zu 60
simultane Verbindungen (RFCOMM-Kanäe) zwischen zwei
Bluetooth-Geräten.Eine RFCOMM-Kommunikation besteht aus zwei Anwendungen (den
Kommunikationsendpunkten), die über das
Kommunikationssegment miteinander verbunden sind. RFCOMM
unterstützt Anwendungen, die auf serielle Ports angewiesen
sind. Das Kommunikationssegment entspricht der (direkten)
Bluetooth-Verbindung zwischen den beiden Geräten.RFCOMM kümmert sich um die direkte Verbindung von zwei
Geräten, oder um die Verbindung zwischen einem Gerät
und einem Modem (Netzwerkverbindung). RFCOMM unterstützt
auch andere Konfigurationen. Ein Beispiel dafür sind
Module, die drahtlose Bluetooth-Geräte mit einer
verkabelten Schnittstelle verbinden können.Unter &os; wurde das RFCOMM-Protokoll im Bluetooth Socket-Layer
implementiert.PairingErstmaliger Verbindungsaufbau zwischen zwei
Bluetooth-Geräten (Pairing)
In der Voreinstellung nutzt Bluetooth keine
Authentifizierung, daher kann sich jedes Bluetoothgerät mit
jedem anderen Gerät verbinden. Ein Bluetoothgerät
(beispielsweise ein Mobiltelefon) kann jedoch für einen
bestimmten Dienst (etwa eine Einwählverbindung) eine
Authentifizierung anfordern. Bluetooth verwendet zu diesem
Zweck PIN-Codes. Ein PIN-Code ist ein
maximal 16 Zeichen langer ASCII-String. Damit eine Verbindung
zustande kommt, muss auf beiden Geräten der gleiche
PIN-Code verwendet werden. Nachdem der Code eingegeben wurde,
erzeugen beide Geräte einen link key,
der auf den Geräten gespeichert wird. Beim nächsten
Verbindungsaufbau wird der zuvor erzeugte Link Key verwendet.
Diesen Vorgang bezeichnet man als
Pairing. Geht der Link Key auf
einem Gerät verloren, muss das Pairing wiederholt
werden.Der &man.hcsecd.8;-Daemon verarbeitet alle
Bluetooth-Authentifzierungsanforderungen und wird über die
Datei /etc/bluetooth/hcsecd.conf
konfiguriert. Der folgende Ausschnitt dieser Datei zeigt die
Konfiguration für ein Mobiltelefon, das den PIN-Code
1234 verwendet:device {
bdaddr 00:80:37:29:19:a4;
name "Pav's T39";
key nokey;
pin "1234";
}Von der Länge abgesehen, unterliegen PIN-Codes keinen
Einschränkungen. Einige Geräte, beispielsweise
Bluetooth-Headsets, haben einen festen PIN-Code eingebaut. Die
Option sorgt dafür, dass der
&man.hcsecd.8;-Daemon im Vordergrund läuft. Dadurch kann
der Ablauf einfach verfolgt werden. Stellen Sie das entfernte
Gerät auf receive pairing
und initiieren Sie die Bluetoothverbindung auf dem entfernten
Gerät. Sie erhalten die Meldung, dass Pairing akzeptiert
wurde und der PIN-Code benötigt wird. Geben Sie den
gleichen PIN-Code ein, den Sie in
hcsecd.conf festgelegt haben. Ihr Computer
und das entfernte Gerät sind nun miteinander verbunden.
Alternativ können Sie das Pairing auch auf dem entfernten
Gerät initiieren.Unter &os; 5.5, 6.1 und neuer können Sie
hcsecd durch das Einfügen der
folgenden Zeile in /etc/rc.conf
beim Systemstart automatisch aktivieren:hcsecd_enable="YES"Es folgt nun eine beispielhafte Ausgabe
des hcsecd-Daemons:hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4SDPDas Service Discovery Protocol (SDP)Das Service Discovery Protocol
(SDP) erlaubt es Clientanwendungen, von Serveranwendungen
angebotene Dienste sowie deren Eigenschaften abzufragen. Zu
diesen Eigenschaften gehören die Art oder die Klasse der
angebotenen Dienste sowie der Mechanismus oder das Protokoll,
die zur Nutzung des Dienstes notwendig sind.SDP ermöglicht Verbindungen zwischen einem SDP-Server
und einem SDP-Client. Der Server enthält eine Liste mit
den Eigenschaften der vom Server angebotenen Dienste. Jeder
Eintrag beschreibt jeweils einen einzigen Serverdienst. Ein
Client kann diese Informationen durch eine SDP-Anforderung
vom SDP-Server beziehen. Wenn der Client oder eine Anwendung
des Clients einen Dienst nutzen will, muss eine seperate
Verbindung mit dem Dienstanbieter aufgebaut werden. SDP bietet
einen Mechanismus zum Auffinden von Diensten und deren
Eigenschaften an, es bietet aber keine Mechanismen zur Verwendung
dieser Dienste.Normalerweise sucht ein SDP-Client nur nach Diensten, die
bestimmte geforderte Eigenschaften erfüllen. Es ist aber
auch möglich, anhand der Dienstbeschreibungen eine
allgemeine Suche nach den von einem Server angebotenen Diensten
durchzuführen. Diesen Vorgang bezeichnet man als
Browsing.Der Bluetooth-SDP-Server &man.sdpd.8; und der
Kommandozeilenclient &man.sdpcontrol.8; sind bereits in der
Standardinstallation von &os; enthalten. Das folgende Beispiel
zeigt, wie eine SDP-Abfrage durchgeführt wird:&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec browse
Record Handle: 00000000
Service Class ID List:
Service Discovery Server (0x1000)
Protocol Descriptor List:
L2CAP (0x0100)
Protocol specific parameter #1: u/int/uuid16 1
Protocol specific parameter #2: u/int/uuid16 1
Record Handle: 0x00000001
Service Class ID List:
Browse Group Descriptor (0x1001)
Record Handle: 0x00000002
Service Class ID List:
LAN Access Using PPP (0x1102)
Protocol Descriptor List:
L2CAP (0x0100)
RFCOMM (0x0003)
Protocol specific parameter #1: u/int8/bool 1
Bluetooth Profile Descriptor List:
LAN Access Using PPP (0x1102) ver. 1.0
... und so weiter. Beachten Sie, dass jeder Dienst eine
Liste seiner Eigenschaften (etwa den RFCOMM-Kanal)
zurückgibt. Je nach dem, welche Dienste Sie
benötigen, sollten Sie sich einige dieser Eigenschaften
notieren. Einige Bluetooth-Implementationen unterstützen
kein Service Browsing und geben
daher eine leere Liste zurück. Ist dies der Fall, ist es
dennoch möglich, nach einem bestimmten Dienst zu suchen.
Das folgende Beispiel demonstriert die Suche nach dem
OBEX Object Push (OPUSH) Dienst:&prompt.user; sdpcontrol -a 00:01:03:fc:6e:ec search OPUSHUnter &os; ist es die Aufgabe des &man.sdpd.8;-Servers,
Bluetooth-Clients verschiedene Dienste anzubieten. Unter
&os; 5.5, 6.1 und neuer können Sie dazu die folgende
Zeile in die Datei /etc/rc.conf
einfügen:sdpd_enable="YES"Nun kann der sdpd-Daemon durch
folgene Eingabe gestartet werden:&prompt.root; /etc/rc.d/sdpd startUnter &os; 6.0 und &os; 5.X-Versionen vor 5.5 ist
sdpd nicht in die &os;-Startskripten
integriert. Daher müssen Sie den Damon durch folgende
Eingabe manuell starten:&prompt.root; sdpdDer lokale Server, der den entfernten Clients
Bluetooth-Dienste anbieten soll, bindet diese Dienste an den
lokalen SDP-Daemon. Ein Beispiel für eine solche
Anwendung ist &man.rfcomm.pppd.8;. Einmal gestartet, wird der
Bluetooth-LAN-Dienst an den lokalen SDP-Daemon gebunden.Die Liste der vorhandenen Dienste, die am lokalen SDP-Server
registriert sind, lässt sich durch eine SDP-Abfrage
über einen lokalen Kontrollkanal abfragen:&prompt.root; sdpcontrol -l browseEinwahlverbindungen (Dial-Up Networking (DUN)) oder
Netzwerkverbindungen mit PPP (LAN)-Profilen einrichtenDas
Dial-Up Networking (DUN)-Profil
wird vor allem für Modems und Mobiltelefone verwendet.
Dieses Profil ermöglicht folgende Szenarien:Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computer als drahtloses Modem, um sich
über einen Einwahlprovider mit dem Internet zu verbinden
oder andere Einwahldienste zu benutzen.Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computers, um auf Datenabfragen zu
reagieren.Der Zugriff auf ein Netzwerk über das PPP (LAN)-Profil
kann in folgenden Situationen verwendet werden:Den LAN-Zugriff für ein einzelnes
Bluetooth-GerätDen LAN-Zugriff für mehrere
Bluetooth-GeräteEine PC-zu-PC-Verbindung (unter Verwendung
einer PPP-Verbindung über eine emulierte serielle
Verbindung)Beide Profile werden unter &os; durch &man.ppp.8; sowie
&man.rfcomm.pppd.8; implementiert - einem Wrapper, der
RFCOMM Bluetooth-Verbindungen unter PPP nutzbar macht. Bevor
ein Profil verwendet werden kann, muss ein neuer PPP-Abschnitt
in /etc/ppp/ppp.conf erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;.Im folgenden Beispiel verwenden wir &man.rfcomm.pppd.8;, um
eine RFCOMM-Verbindung zu einem entfernten Gerät mit der
BD_ADDR 00:80:37:29:19:a4 auf dem
RFCOMM-Kanal DUN aufzubauen. Die aktuelle
RFCOMM-Kanalnummer erhalten Sie vom entfernten Gerät
über SDP. Es ist auch möglich, manuell einen
RFCOMM-Kanal festzulegen. In diesem Fall führt
&man.rfcomm.pppd.8; keine SDP-Abfrage durch. Verwenden Sie
&man.sdpcontrol.8;, um die RFCOMM-Kanäle des entfernten
Geräts herauszufinden.&prompt.root; rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialupDer &man.sdpd.8;-Server muss laufen, damit ein Netzzugriff
mit dem PPP (LAN)-Profil möglich ist. Außerdem muss
für den LAN-Client ein neuer Eintrag in
/etc/ppp/ppp.conf erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;. Danach starten Sie den RFCOMM PPP-Server
über eine gültige RFCOMM-Kanalnummer. Der
RFCOMM PPP-Server bindet dadurch den Bluetooth-LAN-Dienst an den
lokalen SDP-Daemon. Das folgende Beispiel zeigt Ihnen, wie man
den RFCOMM PPP-Server startet.&prompt.root; rfcomm_pppd -s -C 7 -l rfcomm-serverOBEXDas Profil OBEX-Push (OPUSH)OBEX ist ein häufig verwendetes Protokoll für den
Dateitransfer zwischen Mobilgeräten. Sein Hauptzweck ist
die Kommunikation über die Infrarotschnittstelle. Es dient
daher zum Datentransfer zwischen Notebooks oder PDAs sowie zum
Austausch von Visitenkarten oder Kalendereinträgen zwischen
Mobiltelefonen und anderen Geräten mit PIM-Funktionen.Server und Client von OBEX werden durch das Softwarepaket
obexapp bereitgestellt, das als Port
comms/obexapp verfügbar
ist.Mit dem OBEX-Client werden Objekte zum OBEX-Server geschickt
oder angefordert. Ein Objekt kann etwa eine Visitenkarte oder
ein Termin sein. Der OBEX-Client fordert über SDP die
Nummer des RFCOMM-Kanals vom entfernten Gerät an. Dies
kann auch durch die Verwendung des Servicenamens anstelle der
RFCOMM-Kanalnummer erfolgen. Folgende Dienste werden
unterstützt: IrMC, FTRN und OPUSH. Es ist möglich,
den RFCOMM-Kanal als Nummer anzugeben. Es folgt nun ein
Beispiel für eine OBEX-Sitzung, bei der ein
Informationsobjekt vom Mobiltelefon angefordert und ein neues
Objekt (hier eine Visitenkarte) an das Telefonbuch des
Mobiltelefons geschickt wird:&prompt.user; obexapp -a 00:80:37:29:19:a4 -C IrMC
obex> get telecom/devinfo.txt
Success, response: OK, Success (0x20)
obex> put new.vcf
Success, response: OK, Success (0x20)
obex> di
Success, response: OK, Success (0x20)Um OBEX-Push-Dienste anbieten zu können, muss der
sdpd-Server gestartet sein. Ein
Wurzelverzeichnis, in dem alle ankommenden Objekt gespeichert
werden, muss zusätzlich angelegt werden. In der
Voreinstellung ist dies /var/spool/obex.
Starten Sie den OBEX-Server mit einer gültigen Kanalnummer.
Der OBEX-Server registriert nun den OBEX-Push-Dienst mit dem
lokalen SDP-Daemon. Um den OBEX-Server zu starten, geben Sie
Folgendes ein:&prompt.root; obexapp -s -C 10Das Profil Serial-Port (SPP)Durch dieses Profil können Bluetooth-Geräte RS232-
(oder damit kompatible) serielle Kabelverbindungen emulieren.
Anwendungen sind dadurch in der Lage, über eine virtuelle
serielle Verbindung Bluetooth als Ersatz für eine
Kabelverbindung zu nutzen.Das Profil Serial-Port wird durch &man.rfcomm.sppd.1;
verwirklicht. Pseudo-tty wird hier als virtuelle serielle
Verbindung verwendet. Das folgende Beispiel zeigt, wie man sich
mit einem entfernten Serial-Port-Dienst verbindet. Beachten
Sie, dass Sie den RFCOMM-Kanal nicht angeben müssen, da
&man.rfcomm.sppd.1; diesen über SDP vom entfernten
Gerät abfragen kann. Wenn Sie dies nicht wollen,
können Sie einen RFCOMM-Kanal auch manuell festlegen.&prompt.root; rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
rfcomm_sppd[94692]: Starting on /dev/ttyp6...Sobald die Verbindung hergestellt ist, kann pseudo-tty als
serieller Port verwenden werden.&prompt.root; cu -l ttyp6ProblembehandlungEin entferntes Gerät kann keine Verbindung
aufbauenEinige ältere Bluetooth-Geräte unterstützen
keinen Rollentausch. Wenn &os; eine neue Verbindung
akzeptiert, wird versucht, die Rolle zu tauschen, um zum
Master zu werden. Geräte, die dies nicht
unterstützen, können keine Verbindung aufbauen.
Beachten Sie, dass der Rollentausch ausgeführt wird,
sobald eine neue Verbindung aufgebaut wird, daher ist es
nicht möglich, das entfernte Gerät zu fragen, ob es
den Rollentausch unterstützt. Dieses Verhalten von &os;
kann aber durch eine HCI-Option geändert werden:&prompt.root; hccontrol -n ubt0hci write_node_role_switch 0Wo finde ich genaue Informationen darüber, was
schiefgelaufen ist?Verwenden Sie hcidump,
das Sie über den Port comms/hcidump installieren
können. hcidump hat
Ähnlichkeiten mit &man.tcpdump.1;. Es dient zur Anzeige
der Bluetooth-Pakete in einem Terminal oder zur Speicherung
der Pakete in einer Datei (Dump).AndrewThompsonGeschrieben von LAN-Kopplung mit einer BridgeEinführungSubnetzBridgeManchmal ist es nützlich, ein physikalisches Netzwerk
(wie ein Ethernetsegment) in zwei separate Netzwerke
aufzuteilen, ohne gleich IP-Subnetze zu erzeugen, die über
einen Router miteinander verbunden sind. Ein Gerät, das
zwei Netze auf diese Weise verbindet, wird als
Bridge bezeichnet. Jedes FreeBSD-System
mit zwei Netzkarten kann als Bridge fungieren.Die Bridge arbeitet, indem sie die MAC Layeradressen
(Ethernet Adressen) der Geräte in ihren
Netzwerksegmenten lernt. Der Verkehr wird nur dann zwischen
zwei Segmenten weitergeleitet, wenn sich Sender und
Empfänger in verschiedenen Netzwerksegmenten
befinden.In vielerlei Hinsicht entspricht eine Bridge daher einem
Ethernet-Switch mit sehr wenigen Ports.Situationen, in denen Bridging
angebracht istEs gibt zahlreiche Situationen, in denen der Einsatz
einer Bridge sinnvoll ist:Verbinden von NetzwerkenDie Hauptaufgabe einer Bridge ist die Verbindung von zwei
oder mehreren Netzwerksegmenten zu einem gemeinsamen Netzwerk.
Es ist oft sinnvoller, eine hostbasierte Bridge anstelle
normaler Netzwerkkomponenten (wie Kabelverbindungen),
Firewalls oder Pseudonetzwerken über die
Schnittstelle einer virtuellen Maschine einzusetzen.
Eine Bridge kann außerdem ein drahtloses Gerät mit
einem Kabelnetzwerk verbinden. Diese Fähigkeit der
Bridge wird als HostAP-Modus
bezeichnet. Die Bridge agiert in diesem Fall als
Access Point für das drahtlose Gerät.Filtering/Traffic Shaping FirewallFirewallNATHäufig kommt es vor, dass Firewallfunktionen
benötigt werden, ohne dass Routing oder
Network Adress Translation
(NAT) verwendet werden soll.Ein Beispiel dafür wäre ein kleines Unternehmen,
das über DSL oder ISDN an seinen ISP angebunden ist. Es
verfügt über 13 weltweit erreichbare IP-Adressen,
sein Netzwerk besteht aus 10 Rechnern. In dieser Situation
ist der Einsatz von Subnetzen sowie einer routerbasierten
Firewall schwierig.RouterDSLISDNEine brigdebasierte Firewall kann konfiguriert und in den
ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne
dass Sie sich um IP-Adressen kümmern müssen.NetzwerküberwachungEine Bridge kann zwei Netzwerksegmente miteinander
verbinden und danach alle Ethernet-Rahmen überprüfen,
die zwischen den beiden Netzwerksegmenten ausgetauscht werden.
Dazu verwendet man entweder &man.bpf.4;/&man.tcpdump.1; auf
dem Netzgerät der Bridge oder schickt Kopien aller
Rahmen an ein zusätzliches Netzgerät (den sogenannten
Span Port).Layer 2-VPNZwei Ethernetnetzwerke können über einen IP-Link
miteinander verbunden werden, indem Sie die beiden Netzwerke
über einen EtherIP-Tunnel koppeln oder eine
&man.tap.4;-basierte Lösung wie OpenVPN einsetzen.Layer 2-RedundanzDie Systeme eines Netzwerks können redundant
miteinander verbunden sein. In diesem Fall verwenden Sie das
Spanning Tree Protocol, um
redundante Pfade zu blockieren. Damit ein Ethernetnetzwerk
korrekt arbeitet, darf immer nur ein aktiver Pfad zwischen
zwei Geräten des Netzwerks existieren. Aufgabe des
Spanning Tree Protocols ist es daher, Schleifen zu entdecken
und redundante Links in den Status
blockiert zu versetzen. Fällt ein
aktiver Link aus, so berechnet das Protokoll einen neuen
Pfad. Dazu wird ein blockierter Pfad in den Status
aktiv versetzt, damit alle Systeme des
Netzwerks wieder miteinander kommunizieren können.KernelkonfigurationDieser Abschnitt beschreibt nur die
&man.if.bridge.4;-Bridge-Implementierung. Ein
Netgraph-Bridge-Treiber ist ebenfalls verfügbar, wird
hier aber nicht behandelt. Lesen Sie die Manualpage
&man.ng.bridge.4;, wenn Sie diesen Treiber einsetzen
wollen.Bei diesem Treiber handelt es sich um ein
Kernelmodul, das von &man.ifconfig.8; automatisch geladen
wird, wenn ein Bridge-Interface erzeugt wird. Alternativ ist
es aber auch möglich, die Unterstützung für
den Treiber in Ihren Kernel zu kompilieren. Dazu fügen
Sie die Zeile device if_bridge in Ihre
Kernelkonfigurationsdatei ein und bauen danach den Kernel
neu.Paketfilter können mit allen Firewallpaketen verwendet
werden, die das &man.pfil.9;-Framework benutzen. Die Firewall
kann dabei entweder als Kernelmodul geladen oder in den Kernel
kompiliert werden.Eine Bridge kann auch als Traffic
Shaper verwendet werden, wenn Sie
&man.altq.4; oder &man.dummynet.4; einsetzen.Die LAN-Kopplung aktivierenEine Bridge wird durch das Klonen von Schnittstellen
erzeugt. Um eine Bridge zu erzeugen, verwenden Sie den Befehl
&man.ifconfig.8;. Ist der Bridge-Treiber nicht in Ihren Kernel
kompiliert, wird er automatisch geladen.&prompt.root; ifconfig bridge create
bridge0
&prompt.root; ifconfig bridge0
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 96:3d:4b:f1:79:7a
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0Im obigen Beispiel wird die Bridge erzeugt und erhält
automatisch eine zufällig generierte Ethernet-Adresse
zugewiesen. Die Parameter maxaddr sowie
timeout legen fest, wie viele MAC-Adressen
die Bridge in ihrer Forward-Tabelle halten kann beziehungsweise
wie viele Sekunden jeder Eintrag erhalten bleiben soll, nachdem
er zuletzt verwendet wurde. Die restlichen Parameter sind
für die Konfiguration von Spanning Tree notwendig.Im nächsten Schritt werden die Schnittstellen, die
die Bridge verbinden soll, zugewiesen. Damit die Bridge
Datenpakete weiterleiten kann, müssen sowohl die Bridge
als auch die Schnittstellen (der zu verbindenden
Netzwerksegmente) aktiviert sein:&prompt.root; ifconfig bridge0 addm fxp0 addm fxp1 up
&prompt.root; ifconfig fxp0 up
&prompt.root; ifconfig fxp1 upDanach ist die Bridge in der Lage, Ethernet-Rahmen zwischen
den Schnittstellen fxp0 und
fxp1 weiterzuleiten. Um diese
Konfiguration beim Systemstart automatisch zu aktivieren,
müssen Sie folgende Einträge in die Datei
/etc/rc.conf aufnehmen:cloned_interfaces="bridge0"
ifconfig_bridge0="addm fxp0 addm fxp1 up"
ifconfig_fxp0="up"
ifconfig_fxp1="up"Benötigen Sie für die Bridge eine IP-Adresse,
müssen Sie diese der Schnittstelle der Bridge zuweisen
(und nicht einer der Schnittstellen der gekoppelten
Netzwerksegmente). Dabei können Sie die IP-Adresse
sowohl statisch als auch dynamisch über DHCP
zuweisen:&prompt.root; ifconfig bridge0 inet 192.168.0.1/24Sie können der Bridge-Schnittstelle auch eine
IPv6-Adresse zuweisen.FirewallsfirewallNachdem ein Paketfilter aktiviert wurde, können
Datenpakete, die von den Schnittstellen der gekoppelten
Netzwerksegmente gesendet und empfangen werden, über
die Bridge weitergeleitet oder nach bestimmten Regeln
gefiltert oder auch komplett geblockt werden. Ist die
Richtung des Paketflusses wichtig, ist es am besten, eine
Firewall auf den Schnittstellen der einzelnen
Netzwerksegmente einzurichten und nicht auf der Bridge
selbst.Eine Bridge verfügt über verschiedene Optionen,
über die Sie die Weiterleitung von Nicht-IP- und
ARP-Paketen sowie den Einsatz von Layer 2-Firewalls
(mit IPFW) steuern können. Lesen Sie die Manualpage
&man.if.bridge.4;, wenn Sie diese Funktionen
benötigen.Spanning TreeDer Bridge-Treiber implementiert das Rapid
Spanning Tree Protocol (RSTP oder 802.1w), das
abwärtskompatibel zum veralteten Spanning
Tree Protocol (STP) ist. Spanning Tree
dient dazu, Schleifen in einer Netzwerktopologie zu entdecken
und zu entfernen. RSTP arbeitet dabei schneller als das
veraltete STP. RSTP tauscht Informationen mit
benachbarten Switchen aus, um Pakete korrekt weiterzuleiten
und eine Schleifenbildung zu verhindern.Die folgende Tabelle listet die von den verschiedenen
&os;-Versionen unterstützten Betriebsmodi auf:&os;-VersionSTP-ModusStandardmodus&os; 5.4—&os; 6.2STPSTP&os; 6.3+RSTP oder STPSTP&os; 7.0+RSTP oder STPRSTPSpanning Tree kann auf den Schnittstellen der
durch die Bridge verbundenen Netzwerksegmente über die
Option stp aktiviert werden. Für eine
Bridge, die die Schnittstellen fxp0 und
fxp1 verbindet, aktivieren Sie STP wie
folgt:&prompt.root; ifconfig bridge0 stp fxp0 stp fxp1
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether d6:cf:d5:a0:94:6d
id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 3 priority 128 path cost 200000 proto rstp
role designated state forwarding
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 4 priority 128 path cost 200000 proto rstp
role designated state forwardingDiese Bridge hat die Spanning-Tree-ID
00:01:02:4b:d4:50 und die Priorität
32768. Da diese ID mit der
Root-ID identisch ist, handelt es sich um die
Root-Bridge dieses Netzwerks.Auf einer anderen Bridge des Netzwerks ist Spanning Tree
ebenfalls aktiviert:bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 96:3d:4b:f1:79:7a
id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4
member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 4 priority 128 path cost 200000 proto rstp
role root state forwarding
member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>
port 5 priority 128 path cost 200000 proto rstp
role designated state forwardingDie Zeile root id 00:01:02:4b:d4:50 priority 32768
ifcost 400000 port 4 zeigt an, dass die Root-Bridge wie
im obigen Beispiel die ID 00:01:02:4b:d4:50
hat. Die Pfadkosten hin zur Root-Bridge betragen
400000, wobei der Pfad zur Root-Bridge
über Port 4 geht (der wiederum
der Schnittstelle fxp0
entspricht).Fortgeschrittene FunktionenDen Datenfluss rekonstruierenDie Bridge unterstützt den Monitormodus. Dabei
werden alle Pakete verworfen, nachdem sie von &man.bpf.4;
verarbeitet wurden. In diesem Modus erfolgt keine weitere
Bearbeitung und auch keine Weiterleitung von Datenpaketen.
Es ist daher möglich, die Eingabe von zwei oder mehr
Netzwerkschnittstellen in einen einzigen gemeinsamen
&man.bpf.4;-Stream zu vereinen. Ein solcher Datenstrom
ist beispielsweise nützlich, um den Datenverkehr für
""network taps"" zu rekonstruieren, die ihre RX/TX-Signale
über verschiedene Schnittstellen senden.Um die Eingabe von vier Netzwerkschnittstellen in einzigen
gemeinsamen Datenstrom zu vereinen, geben Sie Folgendes
ein:&prompt.root; ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up
&prompt.root; tcpdump -i bridge0Span PortsEine Kopie jedes Ethernet-Rahmens, der an der Bridge
ankommt, wird über einen festgelegten
Span Port verschickt.
Auf einer Bridge können
beliebig viele Span Ports festgelegt werden. Wird
eine Schnittstelle als Span Port konfiguriert, kann
sie nicht mehr als normaler Bridge-Port verwendet werden.
Eine derartige Konfiguration ist beispielsweise sinnvoll,
um den Datenverkehr, der in einem Netzwerk über die
Bridge läuft, auf einen Rechner zu übertragen,
der mit einem Span Port der Bridge verbunden
ist.Um eine Kopie aller Ethernet-Rahmen über die
Schnittstelle fxp4 zu verschicken,
geben Sie Folgendes ein:&prompt.root; ifconfig bridge0 span fxp4Private SchnittstellenEine private Schnittstelle leitet keine Daten an einen
Port weiter, bei dem es sich ebenfalls um eine private
Schnittstelle handelt. Der Datenverkehr wird dabei komplett
blockiert, auch Ethernet-Rahmen und ARP-Pakete werden nicht
weitergeleitet. Wollen Sie hingegen nur spezifische
Datenpakete blockieren, sollten Sie eine Firewall
einsetzen.Schnittstellen als sticky
kennzeichnenWenn die Schnittstelle eines über eine Bridge
verbundenen Netzwerksegments als
sticky gekennzeichnet wird,
werden alle dynamisch gelernten Adressen als statische Adressen
behandelt, sobald sie in den Forward-Cache der Bridge
aufgenommen wurden. Sticky-Einträge werden niemals aus
dem Cache entfernt oder ersetzt. Selbst dann nicht, wenn die
Adresse von einer anderen Schnittstelle verwendet wird. Sie
können dadurch die Vorteile statischer Adresseinträge
nutzen, ohne die Forward-Tabelle vor dem Einsatz der Bridge
mit statischen Einträgen füllen zu müssen.
Clients, die sich in einem bestimmten von der Bridge
verwalteten Segmente befinden, können dabei nicht in ein
anderes Segment wechseln.Ein weiteres Beispiel für den Einsatz von
Sticky-Adressen wäre die Kombination einer Bridge mit
mehreren VLANs, um einen Router zu konfigurieren, der in
in der Lage ist, einzelne Kundennetzwerke voneinander zu
trennen, ohne IP-Adressbereiche zu verschwenden. Für das
folgende Beispiel nehmen wir an, dass sich der Client
CustomerA im VLAN
vlan100 und der Client
CustomerB im VLAN
vlan101 befinden. Die Bridge hat die
IP-Adresse 192.168.0.1 und ist
als Internet-Router konfiguriert.&prompt.root; ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101
&prompt.root; ifconfig bridge0 inet 192.168.0.1/24Beide Clients sehen 192.168.0.1 als Ihr Default-Gateway.
Da der Brücken-Cache sticky ist,
sind Sie nicht dazu in der Lage, die MAC-Adresse des
anderen Kunden zu spoofen und dessen Datenverkehr
abzufangen.Sie können die Kommunikation zwischen den VLANs
vollständig unterbinden, wenn Sie private Schnittstellen
(oder eine Firewall) einsetzen:&prompt.root; ifconfig bridge0 private vlan100 private vlan101Die Kunden sind nun komplett voneinander isoliert und
der komplette /24-Adressbereich
kann zugewiesen werden, ohne dass Sie Subnetze einsetzen
müssen.SNMP-MonitoringDie Schnittstelle der Bridge sowie die STP-Parameter
können durch den bereits im Basissystem enthaltenen
SNMP-Daemon überwacht werden. Die exportierten
Bridge-MIBs entsprechen den IETF-Standards, daher können
Sie einen beliebigen SNMP-Client oder ein beliebiges
Monitoring-Werkzeug einsetzen, um die benötigten Daten
zu erhalten.Auf dem Rechner, auf dem die Bridge konfiguriert ist,
aktivieren Sie die Zeile
begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"
in der Datei /etc/snmp.config und starten
danach den bsnmpd-Daemon.
Eventuell benötigen Sie noch weitere
Konfigurationsparameter wie Community-Namen und
Zugriffslisten. Die Konfiguration dieser Parameter wird
in den Manualpages &man.bsnmpd.1; sowie &man.snmp.bridge.3;
beschrieben.Die folgenden Beispiele verwenden das Softwarepaket
Net-SNMP (net-mgmt/net-snmp), um die Bridge
abzufragen. Alternativ können Sie dafür auch den
Port net-mgmt/bsnmptools
einsetzen. Auf dem SNMP-Client fügen Sie danach die
folgenden Zeilen in die Datei
$HOME/.snmp/snmp.conf ein, um die
MIB-Definitionen der Bridge in
Net-SNMP zu importieren:mibdirs +/usr/share/snmp/mibs
mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIBUm eine einzelne Bridge über den IETF BRIDGE-MIB
(RFC4188) zu überwachen, geben Sie Folgendes ein:&prompt.user; snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge
BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44
BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports
BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds
BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2
BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50
...
BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5)
BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1)
BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000
BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0
BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50
BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80
BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1
RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2)Der Wert der Variable
dot1dStpTopChanges.0 ist hier 2, die
STP-Topologie der Bridge wurde also bereits zweimal
geändert. Unter einer Änderung versteht man dabei
die Anpassung eines oder mehrerer Links und die Kalkulation
eines neuen Baums. Der Wert der Variable
dot1dStpTimeSinceTopologyChange.0 gibt an,
wann dies zuletzt geschah.Um mehrere Bridge-Schnittstellen zu überwachen,
können Sie den privaten BEGEMOT-BRIDGE-MIB
einsetzen:&prompt.user; snmpwalk -v 2c -c public bridge1.example.com
enterprises.fokus.begemot.begemotBridge
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge0" = STRING: bridge0
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge2" = STRING: bridge2
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge0" = STRING: e:ce:3b:5a:9e:13
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge2" = STRING: 12:5e:4d:74:d:fc
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge0" = INTEGER: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge2" = INTEGER: 1
...
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge0" = Timeticks: (116927) 0:19:29.27 centi-seconds
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge2" = Timeticks: (82773) 0:13:47.73 centi-seconds
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge0" = Counter32: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge2" = Counter32: 1
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge0" = Hex-STRING: 80 00 00 40 95 30 5E 31
BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 00 50 8B B8 C6 A9Um die über den
mib-2.dot1dBridge-Subtree überwachte
Bridge-Schnittstelle zu ändern, geben Sie Folgendes
ein:&prompt.user; snmpset -v 2c -c private bridge1.example.com
BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2
+
+ Link Aggregation and Failover
+
+ Dieser Abschnitt ist noch nicht übersetzt.
+ Lesen Sie bitte
+ das Original in englischer Sprache. Wenn Sie helfen
+ wollen, diesen Abschnitt zu übersetzen, senden Sie bitte
+ eine E-Mail an die Mailingliste &a.de.translators;.
+
+
Jean-FrançoisDockèsAktualisiert von AlexDupreReorganisiert und erweitert von Start und Betrieb von FreeBSD über ein Netzwerkplattenloser Arbeitsplatzplattenloser BetriebFreeBSD kann über ein Netzwerk starten und arbeiten, ohne
eine lokale Festplatte zu verwenden, indem es Dateisysteme eines
NFS-Servers in den eigenen Verzeichnisbaum
einhängt. Dazu sind, von den Standardkonfigurationsdateien
abgesehen, keine Systemänderungen nötig. Ein solches
System kann leicht installiert werden, da alle notwendigen
Elemente bereits vorhanden sind:Es gibt mindestens zwei Möglichkeiten, den Kernel
über das Netzwerk zu laden:PXE: Das
Preboot eXecution Environment System von
&intel; ist eine Art intelligentes Boot-ROM, das in
einigen Netzkarten oder Hauptplatinen verwendet wird.
Weitere Informationen finden Sie in &man.pxeboot.8;.
Der Port
Etherboot
(net/etherboot)
erzeugt ROM-fähigen Code, um einen Kernel über
das Netzwerk zu laden. Dieser Code kann entweder auf ein
Boot-PROM einer Netzkarte gebrannt werden, was von vielen
Netzkarten unterstützt wird. Oder er kann von einer
lokalen Diskette, Festplatte oder von einem laufenden
&ms-dos;-System geladen werden.Das Beispielskript
/usr/share/examples/diskless/clone_root
erleichtert die Erzeugung und die Wartung des
root-Dateisystems auf dem Server. Das Skript muss
wahrscheinlich angepasst werden, dennoch werden Sie schnell zu
einem Ergebnis kommen.Die Startdateien, die einen plattenlosen Systemstart
erkennen und unterstützen, sind nach der Installation
in /etc vorhanden.Dateiauslagerungen können sowohl via
NFS als auch auf die lokale Platte
erfolgen.Es gibt verschiedene Wege, einen plattenlosen Rechner
einzurichten. Viele Elemente sind daran beteiligt, die fast
immer an den persönlichen Geschmack angepasst werden
können. Im folgenden Abschnitt wird die Installation
eines kompletten Systems beschrieben, wobei der
Schwerpunkt auf Einfachheit und Kompatibilität zu den
Standardstartskripten von FreeBSD liegt. Das beschriebene
System hat folgende Eigenschaften:Die plattenlosen Rechner haben ein gemeinsames
/- sowie ein gemeinsames
/usr-Dateisystem, die jeweils
schreibgeschützt sind.Das root-Dateisystem ist eine Kopie
eines Standardwurzelverzeichnisses von FreeBSD
(üblicherweise das des Servers), bei dem einige
Konfigurationsdateien durch für den plattenlosen
Betrieb geeignete Versionen ersetzt wurden.Für die Bereiche des root-Dateisystems, die
beschreibbar sein müssen, werden mit &man.md.4;
virtuelle Dateisysteme erzeugt. Dies bedeutet aber auch, dass
alle Veränderungen verloren gehen, wenn das System neu
gestartet wird.Der Kernel wird, in Abhängigkeit von der jeweiligen
Situation, entweder von Etherboot
oder von PXE transferiert und geladen.
Das hier beschriebene System ist nicht sicher. Es
sollte nur in einem gesicherten Bereich eines Netzwerks verwendet
werden und für andere Rechner nicht erreichbar sein.Alle Informationen in diesem Abschnitt wurden unter
&os; 5.2.1-RELEASE getestet.HintergrundinformationenDie Einrichtung von plattenlosen Rechnern ist einfach, aber
auch fehleranfällig. Der Grund dafür sind auftretende
Fehler, die sich oft nur schwer zuordnen lassen. Unter anderem
sind dafür folgende Umstände verantwortlich:Kompilierte Optionen haben zur Laufzeit unterschiedliche
Auswirkungen.Fehlermeldungen sind oft kryptisch oder fehlen
vollständig.Daher ist es nützlich, über die im Hintergrund
ablaufenden Mechanismen Bescheid zu wissen. Dadurch wird es
einfacher, eventuell auftretende Fehler zu beheben.Verschiedene Operationen müssen ausgeführt werden,
um ein System erfolgreich zu starten:Der Rechner benötigt einige Startparameter, wie
seine IP-Adresse, die Namen ausführbarer Dateien, den
Servernamen sowie den root-Pfad. Für die
Übermittlung dieser Informationen wird entweder das
DHCP- oder das BOOTP-Protokoll verwendet.
Bei DHCP handelt es sich um eine
abwärtskompatible Erweiterung von BOOTP, die die
gleichen Portnummern und das gleiche Paketformat verwendet.
Es ist möglich, das System so zu konfigurieren,
dass es nur BOOTP verwendet. Das Serverprogramm
&man.bootpd.8; ist bereits im &os;-Basissystem enthalten.
DHCP hat im Vergleich zu BOOTP
allerdings mehrere Vorteile (bessere Konfigurationsdateien,
die Möglichkeit zur Verwendung von
PXE, sowie viele andere, die nicht in
direktem Zusammenhang mit dem plattenlosen Betrieb stehen).
Dieser Abschnitt beschreibt die Konfiguration mittels
DHCP. Wenn möglich, werden aber
entsprechende Beispiele für &man.bootpd.8;
angeführt. Die Beispielkonfiguration nutzt das
Softwarepaket ISC DHCP.Der Rechner muss ein oder mehrere Programme in den
lokalen Speicher laden. Dazu wird entweder
TFTP oder NFS
verwendet. Die Auswahl zwischen TFTP und
NFS erfolgt über das Setzen von
verschiedenen Kompilieroptionen. Ein häufig gemachter
Fehler ist es, Dateinamen für das falsche Protokoll
anzugeben: TFTP transferiert
normalerweise alle Dateien aus einem einzigen Verzeichnis
des Servers, und erwartet einen Pfad relativ zu diesem
Verzeichnis. NFS verlangt hingegen
absolute Dateipfade.Die möglichen Bootstrap-Programme und der Kernel
müssen initialisiert und ausgeführt werden. Dabei
gibt es zwei Möglichkeiten:PXE lädt &man.pxeboot.8;.
Dabei handelt es sich um eine modifizierte Version des
&os;-Laders der Boot-Phase drei. Der &man.loader.8;
beschafft alle für den Systemstart notwendigen
Parameter, und hinterlegt diese in der Kernelumgebung,
bevor er die Kontrolle übergibt. Es ist hier
möglich, den GENERIC-Kernel
zu verwenden.Etherboot lädt den
Kernel hingegen direkt. Dafür müssen Sie
allerdings einen Kernel mit spezifischen Optionen
erzeugen.PXE und
Etherboot sind zwar im
Großen und Ganzen gleichwertig, da der Kernel
aber viele Aufgaben an &man.loader.8; übergibt, sollte
bevorzugt PXE eingesetzt werden.Wenn Ihr BIOS und Ihre Netzkarten
PXE unterstützen, sollten Sie es
auch verwenden.Zuletzt muss der Rechner auf seine Dateisysteme
zugreifen können. Dafür wird stets
NFS verwendet.Weitere Informationen finden Sie in &man.diskless.8;.InstallationsanweisungenKonfiguration unter Verwendung von
ISC DHCPDHCPplattenloser BetriebDer ISC DHCP-Server kann
Anfragen sowohl von BOOTP als auch von DHCP beantworten.
isc-dhcp 3.0 ist nicht Teil
des Basissystems. Sie müssen es daher zuerst
installieren. Verwenden Sie dazu den Port
net/isc-dhcp3-server
oder das entsprechende Paket.Nachdem ISC DHCP installiert
ist, muss das Programm konfiguriert werden (normalerweise in
/usr/local/etc/dhcpd.conf). Im
folgenden Beispiel verwendet Rechner margauxEtherboot, während Rechner
corbieres PXE verwendet:
default-lease-time 600;
max-lease-time 7200;
authoritative;
option domain-name "example.com";
option domain-name-servers 192.168.4.1;
option routers 192.168.4.1;
subnet 192.168.4.0 netmask 255.255.255.0 {
use-host-decl-names on;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
host margaux {
hardware ethernet 01:23:45:67:89:ab;
fixed-address margaux.example.com;
next-server 192.168.4.4;
filename "/tftpboot/kernel.diskless";
option root-path "192.168.4.4:/data/misc/diskless";
}
host corbieres {
hardware ethernet 00:02:b3:27:62:df;
fixed-address corbieres.example.com;
next-server 192.168.4.4;
filename "pxeboot";
option root-path "192.168.4.4:/data/misc/diskless";
}
}
Diese Option
weist dhcpd an, den Wert der
host-Deklaration als Rechnernamen des
plattenlosen Rechners zu senden. Alternativ kann man der
host-Deklaration Folgendes
hinzufügen: option host-name
margauxDie Anweisung
next-server bestimmt den
TFTP- oder
NFS-Server, von dem der Loader oder
der Kernel geladen werden (in der Voreinstellung ist das
der DHCP-Server selbst).Die Anweisung
filename bestimmt die Datei, die
Etherboot als nächstes
lädt. Das genaue Format hängt von der
gewählten Transfermethode ab.
Etherboot kann sowohl mit
NFS als auch mit
TFTP kompiliert werden. In der
Voreinstellung wird der &os;-Port mit
NFS-Unterstützung kompiliert.
PXE verwendet TFTP,
daher wird im Beispiel ein relativer Dateipfad verwendet.
Dies kann aber, je nach Konfiguration des
TFTP-Servers, auch anders sein.
Beachten Sie, dass PXE
pxeboot lädt, und nicht den
Kernel. Es ist auch möglich, das Verzeichnis
/boot einer
&os;-CD-ROM von pxeboot laden zu
lassen. &man.pxeboot.8; kann einen
GENERIC-Kernel laden, dadurch ist es
möglich, PXE von einer entfernten
CD-ROM zu starten.Die Option
root-path bestimmt den Pfad des
root-Dateisystems in normaler NFS-Schreibweise. Wird
PXE verwendet, ist es möglich,
die IP-Adresse des Rechners wegzulassen, solange nicht
die Kerneloption BOOTP aktiviert wird. Der
NFS-Server entspricht in diesem Fall
dem TFTP-Server.Konfiguration bei Verwendung von BOOTPBOOTPplattenloser BetriebEs folgt nun eine der Konfiguration von DHCP
entsprechende Konfiguration (für einen Client) für
bootpd. Zu finden ist die
Konfigurationsdatei unter /etc/bootptab.
Beachten Sie bitte, dass
Etherboot mit der Option
NO_DHCP_SUPPORT kompiliert werden muss,
damit BOOTP verwendet werden kann. PXE
hingegen benötigt
DHCP. Der einzige offensichtliche
Vorteil von bootpd ist, dass es
bereits im Basissystem vorhanden ist..def100:\
:hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
:sm=255.255.255.0:\
:ds=192.168.4.1:\
:gw=192.168.4.1:\
:hd="/tftpboot":\
:bf="/kernel.diskless":\
:rp="192.168.4.4:/data/misc/diskless":
margaux:ha=0123456789ab:tc=.def100Ein Startprogramm unter Verwendung von
Etherboot erstellenEtherbootDie
Internetseite von Etherboot enthält
ausführliche Informationen, die zwar vor allem
für Linux gedacht sind, aber dennoch nützliche
Informationen enthalten. Im Folgenden wird daher nur grob
beschrieben, wie Sie Etherboot auf
einem FreeBSD-System einsetzen können.Als Erstes müssen Sie
net/etherboot als Paket
oder als Port installieren.Sie können Etherboot so
konfigurieren, dass TFTP anstelle von
NFS verwendet wird, indem Sie die Datei
Config im Quellverzeichnis von
Etherboot bearbeiten.Für unsere Installation verwenden wir eine
Startdiskette. Für Informationen zu anderen Methoden
(PROM oder &ms-dos;-Programme) lesen Sie bitte die
Dokumentation zu Etherboot.Um eine Startdiskette zu erzeugen, legen Sie eine Diskette
in das Laufwerk des Rechners ein, auf dem Sie
Etherboot installiert haben. Danach
wechseln Sie in das Verzeichnis src des
Etherboot-Verzeichnisbaums und geben
Folgendes ein:&prompt.root; gmake bin32/devicetype.fd0devicetype hängt vom Typ
der Ethernetkarte ab, über die der plattenlose Rechner
verfügt. Lesen Sie dazu NIC im
gleichen Verzeichnis, um den richtigen Wert für
devicetype zu bestimmen.Das System mit PXE startenIn der Voreinstellung lädt der
&man.pxeboot.8;-Loader den Kernel über
NFS. Soll stattdessen
TFTP verwendet werden, muss beim
Kompilieren die Option
LOADER_TFTP_SUPPORT in der Datei
/etc/make.conf eingetragen sein. Sehen
Sie sich die Datei
/usr/share/examples/etc/make.conf
für weitere Anweisungen an.Es gibt zwei Optionen für
make.conf, die nützlich sein
können, wenn Sie eine plattenlose serielle Konsole
einrichten wollen:
BOOT_PXELDR_PROBE_KEYBOARD, und
BOOT_PXELDR_ALWAYS_SERIAL.Um PXE beim Systemstart zu verwenden,
müssen Sie im BIOS des Rechner die
Option Über das Netzwerk starten
aktivieren. Alternativ können Sie während der
PC-Initialisierung auch eine Funktionstaste drücken.
Serverkonfiguration - TFTP und
NFSTFTPplattenloser BetriebNFSplattenloser BetriebWenn Sie PXE oder
Etherboot so konfiguriert haben,
dass diese TFTP verwenden, müssen
Sie auf dem Dateiserver tftpd
aktivieren:Erzeugen Sie ein Verzeichnis, in dem
tftpd seine Dateien ablegt,
beispielsweise /tftpboot.Fügen Sie folgende Zeile in
/etc/inetd.conf ein:tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpbootAnscheinend benötigen zumindest einige
PXE-Versionen die
TCP-Version von
TFTP. Sollte dies bei Ihnen der
Fall sein, fügen Sie eine zweite Zeile ein, in der
Sie dgram udp durch
stream tcp ersetzen.Weisen Sie inetd an, seine
Konfiguration erneut einzulesen (Damit der folgende
Befehl funktioniert, muss die Option
in der Datei
/etc/rc.conf vorhanden sein.):&prompt.root; /etc/rc.d/inetd restartSie können das Verzeichnis
/tftpboot an einem beliebigen Ort auf dem
Server ablegen. Stellen Sie aber sicher, dass Sie diesen Ort
sowohl in inetd.conf als auch in
dhcpd.conf eingetragen haben.Außerdem müssen Sie NFS aktivieren und die
entsprechenden Verzeichnisse exportieren.Fügen Sie folgende Zeile in
/etc/rc.conf ein:nfs_server_enable="YES"Exportieren Sie das Verzeichnis, in dem sich das
Wurzelverzeichnis für den plattenlosen Betrieb
befindet, indem Sie folgende Zeile in
/etc/exports einfügen (passen
Sie dabei den mountpoint
an und ersetzen Sie
margaux corbieres durch den
Namen Ihres plattenlosen Rechners):/data/misc -alldirs -ro margauxWeisen sie nun mountd an,
seine Konfigurationsdatei erneut einzulesen. Wenn Sie
NFS erst in der Datei
/etc/rc.conf aktivieren mussten,
sollten Sie stattdessen den Rechner neu starten. Dadurch
wird die Konfigurationsdatei ebenfalls neu eingelesen.
&prompt.root; /etc/rc.d/mountd restartEinen plattenlosen Kernel erzeugenplattenloser BetriebKernelkonfigurationWenn Sie Etherboot verwenden,
müssen Sie in die Kernelkonfigurationsdatei Ihres
plattenlosen Clients zusätzlich folgende Optionen
einfügen:options BOOTP # Use BOOTP to obtain IP address/hostname
options BOOTP_NFSROOT # NFS mount root file system using BOOTP infoAußerdem können Sie die Optionen
BOOTP_NFSV3,
BOOT_COMPAT sowie
BOOTP_WIRED_TO verwenden (sehen Sie sich
dazu auch die Datei NOTES an).Die Namen dieser Optionen sind historisch bedingt.
Sie ermöglichen eine unterschiedliche Verwendung von
DHCP und BOOTP innerhalb des Kernels.
Es ist auch möglich, eine strikte Verwendung von BOOTP
oder DHCP zu erzwingen.Erzeugen Sie den neuen Kernel (lesen Sie dazu auch
) und kopieren Sie ihn an den
in dhcpd.conf festgelegten Ort.Wenn Sie PXE verwenden, ist die
Erzeugung eines Kernels zwar nicht unbedingt nötig, sie
wird allerdings dennoch empfohlen. Die Aktivierung dieser
Optionen bewirkt, dass die Anzahl der möglichen
DHCP-Anforderungen während des
Kernelstarts erhöht wird. Ein kleiner Nachteil sind
eventuell auftretende Inkonsistenzen zwischen den neuen
Werten und den von &man.pxeboot.8; erhaltenen Werten. Der
große Vorteil dieser Variante ist es, dass dabei der
Rechnername gesetzt wird, den Sie ansonsten durch eine
andere Methode, beispielsweise in einer clientspezifischen
rc.conf-Datei festlegen müssten.
Damit der Kernel von
Etherboot geladen werden kann,
müssen device hints im
Kernel einkompiliert sein. Dazu setzen Sie normalerweise
folgende Option in die Kernelkonfigurationsdatei (sehen Sie
sich dazu auch die kommentierte Datei
NOTES an):hints "GENERIC.hints"Das root-Dateisystem erzeugenRoot-Dateisystemplattenloser BetriebSie müssen für den plattenlosen Rechner ein
root-Dateisystem erzeugen, und zwar an dem in
dhcpd.conf als
root-path festgelegten Ort.make world zum Füllen des
Dateisystems einsetzenDiese schnelle Methode installiert ein komplettes
jungfräuliches System (und nicht nur ein
root-Dateisystem) nach DESTDIR. Dazu
müssen Sie lediglich das folgende Skript
ausführen:#!/bin/sh
export DESTDIR=/data/misc/diskless
mkdir -p ${DESTDIR}
cd /usr/src; make buildworld && make buildkernel
cd /usr/src/etc; make distributionDanach müssen Sie noch die dadurch in
DESTDIR erzeugten Dateien
/etc/rc.conf sowie
/etc/fstab Ihren Wünschen
anpassen.Den Auslagerungsbereich konfigurierenFalls nötig, kann eine auf dem
NFS-Server liegende Datei als
Auslagerungsdatei eingerichtet werden.Eine NFS-Auslagerungsdatei
einrichtenDer Kernel unterstützt beim Systemstart keine
NFS-Auslagerungsdatei. Diese muss daher
in den Startskripten aktiviert werden, indem ein
beschreibbares Dateisystem eingehängt wird, um dort
die Auslagerungsdatei zu erzeugen und zu aktivieren. Um
eine Auslagerungsdatei zu erzeugen, gehen Sie wie folgt
vor:&prompt.root; dd if=/dev/zero of=/path/to/swapfile bs=1k count=1 oseek=100000Um die Auslagerungsdatei zu aktivieren, fügen Sie
folgende Zeile in rc.conf ein:swapfile=/path/to/swapfileVerschiedenesSchreibgeschütztes Dateisystem
/usrplattenloser Betrieb/usr schreibgeschütztWenn am plattenlosen Rechner X läuft, müssen
Sie die Konfigurationsdatei von
XDM anpassen, da Fehlermeldungen
in der Voreinstellung auf /usr
geschrieben werden.Der Server läuft nicht unter FreeBSDWenn das root-Dateisystem nicht auf einem
FreeBSD-Rechner liegt, muss das Dateisystem zuerst unter
FreeBSD erzeugt werden. Anschließend wird es
beispielsweise mit tar oder
cpio an den gewünschten Ort
kopiert.Dabei kann es Probleme mit den Gerätedateien
in /dev geben, die durch eine
unterschiedliche Darstellung der Major- und Minor-Number
von Geräten auf beiden Systemen hervorgerufen werden.
Eine Problemlösung besteht darin, das root-Verzeichnis
auf einem FreeBSD-Rechner einzuhängen und die
Gerätedateien dort mit &man.devfs.5; zu erzeugen.ISDN – diensteintegrierendes digitales NetzwerkISDNEine gute Quelle für Informationen zu ISDN ist die
ISDN-Seite von Dan Kegel.Welche Informationen finden Sie in diesem Abschnitt?Wenn Sie in Europa leben, könnte der Abschnitt
über ISDN-Karten für Sie interessant sein.Wenn Sie ISDN hauptsächlich dazu verwenden wollen, um
sich über einen Anbieter ins Internet einzuwählen,
sollten Sie den Abschnitt über Terminaladapter lesen.
Dies ist die flexibelste Methode, die auch die wenigsten
Probleme verursacht.Wenn Sie zwei Netzwerke miteinander verbinden, oder sich
über eine ISDN-Standleitung mit dem Internet verbinden
wollen, finden Sie entsprechende Informationen im Abschnitt
über Router und Bridges.Bei der Wahl der gewünschten Lösung sind die
entstehenden Kosten ein entscheidender Faktor. Die folgenden
Beschreibungen reichen von der billigsten bis zur teuersten
Variante.HellmuthMichaelisBeigetragen von ISDN-KartenISDNKartenDas ISDN-Subsystem von FreeBSD unterstützt den
DSS1/Q.931- (oder Euro-ISDN)-Standard nur für passive
Karten. Zusätzlich werden aber auch einige
aktive Karten unterstützt, bei denen die Firmware auch
andere Signalprotokolle unterstützt; dies schließt
auch die erste ISDN-Karte mit
Primärmultiplex-Unterstützung mit ein.isdn4bsd ermöglicht es
Ihnen, sich unter Nutzung von
IP over raw HDLC oder
synchronem PPP mit anderen ISDN-Routern zu
verbinden. Dazu verwenden Sie entweder Kernel-&man.ppp.8;
(via isppp, einem modifizierten
sppp-Treiber), oder Sie benutzen User-&man.ppp.8;. Wenn Sie
User-&man.ppp.8; verwenden, können Sie zwei oder mehrere
ISDN-B-Kanäle bündeln. Im Paket enthalten ist auch
ein Programm mit Anrufbeantworterfunktion sowie verschiedene
Werkzeuge, wie ein Softwaremodem, das 300 Baud
unterstützt.FreeBSD unterstützt eine ständig wachsende Anzahl
von PC-ISDN-Karten, die weltweit erfolgreich eingesetzt werden.
Von FreeBSD unterstützte passive ISDN-Karten enthalten
fast immer den ISAC/HSCX/IPAC ISDN-Chipsatz von Infineon
(ehemals Siemens). Unterstützt werden aber auch Karten mit
Cologne Chip (diese allerdings nur für den ISA-Bus),
PCI-Karten mit Winbond W6692 Chipsatz, einige Karten mit dem
Tiger 300/320/ISAC Chipsatz sowie einige Karten mit einem
herstellerspezifischen Chipsatz, wie beispielsweise die
Fritz!Card PCI V.1.0 und die Fritz!Card PnP von AVM.An aktiven ISDN-Karten werden derzeit die AVM B1 BRI-Karten
(ISA und PCI-Version) sowie die AVM T1 PRI-Karten (PCI-Version)
unterstützt.Informationen zu isdn4bsd finden
Sie im Verzeichnis
/usr/share/examples/isdn/ Ihres
FreeBSD-Systems, oder auf der
Internetseite
von isdn4bsd. Dort finden Sie auch
Verweise zu Tipps, Korrekturen, sowie weiteren Informationen,
wie dem
isdn4bsd-Handbuch.
Falls Sie an der Unterstützung eines zusätzlichen
ISDN-Protokolls, einer weiteren ISDN-Karte oder an einer anderen
Erweiterung von isdn4bsd interessiert
sind, wenden Sie sich bitte an &a.hm;.Für Fragen zur Installation, Konfiguration und zu
sonstigen Problemen von isdn4bsd gibt
es die Mailingliste &a.isdn.name;.ISDN-TerminaladapterTerminaladapterTerminaladapter (TA) sind für ISDN, was Modems für
analoge Telefonleitungen sind.ModemDie meisten Terminaladapter verwenden den
Standardbefehlssatz für Modems von Hayes (AT-Kommandos) und
können daher als Modemersatz verwendet werden.Ein Terminaladapter funktioniert prinzipiell wie ein Modem,
allerdings erfolgt der Verbindungsaufbau um einiges schneller.
Die Konfiguration von PPP entspricht
dabei exakt der eines Modems. Stellen Sie dabei allerdings
die serielle Geschwindigkeit so hoch wie möglich ein.
PPPDer Hauptvorteil bei der Verwendung eines Terminaladapters
zur Verbindung mit einem Internetanbieter ist die
Möglichkeit zur Nutzung von dynamischem PPP. Da
IP-Adressen immer knapper werden, vergeben die meisten Provider
keine statischen IP-Adressen mehr. Die meisten Router
unterstützen allerdings keine dynamische Zuweisung von
IP-Adressen.Der PPP-Daemon bestimmt die Stabilität und
Eigenschaften der Verbindung, wenn Sie einen Terminaladapter
verwenden. Daher können Sie unter FreeBSD einfach von
einer Modemverbindung auf eine ISDN-Verbindung wechseln, wenn
Sie PPP bereits konfiguriert haben. Allerdings bedeutet
dies auch, das bereits bestehende Probleme mit PPP auch unter
ISDN auftreten werden.Wenn Sie an maximaler Stabilität interessiert sind,
verwenden Sie Kernel-PPP, und
nicht das User-PPP.Folgende Terminaladapter werden von FreeBSD
unterstützt:Motorola BitSurfer und Bitsurfer ProAdtranDie meisten anderen Terminaladapter werden wahrscheinlich
ebenfalls funktionieren, da die Hersteller von Terminaladaptern
darauf achten, dass ihre Produkte den Standardbefehlssatz
möglichst gut unterstützen.Das wirkliche Problem mit einem externen Terminaladapter ist,
dass, ähnlich wie bei Modems, eine gute serielle Karte
eine Grundvoraussetzung ist.Sie sollten sich die
Anleitung für die Nutzung serieller Geräte unter
FreeBSD ansehen, wenn Sie detaillierte Informationen
über serielle Geräte und die Unterschiede zwischen
asynchronen und synchronen seriellen Ports benötigen.
Ein Terminaladapter, der an einem (asynchronen)
seriellen Standardport angeschlossen ist, beschränkt
Sie auf 115,2 Kbs. Dies
selbst dann, wenn Sie eine Verbindung mit 128 Kbs haben.
Um die volle Leistungsfähigkeit von ISDN (128 Kbs)
nutzen zu können, müssen Sie den Terminaladapter
daher an eine synchrone serielle Karte anschließen.Kaufen Sie keinen internen Terminaladapter in der Hoffnung,
damit das synchron/asynchron-Problem vermeiden zu können.
Interne Terminaladapter haben einen (asynchronen) seriellen
Standardportchip eingebaut. Der einzige Vorteil interner
Terminaladapter ist es, dass Sie ein serielles sowie ein
Stromkabel weniger benötigen.Eine synchrone Karte mit einem Terminaladapter ist
mindestens so schnell wie ein autonomer ISDN-Router,
und, in Kombination mit einem einfachen 386-FreeBSD-System,
wahrscheinlich flexibler.Die Entscheidung zwischen synchroner Karte/Terminaladapter
und einem autonomen ISDN-Router ist beinahe eine religiöse
Angelegenheit. Zu diesem Thema gibt es viele Diskussionen
in den Mailinglisten. Suchen Sie in den
Archiven
danach, wenn Sie an der kompletten Diskussion interessiert
sind.ISDN-Bridges und RouterISDNAutonome Bridge/RouterISDN-Bridges und Router sind keine Eigenheit von
FreeBSD oder eines anderen Betriebssystems. Für eine
vollständigere Beschreibung von Routing und
Netzwerkkopplungen mit einer Bridge informieren Sie sich
bitte durch weiterführende Literatur.In diesem Abschnitt werden die Begriffe Router und
Bridge synonym verwendet.ISDN-Router und Bridges werden immer günstiger und
damit auch immer beliebter. Ein ISDN-Router ist eine kleine
Box, die direkt an Ihr lokales Ethernet-Netzwerk angeschlossen
wird und sich mit einem Router oder einer Bridge verbindet.
Die eingebaute Software ermöglicht die Kommunikation
über PPP oder andere beliebte Protokolle.Ein Router ermöglicht einen deutlich höheren
Datendurchsatz als ein herkömmlicher Terminaladapter,
da er eine vollsynchrone ISDN-Verbindung nutzt.Das Hauptproblem mit ISDN-Routern und Bridges ist,
dass die Zusammenarbeit zwischen Geräten verschiedener
Hersteller nach wie vor ein Problem ist. Wenn Sie sich auf
diese Weise mit einem Internetanbieter verbinden wollen,
klären Sie daher vorher ab, welche Anforderungen Ihre
Geräte erfüllen müssen.Eine ISDN-Bridge ist eine einfache und wartungsarme
Lösung, zwei Netze, beispielsweise Ihr privates Netz
und Ihr Firmennetz, miteinander zu verbinden. Da Sie die
technische Ausstattung für beide Seiten kaufen müssen,
ist sichergestellt, dass die Verbindung funktionieren
wird.Um beispielsweise einen privaten Computer oder eine
Zweigstelle mit dem Hauptnetzwerk zu verbinden, könnte
folgende Konfiguration verwendet werden:Kleines Netzwerk (Privatnetz)10 base 2Das Netzwerk basiert auf der Bustopologie mit 10base2
Ethernet (Thinnet). Falls nötig, stellen
Sie die Verbindung zwischen Router und Netzwerkkabel mit einem
AUI/10BT-Transceiver her.
---Sun Workstation
|
---FreeBSD Rechner
|
---Windows 95
|
Autonomer Router
|
ISDN BRI Verbindung
10Base2 - EthernetWenn Sie nur einen einzelnen Rechner verbinden wollen,
können Sie auch ein Twisted-Pair-Kabel (Cross-Over)
verwenden, das direkt an den Router angeschlossen wird.Großes Netzwerk (Firmennetz)10 base TDieses Netzwerk basiert auf der Sterntopologie und 10baseT
Ethernet (Twisted Pair).
-------Novell Server
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Autonomer Router
|
ISDN BRI Verbindung
ISDN NetzwerkdiagrammEin großer Vorteil der meisten Router und Bridges
ist es, dass man gleichzeitig zwei
unabhängige PPP-Verbindungen
zu zwei verschiedenen Zielen aufbauen kann. Diese
Funktion bieten die meisten Terminaladapter nicht. Die
Ausnahme sind spezielle (meist teure) Modelle, die über
zwei getrennte serielle Ports verfügen. Verwechseln Sie
dies aber nicht mit Kanalbündelung oder MPP.Dies kann sehr nützlich sein, wenn Sie eine
ISDN-Standleitung in Ihrem Büro haben, die sie
aufteilen wollen, ohne eine zusätzliche ISDN-Leitung
zu installieren. Ein ISDN-Router kann über einen B-Kanal
(64 Kbps) eine dedizierte Verbindung ins Internet aufbauen,
und gleichzeitig den anderen B-Kanal für eine separate
Datenverbindung nutzen. Der zweite B-Kanal kann beispielsweise
für ein- oder ausgehende Verbindungen verwendet werden.
Sie können ihn aber auch dynamisch mit dem ersten B-Kanal
bündeln, um Ihre Bandbreite zu erhöhen.IPX/SPXEine Ethernet-Bridge kann Daten nicht nur im IP-Protokoll,
sondern auch in beliebigen anderen Protokollen versenden.ChernLeeBeigetragen von NAT - Network Address TranslationÜberblicknatd&man.natd.8;, der Network-Address-Translation-Daemon von
FreeBSD, akzeptiert ankommende Raw-IP-Pakete, ändert den
Sender der Daten in den eigenen Rechner und leitet diese Pakete
in den ausgehenden IP-Paketstrom um, indem IP-Adresse und Port
des Senders so geändert werden, dass bei einer Antwort der
ursprüngliche Sender wieder bestimmt und die Daten an
ihn weitergeleitet werden können.Internet connection sharingNATDer häufigste Grund für die Verwendung von NAT ist
die gemeinsame Nutzung einer Internetverbindung.EinrichtungWegen der begrenzten Verfügbarkeit von IPv4-Adressen
und der gestiegenen Anzahl von Breitbandverbindungen über
Kabelmodem oder DSL, wird die gemeinsame Nutzung von
Internetverbindungen immer wichtiger. Der &man.natd.8;-Daemon
ermöglicht die Anbindung von mehreren Rechnern an das
Internet unter Nutzung einer gemeinsamen Verbindung und einer
IP-Adresse.Häufig soll ein über Kabelmodem oder DSL und eine
IP-Adresse an das Internet angebundener Rechner mehreren
Rechnern eines lokalen Netzwerks Internetdienste anbieten.Um dies zu ermöglichen, muss der FreeBSD-Rechner als
Gateway fungieren. Dazu sind zwei Netzkarten notwendig. Eine
für die Verbindung zum Internet, die zweite für die
Verbindung mit dem lokalen Netzwerk. Sämtliche Rechner
des lokalen Netzwerks sind über einen Hub oder einen Switch
miteinander verbunden.Es gibt verschiedene Möglichkeiten, ein LAN über
ein &os;-Gateway an das Internet anzubinden. Das folgende
Beispiel beschreibt ein Gateway, das zumindest zwei
Netzwerkkarten enthält. _______ __________ ________
| | | | | |
| Hub |-----| Client B |-----| Router |----- Internet
|_______| |__________| |________|
|
____|_____
| |
| Client A |
|__________|Network LayoutEine derartige Netzwerkkonfiguration wird vor allem zur
gemeinsamen Nutzung einer Internetverbindung verwendet. Ein
Rechner des lokalen Netzwerks (LAN) ist mit
dem Internet verbunden. Alle anderen Rechner des lokalen
Netzwerks haben nur über diesen
Gateway-Rechner Zugriff auf das Internet.KernelKonfigurationKernelkonfigurationFolgende Optionen müssen in die
Kernelkonfigurationsdatei eingetragen werden:options IPFIREWALL
options IPDIVERTDie folgende Optionen können ebenfalls eingetragen
werden:options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSEIn /etc/rc.conf tragen Sie Folgendes
ein:gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="fxp0"
natd_flags="" Richtet den Rechner als Gateway ein. Die
Ausführung von
sysctl net.inet.ip.forwarding=1
hätte den gleichen Effekt.Aktiviert die Firewallregeln in
/etc/rc.firewall beim
Systemstart.Ein vordefinierter Satz von Firewallregeln, der alle
Pakete durchlässt. Sehen Sie sich
/etc/rc.firewall an, wenn Sie diese
Option verwenden wollen.Die Netzkarte, die Pakete weiterleitet (und mit dem
Internet verbunden ist).Zusätzliche Konfigurationsoptionen, die beim
Systemstart an &man.natd.8; übergeben werden.Durch die Definition dieser Optionen in
/etc/rc.conf wird die Anweisung
natd -interface fxp0 beim Systemstart
ausgeführt. Dies kann aber auch manuell erfolgen.Falls Sie viele Optionen an &man.natd.8; übergeben
müssen, können Sie auch eine Konfigurationsdatei
verwenden. Dazu fügen Sie folgende Zeile in
/etc/rc.conf ein:natd_flags="-f /etc/natd.conf"Die Datei /etc/natd.conf enthält
verschiedene Konfigurationsoptionen, wobei jede Option in einer
Zeile steht. Das Beispiel im nächsten Abschnitt würde
folgende Konfigurationsdatei verwenden:redirect_port tcp 192.168.0.2:6667 6667
redirect_port tcp 192.168.0.3:80 80Wenn Sie eine Konfigurationsdatei verwenden wollen, sollten
Sie sich die Handbuchseite zu &man.natd.8; durchlesen,
insbesondere den Abschnitt über die Nutzung der Option
.Jedem Rechner und jeder Schnittstelle des lokalen Netzwerks
sollte eine IP-Adresse des im RFC 1918
definierten privaten Adressraums zugewiesen werden. Der
Standardgateway entspricht der internen IP-Adresse des
natd-Rechners.Im Beispiel werden den LAN-Clients A und
B die IP-Adressen
192.168.0.2 und
192.168.0.3 zugewiesen,
während die LAN-Netzkarte des
natd-Rechners die IP-Adresse
192.168.0.1 erhält. Der
natd-Rechner mit der IP-Adresse
192.168.0.1 wird als
Standardgateway für die Clients A und
B gesetzt. Die externe Netzkarte des
natd-Rechners muss für die
korrekte Funktion von &man.natd.8; nicht konfiguriert
werden.Ports umleitenWenn Sie &man.natd.8; verwenden, sind Ihre LAN-Clients von
aussen nicht erreichbar. LAN-Clients können zwar
Verbindungen nach aussen aufbauen, sind aber für
ankommende Verbindungen nicht erreichbar. Wenn Sie
Internetdienste auf einem LAN-Client anbieten wollen, haben Sie
daher ein Problem. Eine einfache Lösung ist die Umleitung
von bestimmten Internetports des
natd-Rechners auf einen LAN-Client.Beispielsweise könnte ein IRC-Server auf Client
A und ein Webserver auf Client
B laufen. Damit diese Konfiguration
funktioniert, müssen Verbindungen, die auf den Ports 6667
(IRC) und 80 (Web) ankommen, auf die entsprechenden Clients
umgeleitet werden.Dazu wird die Option unter
Nutzung folgender Syntax an &man.natd.8; übergeben: -redirect_port proto targetIP:targetPORT[-targetPORT]
[aliasIP:]aliasPORT[-aliasPORT]
[remoteIP[:remotePORT[-remotePORT]]]Für unser Beispiel heißt das: -redirect_port tcp 192.168.0.2:6667 6667
-redirect_port tcp 192.168.0.3:80 80Dadurch werden die entsprechenden
tcp-Ports auf die jeweiligen LAN-Clients
umgeleitet.Mit können auch ganze
Portbereiche statt einzelner Ports umgeleitet werden. So werden
mit tcp 192.168.0.2:2000-3000
2000-3000 alle Verbindungen, die auf den Ports
2000 bis 3000 ankommen, auf die entsprechenden Ports des Clients
A umgeleitet.Diese Optionen können während des Betriebs von
&man.natd.8; oder über die Option
natd_flags="" in
/etc/rc.conf gesetzt werden.Eine ausführliche Konfigurationsanleitung finden Sie
in &man.natd.8;.Adressen umleitenaddress redirectionDie Umleitung von Adressen ist nützlich, wenn mehrere
IP-Adressen verfügbar sind, die aber alle auf einem Rechner
verbleiben sollen. In diesem Fall kann &man.natd.8; jedem
LAN-Client eine eigene externe IP-Adresse zuweisen. Ausgehende
Pakete eines LAN-Clients werden so der entsprechenden
externen IP-Adresse des Clients zugeordnet. Ankommender Verkehr
für diese IP-Adresse wird automatisch an den entsprechenden
LAN-Client weitergeleitet. Diesen Vorgang bezeichnet man
auch als statisches NAT. Dem
natd-Gatewayrechner könnten
beispielsweise die IP-Adressen
128.1.1.1,
128.1.1.2 sowie
128.1.1.3 zugewiesen werden.
128.1.1.1 wird als die externe
IP-Adresse des natd-Gatewayrechners
verwendet, während 128.1.1.2
und 128.1.1.3 an die LAN-Clients
A und B weitergegeben werden.
benutzt folgende
Syntax:-redirect_address localIP publicIPlocalIPDie interne IP-Adresse des LAN-ClientspublicIPDie externe IP-Adresse des LAN-ClientsFür unser Beispiel hieße dies:-redirect_address 192.168.0.2 128.1.1.2
-redirect_address 192.168.0.3 128.1.1.3Analog zur Option
können Sie diese Argumente auch in der Option
natd_flags="" in
/etc/rc.conf angeben. Bei der Nutzung
der Adressumleitung ist die Portumleitung überflüssig,
weil alle für eine bestimmte IP-Adresse ankommenden Daten
umgeleitet werden.Die externe IP-Adresse des
natd-Rechners muss aktiv sein und
der externen Netzkarte zugewiesen sein. Weitere Informationen
zu diesem Thema finden Sie in &man.rc.conf.5;.PLIP – Parallel Line IPPLIPParallel Line IPPLIPPLIP ermöglicht TCP/IP-Verbindungen zwischen zwei
Rechnern, die über ihre parallelen Schnittstellen
verbunden sind. Eine solche Verbindung ist nützlich,
wenn zwei Rechner nicht mit Netzkarten ausgestattet sind,
oder wenn eine Installation auf einem Laptop erfolgen soll.
Dieser Abschnitt behandelt folgende Themen:Die Herstellung eines parallelen (Laplink-) KabelsDie Verbindung von zwei Computern über PLIPEin paralleles Kabel herstellenEin paralleles (Laplink-)Kabel können Sie in fast jedem
Computergeschäft kaufen. Falls dies nicht möglich
sein sollte, oder Sie einfach wissen wollen, wie ein solches
Kabel aufgebaut ist, sollten Sie sich die folgende Tabelle
ansehen. Sie beschreibt die Herstellung eines parallelen
Netzwerkkabels aus einem gewöhnlichen parallelen
Druckerkabel.
PLIP einrichtenAls Erstes benötigen Sie ein Laplink-Kabel. Danach
müssen Sie sicherstellen, dass beide Computerkernel den
&man.lpt.4;-Treiber unterstützen:&prompt.root; grep lp /var/run/dmesg.boot
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven portDer Parallelport muss Interrupt-gesteuert sein, daher
sollte die Datei /boot/device.hints
zwei Zeilen ähnlich den folgenden enthalten:hint.ppc.0.at="isa"
hint.ppc.0.irq="7"Danach überprüfen Sie, ob die
Kernelkonfigurationsdatei die Zeile
device plip enthält, oder ob das
Kernelmodul plip.ko geladen wurde. In
beiden Fällen sollte die parallele Schnittstelle
von &man.ifconfig.8; angezeigt werden:&prompt.root; ifconfig plip0
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500Verbinden Sie die parallelen Schnittstellen der beiden
Computer über das (Laplink-)Kabel.Konfigurieren Sie die Netzwerkparameter auf beiden Rechnern
als root. Wenn Sie beispielsweise den Rechner
host1 mit dem Rechner host2
verbinden wollen, gehen Sie folgendermaßen vor: host1 <-----> host2
IP Address 10.0.0.1 10.0.0.2Richten Sie die parallele Schnittstelle von
host1 ein, indem Sie Folgendes eingeben:&prompt.root; ifconfig plip0 10.0.0.1 10.0.0.2Danach richten Sie die parallele Schnittstelle von
host2 ein:&prompt.root; ifconfig plip0 10.0.0.2 10.0.0.1Sie sollten nun über eine funktionierende Verbindung
verfügen. Bei Problemen lesen Sie bitte die Hilfeseiten
&man.lp.4; sowie &man.lpt.4;.Zusätzlich sollten beide Rechner in
/etc/hosts eingetragen werden:127.0.0.1 localhost.my.domain localhost
10.0.0.1 host1.my.domain host1
10.0.0.2 host2.my.domainUm die Verbindung zu überprüfen, pingen Sie jeden
Rechner vom anderen Rechner aus an. Auf host1
gehen Sie dazu folgendermaßen vor:&prompt.root; ifconfig plip0
plip0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
&prompt.root; netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
host2 host1 UH 0 0 plip0
&prompt.root; ping -c 4 host2
PING host2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
--- host2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 msAaronKaplanBeigetragen von TomRhodesÜberarbeitet und erweitert von BradDavisErweitert von IPv6 – Internet Protocol Version 6Bei IPv6 (auch als IPng oder
IP next generation
bekannt) handelt es sich um die neueste Version des bekannten
IP-Protokolls (das auch als IPv4 bezeichnet
wird). FreeBSD enthält, genauso wie die anderen frei
erhältlichen BSD-Systeme, die IPv6-Referenzimplementation
von KAME. FreeBSD erfüllt damit bereits
alle für die Nutzung von IPv6 nötigen Voraussetzungen.
Dieser Abschnitt konzentriert sich daher auf die Konfiguration
und den Betrieb von IPv6.Anfang der 90er Jahre wurde man auf den stark steigenden
Verbrauch von IPv4-Adressen aufmerksam. Im Hinblick auf das
Wachstums des Internets gab es zwei Hauptsorgen:Die drohende Knappheit von IPv4-Adressen. Dieses Problem
konnte durch die Einführung von privaten
Adressräumen gemäß RFC1918 (mit Adressen wie
10.0.0.0/8,
172.16.0.0/12, oder
192.168.0.0/16) sowie der
Entwicklung von Network Address
Translation (NAT)
weitestgehend entschärft werden.Die immer größer werdenden Einträge in
Router-Tabellen. Dieses Problem ist auch heute noch
aktuell.IPv6 ist in der Lage, diese, aber auch viele andere Probleme
zu lösen:IPv6 hat einen 128 Bit großen Adressraum. Es sind
also theoretisch
340.282.366.920.938.463.463.374.607.431.768.211.456 Adressen
verfügbar. In anderen Worten: Für jeden
Quadratmeter der Erdoberfläche sind etwa
6,67 * 10^27 IPv6-Adressen verfügbar.Router speichern nur noch Netzwerk-Aggregationsadressen in
Ihren Routingtabellen. Dadurch reduziert sich die
durchschnittliche Größe einer Routingtabelle auf
8192 Einträge.Weitere nützliche Eigenschaften von IPv6 sind:Die automatische Konfiguration von Adressen, die im
RFC2462
beschrieben wird.Anycast-Adressen (eine-von-vielen)Verpflichtende Multicast-AdressenDie Unterstützung von IPsec (IP-Security)Eine vereinfachte HeaderstrukturMobile IP-AdressenDie Umwandlung von IPv4- in IPv6-AdressenWeitere Informationsquellen:Beschreibung von IPv6 auf
playground.sun.comKAME.netHintergrundinformationen zu IPv6-AdressenEs gibt verschiedene Arten von IPv6-Adressen: Unicast-,
Anycast- und Multicast-Adressen.Unicast-Adressen sind die herkömlichen Adressen. Ein
Paket, das an eine Unicast-Adresse gesendet wird, kommt nur an
der Schnittstelle an, die dieser Adresse zugeordnet ist.Anycast-Adressen unterscheiden sich in ihrer Syntax nicht
von Unicast-Adressen, sie wählen allerdings aus
mehreren Schnittstellen eine Schnittstelle aus.
Ein für eine Anycast-Adresse
bestimmtes Paket kommt an der nächstgelegenen
(entsprechend der Router-Metrik) Schnittstelle
an. Anycast-Adressen werden nur von Routern verwendet.Multicast-Adressen bestimmen Gruppen, denen mehrere
Schnittstellen angehören. Ein
Paket, das an eine Multicast-Adresse geschickt wird, kommt an
allen Schnittstellen an, die zur Multicast-Gruppe gehören.Die von IPv4 bekannte Broadcast-Adresse
(normalerweise
xxx.xxx.xxx.255) wird bei IPv6
durch Multicast-Adressen verwirklicht.
Reservierte IPv6-AdressenIPv6-AdressePräfixlängeBeschreibungAnmerkungen::128 Bitnicht festgelegtentspricht 0.0.0.0
bei IPv4::1128 BitLoopback-Adresseentspricht 127.0.0.1
bei IPv4::00:xx:xx:xx:xx96 BitEingebettete IPv4-AdresseDie niedrigen 32 Bit entsprechen der IPv4-Adresse.
Wird auch als IPv4-kompatible IPv6-Adresse
bezeichnet.::ff:xx:xx:xx:xx96 BitEine auf IPv6 abgebildete IPv4-AdresseDie niedrigen 32 Bit entsprechen der IPv4-Adresse.
Notwendig für Rechner, die IPv6 nicht
unterstützen.fe80:: - feb::10 Bitlink-localEntspricht der Loopback-Adresse bei IPv4fec0:: - fef::10 Bitsite-localff::8 BitMulticast001
(im Dualsystem)3 BitGlobaler UnicastAlle globalen Unicastadressen stammen aus diesem
Pool. Die ersten 3 Bit lauten 001.
IPv6-Adressen verstehenDie kanonische Form von IPv6-Adressen lautet
x:x:x:x:x:x:x:x, jedes
x steht dabei für einen
16-Bit-Hexadezimalwert. Ein Beispiel für eine IPv6-Adresse
wäre etwa
FEBC:A574:382B:23C1:AA49:4592:4EFE:9982.Eine IPv6-Adresse enthält oft Teilzeichenfolgen aus lauter
Nullen. Eine solche Zeichenfolge kann zu ::
verkürzt werden. Bis zu drei führende Nullen eines
Hexquads können ebenfalls weggelassen werden.
fe80::1 entspricht also der Adresse
fe80:0000:0000:0000:0000:0000:0000:0001.
Eine weitere Möglichkeit ist die Darstellung der
letzten 32 Bit in der bekannten (dezimalen) IPv4-Darstellung,
bei der Punkte (.) zur Trennung verwendet werden.
2002::10.0.0.1 ist also nur eine
andere Schreibweise für die (hexadezimale) kanonische Form
2002:0000:0000:0000:0000:0000:0a00:0001,
die wiederum der Adresse
2002::a00:1 entspricht.Sie sollten nun in der Lage sein, die folgende Ausgabe zu
verstehen:&prompt.root; ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
ether 00:00:21:03:08:e1
media: Ethernet autoselect (100baseTX )
status: activeBei
fe80::200:21ff:fe03:8e1%rl0
handelt es sich um eine automatisch konfigurierte
link-local-Adresse. Sie
wird im Rahmen der automatischen Konfiguration aus der
MAC-Adresse erzeugt.Weitere Informationen zum Aufbau von IPv6-Adressen finden
Sie im
RFC3513.Eine IPv6-Verbindung herstellenEs gibt derzeit drei Möglichkeiten, sich mit anderen
IPv6-Rechnern oder Netzwerken zu verbinden:Die Teilnahme am IPv6-Netzwerk Ihres Providers.
Wenn Sie daran interessiert sind, wenden Sie sich an Ihren
Provider.Die Verwendung eines 6-nach-4-Tunnels
(RFC3068).Die Verwendung des Ports
/usr/ports/net/freenet6 bei der Einwahl
ins Internet.DNS in der IPv6-WeltUrsprünglich gab es zwei verschiedene DNS-Einträge
für IPv6. Da A6-Einträge von der IETF für
obsolet erklärt wurden, sind AAAA-Einträge nun
Standard.Weisen Sie die erhaltene IPv6-Adresse Ihrem Rechnernamen zu,
indem Sie den EintragMYHOSTNAME AAAA MYIPv6ADDRin Ihre primäre DNS-Zonendatei einfügen. Falls
Sie nicht für Ihre DNS-Zone
verantwortlich sind, bitten Sie den dafür
Zuständigen, diese Änderung durchzuführen.
Die aktuellen Versionen von bind
(Version 8.3 oder 9) sowie
dns/djbdns (bei Verwendung
des IPv6-Patches) unterstützen AAAA-Einträge./etc/rc.conf für die Nutzung von
IPv6 anpassenEinen Client unter IPv6 einrichtenDieser Abschnitt beschreibt die Konfiguration eines
Rechners, der in Ihrem LAN als Client, aber nicht als Router
verwendet wird. Um die Schnittstelle während des
Systemstarts mit &man.rtsol.8; automatisch einzurichten,
fügen Sie folgende Zeile in
/etc/rc.conf ein:ipv6_enable="YES"Durch die folgende Zeile weisen Sie Ihrer Schnittstelle
fxp0 die statische IP-Adresse 2001:471:1f11:251:290:27ff:fee0:2093
zu:ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"Um 2001:471:1f11:251::1
als Standardrouter festzulegen, fügen Sie folgende Zeile
in /etc/rc.conf ein:ipv6_defaultrouter="2001:471:1f11:251::1"Gateways und Router unter IPv6 einrichtenDieser Abschnitt beschreibt, wie Sie Ihren Rechner mit
Hilfe der von Ihrem Tunnel-Anbieter erhaltenen
Anweisungen dauerhaft für die Nutzung von IPv6
einrichten. Um den Tunnel beim Systemstart
wiederherzustellen, passen Sie
/etc/rc.conf wie folgt an:Listen Sie die einzurichtenden Tunnelschnittstellen
(hier gif0) auf:gif_interfaces="gif0"Um den lokalen Endpunkt
MY_IPv4_ADDR über diese
Schnittstelle mit dem entfernten Endpunkt
REMOTE_IPv4_ADDR zu
verbinden, verwenden Sie folgende Zeile:gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"Um die Ihnen zugewiesene IPv6-Adresse als Endpunkt Ihres
IPv6-Tunnels zu verwenden, fügen Sie folgende Zeile
ein:ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"Nun müssen Sie nur noch die IPv6-Standardroute
angeben. Diese legt das andere Ende des IPv6-Tunnels
fest.ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"Einen IPv6-Tunnel einrichtenWenn Ihr Server IPv6-Verkehr zwischen Ihrem Netzwerk und
der Außenwelt routen muss, benötigen Sie
zusätzlich die folgenden Zeilen in Ihrer
/etc/rc.conf:ipv6_gateway_enable="YES"Bekanntmachung von Routen und automatische
RechnerkonfigurationDieser Abschnitt beschreibt die Einrichtung von
&man.rtadvd.8;, das Sie bei der Bekanntmachung der
IPv6-Standardroute unterstützt.Um &man.rtadvd.8; zu aktivieren, fügen Sie folgende
Zeile in /etc/rc.conf ein:rtadvd_enable="YES"Es ist wichtig, die Schnittstelle anzugeben, über die
IPv6-Routen bekanntgemacht werden sollen. Soll &man.rtadvd.8;
fxp0 verwenden, ist folgender Eintrag
nötig:rtadvd_interfaces="fxp0"Danach erzeugen Sie die Konfigurationsdatei
/etc/rtadvd.conf. Dazu ein Beispiel:fxp0:\
:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:Ersetzen Sie dabei fxp0 durch die
zu verwendende Schnittstelle.Anschließend ersetzen Sie
2001:471:1f11:246:: durch das
Präfix der Ihnen zugewiesenen Verbindung.Wenn Sie eine /64-Netzmaske
verwenden, müssen Sie keine weiteren Anpassungen vornehmen.
Anderenfalls müssen Sie prefixlen#
auf den korrekten Wert setzen.HartiBrandtBeigetragen von ATM - Asynchronous Transfer ModeClassical IP over ATM
als PVC-Verbindung einrichtenClassical IP over ATM
(CLIP) ist die einfachste Möglichkeit,
um IP-Verkehr über ATM (Asynchronous
Transfer Mode-Verbindungen zu übertragen.
CLIP kann sowohl mit geschalteten Verbindungen (SVCs) als auch
mit permanenten Verbindungen (PVCs) verwendet werden. Dieser
Abschnitt beschreibt die Einrichtung eines PVC-basierten
Netzwerks.Ein vollständig vermaschtes Netzwerk aufbauenBei einem vollständig vermaschten
(fully meshed) Netzwerk ist
jeder Rechner über eine dezidierte Verbindung mit jedem
anderen Rechner des Netzwerks verbunden. Die Konfiguration
ist - vor allem für kleinere Netzwerke - relativ einfach.
Unser Beispielnetzwerk besteht aus vier Rechnern, die jeweils
über eine
ATM-Adapterkarte
mit dem
ATM-Netzwerk
verbunden sind. Als ersten Konfigurationsschritt planen wir
die Vergabe von IP-Adressen sowie die anzulegenden
ATM-Verbindungen:
RechnerIP-AdressehostA192.168.173.1hostB192.168.173.2hostC192.168.173.3hostD192.168.173.4Um ein vollständiges Netz aufzubauen, benötigen
wir für jedes Rechnerpaar eine eigene ATM-Verbindung:RechnerpaarVPI.VCI-PaarhostA - hostB0.100hostA - hostC0.101hostA - hostD0.102hostB - hostC0.103hostB - hostD0.104hostC - hostD0.105Die Werte VPI und VCI an den Verbindungsenden können
natürlich unterschiedlich sein. Wir nehmen hier aber an,
dass sie gleich sind. Nun müssen wir die
ATM-Schnittstellen auf jedem Rechner einrichten:hostA&prompt.root; ifconfig hatm0 192.168.173.1 up
hostB&prompt.root; ifconfig hatm0 192.168.173.2 up
hostC&prompt.root; ifconfig hatm0 192.168.173.3 up
hostD&prompt.root; ifconfig hatm0 192.168.173.4 upDabei setzen wir voraus, dass
hatm0 auf allen Rechnern die
ATM-Schnittstelle darstellt. Danach werden, beginnend mit
hostA, die PVCs auf den einzelnen Rechnern
eingerichtet (Wir nehmen an, dass die PVCs auf den
ATM-Switches bereits eingerichet sind. Lesen Sie die
entsprechenden Handbücher, wenn Sie einen Switch
einrichten müssen.):hostA&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
hostA&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
hostB&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
hostC&prompt.root; atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
hostD&prompt.root; atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubrStatt UBR können auch andere
traffic contracts verwendet
werden. Voraussetzung ist allerdings, dass diese von Ihrem
ATM-Adapter unterstützt werden. Ist dies der Fall,
folgen auf den Namen des
traffic contracts die
entsprechenden Konfigurationsparameter. Weitere Informationen
zur Konfiguration von ATM-Adapterkarten erhalten Sie über
den Befehl&prompt.root; atmconfig help natm addoder durch das Lesen von &man.atmconfig.8;.Die Konfiguration von ATM-Adaptern kann auch über die
Datei /etc/rc.conf erfolgen. Für
hostA sähe die Konfiguration so
aus:network_interfaces="lo0 hatm0"
ifconfig_hatm0="inet 192.168.173.1 up"
natm_static_routes="hostB hostC hostD"
route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"Mit dem folgenden Befehl lässt sich der derzeitige
Status aller CLIP-Routen anzeigen:hostA&prompt.root; atmconfig natm showTomRhodesBeigetragen von CARP - Common Access Redundancy ProtocolCARPCommon Access Redundancy Protocol (CARP)Das Common Access Redundancy
Protocol (CARP) erlaubt es,
mehreren Rechnern die gleiche IP-Adresse
zuzuweisen. Durch ein solches Vorgehen läßt sich
beispielsweise die Verfügbarkeit bestimmter Dienste
verbessern oder die Last zwischen einzelnen Systemen besser
verteilen. Den auf diese Art und Weise konfigurierten Systemen
kann zusätzlich eine eigene (im Netzwerk eindeutige)
IP-Adresse zugewiesen werden (wie dies auch
im folgenden Beispiel erfolgt).Um CARP zu aktivieren, müssen Sie die
&os;-Kernelkonfigurationsdatei um die folgende Option erweitern
und danach den &os;-Kernel neu bauen:device carpDanach ist CARP auf Ihrem System
verfügbar und kann über verschiedene
sysctl-Optionen (OIDs)
gesteuert werden. Zuerst müssen Sie CARP
jedoch mit ifconfig aktivieren:&prompt.root; ifconfig carp0 createDamit Sie dieses Protokoll in Ihrem Netzwerk einsetzen
können, muss jede Netzkarte eine eindeutige
Identifikationsnummer, die sogenannte VHID
(Virtual Host Identification),
besitzen, da sich ansonsten die Rechner Ihres Netzwerks nicht
voneinander unterscheiden lassen.Die Serververfügbarkeit mit CARP
verbessernWie bereits weiter oben erwähnt wurde, können Sie
CARP dazu verwenden, die Verfübarkeit
Ihrer Server zu verbessern. Im folgenden Bespiel werden
insgesamt drei Server (mit jeweils eigener, eindeutiger
IP-Adresse), die alle den gleichen Inhalt
anbieten, in einer Round Robin
DNS-Konfiguration eingerichtet.
Der Backup-Server verfügt über zwei
CARP-Schnittstellen (für die beiden
IP-Adressen der Content-Server). Tritt bei
einem Content-Server ein Problem auf, übernimmt der
Backup-Server die IP-Adresse des
ausgefallenen Servers. Dadurch sollte die Auswahl eines Servers
vom Anwender nicht bemerkt werden. Der Backup-Server muss
identisch konfiguriert sein und die gleichen Daten und Dienste
anbieten wie das System, das er ersetzen soll.Die beiden Content-Server werden (abgesehen von ihren
jeweiligen Hostnamen und VHIDs) identisch
konfiguriert und heißen in unserem Beispiel
hosta.example.org beziehungsweise
hostb.example.org. Damit Sie
CARP einsetzen können, müssen
Sie als Erstes die Datei rc.conf auf
beiden Systemen anpassen. Für das System
hosta.example.org nehmen Sie dazu folgende
Zeilen in rc.conf auf:hostname="hosta.example.org"
ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass testpast 192.168.1.50/24"Für das System hostb.example.org
benötigen Sie zusätzlich folgende Zeilen in
rc.conf:hostname="hostb.example.org"
ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"Achten Sie unbedingt darauf, dass die durch die Option
an ifconfig
übergebenen Passwörter auf beiden Systemen
identisch sind, da
carp-Geräte nur mit Systemen
kommunizieren können, die über ein korrektes Passwort
verfügen. Beachten Sie weiters, dass sich die
VHIDs der beiden Systeme unterscheiden
müssen.Nun richten Sie noch das dritte System,
provider.example.org, ein, das aktiviert
wird, wenn eines der beiden zuvor konfigurierten Systeme
ausfällt. Dieses dritte System benötigt zwei
carp-Geräte, um bei Bedarf
eines der beiden anderen
Systeme ersetzen zu können. Dazu konfigurieren Sie
rc.conf analog zur folgenden
Beispielkonfiguration:hostname="provider.example.org"
ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0"
cloned_interfaces="carp0 carp1"
ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24"
ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"Durch die beiden carp-Geräte
ist es provider.example.org möglich,
festzustellen, ob eines der beiden anderen Systeme nicht mehr
reagiert. In diesem Fall übernimmt
provider.example.org die
IP-Adresse des betroffenen Systems.Ist im installierten &os;-Kernel die Option
"preemption" aktiviert, kann es sein, dass
provider.example.org die übernommene
IP-Adresse nicht mehr an den
Content-Server zurückgibt (wenn dieser wieder
funktioniert). In diesem Fall muss ein Administrator die
entsprechende Schnittstelle zurücksetzen.
Dazu gibt er auf dem Rechner
provider.example.org den folgenden
Befehl ein:&prompt.root; ifconfig carp0 down && ifconfig carp0 upDieser Befehl muss auf das
carp-Gerät ausgeführt
werden, das dem betroffenen System zugeordnet ist.Damit ist CARP vollständig
konfiguriert und der Testbetrieb kann beginnen. Zuvor
müssen Sie allerdings noch alle Systeme neu starten
(beziehungsweise die Netzwerkkonfiguration auf allen
Systemen neu einlesen), um die Einstelllungen zu
übernehmen.Für weitere Informtionen lesen Sie bitte die Manualpage
&man.carp.4;.
diff --git a/de_DE.ISO8859-1/books/handbook/desktop/chapter.sgml b/de_DE.ISO8859-1/books/handbook/desktop/chapter.sgml
index 680dcb69ec..33c0173342 100644
--- a/de_DE.ISO8859-1/books/handbook/desktop/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/desktop/chapter.sgml
@@ -1,1170 +1,1214 @@
ChristopheJunietBeigetragen von MartinHeinenÜbersetzt von Desktop-AnwendungenÜbersichtFreeBSD bietet eine reiche Auswahl an Desktop-Anwendungen,
wie Browser und Textverarbeitungen, die als Pakete oder mit der
Ports-Sammlung installiert werden. Gerade neue Benutzer erwarten
Anwendungen mit einer grafischen Benutzeroberfläche an ihrem
Arbeitsplatz. Dieses Kapitel zeigt Ihnen,
wie Sie einige der beliebtesten Desktop-Anwendungen mühelos
installieren.Wenn Sie Ports installieren, beachten Sie, dass dabei die
Quelltexte der Programme übersetzt werden. Abhängig
von dem Programm und der Geschwindigkeit Ihrer Maschinen kann das
sehr lange dauern. Wenn Ihnen das Übersetzen zu lange dauert,
können Sie die meisten Programme der Ports-Sammlung auch als
fertige Pakete installieren.Da FreeBSD binär kompatibel zu Linux ist, können Sie
zahlreiche für Linux entwickelte Desktop-Anwendungen einsetzen.
Bevor Sie allerdings Linux-Anwendungen installieren, sollten Sie das
lesen. Wenn Sie nach einem bestimmten Port
suchen, zum Beispiel mit &man.whereis.1;, beachten Sie, dass die
Namen vieler Programme, die die Linux-Binärkompatibilität
benutzen, mit linux- anfangen. Wir gehen im
Folgenden davon aus, dass Sie die Linux-Binärkompatibilität
aktiviert haben, bevor Sie Linux-Anwendungen installieren.Dieses Kapitel behandelt Anwendungen aus den Bereichen:Browser (Mozilla,
Opera,
Firefox,
Konqueror)Büroanwendungen (KOffice,
AbiWord,
The GIMP,
OpenOffice.org)Dokumentformate(&acrobat.reader;,
gv,
Xpdf,
GQview)Finanzsoftware (
GnuCash,
Gnumeric,
Abacus)Bevor Sie dieses Kapitel lesen, sollten SieSoftware Dritter installieren können
() undLinux-Anwendungen installieren können
().Wie Sie Multimedia-Anwendungen einrichten, wird in einem
gesonderten Kapitel erklärt.
Wie Sie E-Mail einrichten und benutzen, wird in
beschrieben.BrowserBrowserWebFreeBSD besitzt keinen vorinstallierten Browser, stattdessen
enthält das www-Verzeichnis
der Ports-Sammlung Browser, die Sie installieren können.
Wenn Ihnen das Übersetzen der Browser zu lange dauert, bei
einigen Browsern dauert das wirklich lange, installieren Sie die
Pakete, die es für viele Browser gibt.KDE und
GNOME enthalten schon HTML-Browser.
Das Einrichten dieser grafischen Benutzeroberflächen ist
in beschrieben.Wenn Sie besonders schlanke Browser benötigen, suchen Sie in
der Ports-Sammlung nach
www/dillo,
www/links oder
www/w3m.Dieser Abschnitt behandelt die nachstehenden Anwendungen:AnwendungRessourcenbedarfInstallationsaufwand aus den Portswichtige AbhängigkeitenMozillahochhochGtk+OperaniedrigniedrigEs gibt eine &os;- und eine Linux-Version.
Die Linux-Version hängt von der
Linux-Kompatibilität (Linux
Binary Compatibility) und
linux-openmotif ab.FirefoxmittelhochGtk+KonquerormittelhochKDE-BiliothekenMozillaMozillaMozilla ist ein moderner, stabiler
und kompletter Browser, der nach FreeBSD portiert wurde. Er
entspricht dem HTML-Standard und verfügt über einen
E-Mail-Client und einen Newsreader. Für den Fall, dass Sie
einige HTML-Seiten selbst verfassen wollen, enthält der
Browser auch einen HTML-Editor. Wenn Sie
&netscape; kennen, wird Ihnen
vielleicht die Ähnlichkeit mit dem
Communicator auffallen. Dies liegt
daran, dass die beiden Programme eine gemeinsame
Entwicklungsgeschichte haben (und auf der gleichen
ursprünglichen Codebasis aufbauen).Auf langsamen Maschinen, deren CPU-Taktfrequenz weniger als
233 MHz beträgt, oder die weniger als 64 MB Speicher
besitzen, können Sie Mozilla wegen
dessen Ressourcenbedarfs nur eingeschränkt benutzen. Weniger
Ressourcen verbraucht der Opera-Browser,
der gleich in diesem Kapitel behandelt wird.Für den Fall, dass Sie Mozilla
nicht selbst übersetzen wollen, hat das FreeBSD-GNOME-Team
schon ein Paket für Sie erstellt, das Sie über das Netz
installieren können:&prompt.root; pkg_add -r mozillaWenn das Paket nicht zur Verfügung steht und Sie
genügend Zeit und Plattenplatz haben, können Sie
Mozilla mit den nachstehenden Befehlen
selbst übersetzen und installieren:&prompt.root; cd /usr/ports/www/mozilla
&prompt.root; make install cleanDas Erscheinungsbild von Mozilla
können Sie mit so genannten
Themes oder
Gestures beeinflussen. Der
Mozilla-Port sorgt für die richtige
Installation des Chrome-Themes. Die Installation weiterer
Zusatzkomponenten erfordert allerdings
root-Rechte.Nachdem Sie die Installation von
Mozilla abgeschlossen haben,
benötigen Sie die root-Rechte nicht mehr.
Starten Sie den Browser dann einfach mit dem Kommando:&prompt.user; mozillaSie können auch den E-Mail-Client oder den Newsreader
direkt starten:&prompt.user; mozilla -mailFirefoxFirefoxFirefox ist ein auf dem
Mozilla-Code basierender
Browser. Während es sich bei
Mozilla um ein komplettes
Anwendungspaket (bestehend aus Browser, E-Mail-Programm,
Chatclient und anderem mehr) handelt, konzentriert sich
Firefox auf die Aufgabe als
Browser, was das Programm kleiner und schneller macht.Das Paket können Sie mit dem nachstehenden
Befehl installieren:&prompt.root; pkg_add -r firefoxAlternativ können Sie auch die Ports-Sammlung verwenden,
um das Programm aus dem Quellcode zu installieren:&prompt.root; cd /usr/ports/www/firefox
&prompt.root; make install cleanFirefox, Mozilla und das &java;-PluginDieser und der nächste Abschnitt gehen davon aus,
dass Sie Firefox oder
Mozilla bereits installiert
haben.Die &os; Foundation hat von Sun Microsystems eine Lizenz
erworben, die es erlaubt, &os;-Binärpakete des
Java Runtime Environment (&jre;) und des Java Development Kit
(&jdk;) zu verteilen. Diese Binärpakete sind auf der
Webseite der &os;
Foundation erhältlich.Damit Firefox oder
Mozilla &java; unterstützen,
müssen Sie zuerst den Port java/javavmwrapper installieren.
Anschließend laden Sie das
Diablo &jre;-Paket
von
herunter und installieren es mit &man.pkg.add.1;.Danach starten Sie Ihren Browser und geben in der
Adresszeile about:plugins ein
und bestätigen die Eingabe mit der
Enter-Taste. Dadurch wird eine Seite
geladen, auf der alle installierten Plugins aufgelistet werden.
Auch das &java;-Plugin sollte nun
in dieser Liste aufgeführt sein. Sollte dies bei Ihnen
nicht der Fall sein, müssen Sie als
root noch den folgenden Befehl
ausführen:&prompt.root; ln -s /usr/local/diablo-jre1.5.0/plugin/i386/ns7/libjavaplugin_oji.so \
/usr/local/lib/browser_plugins/Danach starten Sie Ihren Browser neu, um das Plugin zu
aktivieren.Firefox, Mozilla und das ¯omedia; &flash;-PluginDas ¯omedia; &flash;-Plugin ist für &os; nicht
verfügbar. Es existiert jedoch ein Software-Layer (ein
sogenannter Wrapper), der es erlaubt, die Linux-Version des
Plugins unter &os; einzusetzen. Dieser Wrapper
unterstützt außerdem das &adobe; &acrobat;-Plugin,
das &realplayer;-Plugin und andere mehr.Als erstes installieren Sie den Port www/linuxpluginwrapper. Dieser Port
setzt voraus, dass Sie den Port emulators/linux_base bereits
installiert haben. Folgen Sie exakt den bei der Installation
des Ports gegebenen Anweisungen, um die Datei
/etc/libmap.conf korrekt zu konfigurieren,
da ansonsten das Plugin später nicht erkannt wird.
Beispielkonfigurationen finden Sie im Verzeichnis
/usr/local/share/examples/linuxpluginwrapper/.Anschließend installieren Sie den Port www/linux-flashplugin7. Nachdem Sie
das Plugin installiert haben, rufen Sie Ihren Browser auf und
geben in der Adresszeile about:plugins
ein. Diese Eingabe muss mit der Enter-Taste
bestätigt werden. Danach wird eine Seite geladen, auf der
alle installierten Plugins aufgelistet werden.Sollte das &flash;-Plugin bei Ihnen nicht aufgelistet sein,
liegt dies in der Regel an einem fehlenden symbolischen Link.
In diesem Fall führen Sie als root
die folgenden Befehle aus:&prompt.root; ln -s /usr/local/lib/npapi/linux-flashplugin/libflashplayer.so \
/usr/local/lib/browser_plugins/
&prompt.root; ln -s /usr/local/lib/npapi/linux-flashplugin/flashplayer.xpt \
/usr/local/lib/browser_plugins/Nach einem Neustart sollte das Plugin nun in der Liste
der installierten Plugins auftauchen.Der linuxpluginwrapper
funktioniert nur unter der &i386;-Architektur.OperaOperaOpera ist ein schneller,
vollwertiger und standardkonformer Browser, der wie Mozilla
über einen eingebauten E-Mail- und Newsreader verfügt.
Zusätzlich sind ein IRC-Client, ein RSS/Atom-Feeds-Reader
sowie weitere Programme enthalten. Dennoch handelt es sich bei
Opera weiterhin um ein relativ
kleines und sehr schnelles Programmpaket. Sie haben
die Wahl zwei Versionen dieses Browsers: Der
nativen FreeBSD-Version und der Linux-Version.Wenn Sie das Web mit der FreeBSD-Version von
Opera erkunden
wollen, installieren Sie das Paket:&prompt.root; pkg_add -r operaEinige FTP-Server haben nicht alle Pakete, Sie können
Opera aber über die Ports-Sammlung
installieren:&prompt.root; cd /usr/ports/www/opera
&prompt.root; make install cleanWenn Sie die Linux-Version des Browsers verwenden wollen,
ersetzen Sie in den Beispielen opera durch
linux-opera. Wenn Sie Plugins einsetzen
wollen, die nur für Linux erhältlich sind, wie
das Adobe &acrobat.reader; Plugin,
benötigen Sie die Linux-Version. Ansonsten sind die
FreeBSD- und Linux-Versionen des Browsers äquivalent.KonquerorKonquerorKonqueror ist Teil von
KDE, kann aber außerhalb
von KDE benutzt werden,
wenn der Port x11/kdebase3
installiert ist. Konqueror
ist mehr als nur ein Browser. Sie können das
Programm weiters zur Dateiverwaltung und zum Abspielen
von Multimedia-Dateien benutzen.Der Port misc/konq-plugins
installiert verschiedene Plugins für
Konqueror.Konqueror kann
&flash;-Seiten darstellen. Wie Sie
die &flash;-Unterstützung
aktiviern, können Sie unter
nachlesen.BüroanwendungenNeue Benutzer suchen oft ein komplettes Office-Paket oder eine
leicht zu bedienende Textverarbeitung. Einige
Benutzeroberflächen
wie KDE enthalten zwar ein Office-Paket,
diese werden in der Standardeinstellung unter FreeBSD aber nicht
installiert. Unabhängig von der verwendeten
Benutzeroberfläche können Sie diverse Office-Pakete aber
jederzeit über die Ports-Sammlung installlieren.Dieser Abschnitt behandelt die nachstehenden Anwendungen:AnwendungRessourcenbedarfInstallationsaufwand aus den Portswichtige AbhängigkeitenKOfficeniedrighochKDEAbiWordniedrigniedrigGtk+ oder
GNOMEThe GimpniedrighochGtk+OpenOffice.orghochenorm&jdk; 1.4,
MozillaKOfficeKOfficeOffice-PaketeKOfficeDie KDE-Gemeinschaft stellt ein Office-Paket bereit, das auch
außerhalb von KDE eingesetzt
werden kann. Es besteht aus vier, von anderen Office-Paketen
bekannten, Komponenten: KWord ist die
Textverarbeitung, KSpread die
Tabellenkalkulation, mit KPresenter
werden Präsentationen erstellt und
Kontour ist ein Zeichenprogramm.Stellen Sie vor der Installation des neusten
KOffice sicher, dass Sie eine aktuelle
Version von KDE besitzen.Mit dem folgenden Kommando installieren Sie das
KOffice-Paket:&prompt.root; pkg_add -r kofficeWenn das Paket nicht zur Verfügung steht, benutzen Sie
bitte die Ports-Sammlung. Wenn Sie beispielsweise
KOffice für
KDE3 installieren wollen, setzen Sie die
nachstehendenen Befehle ab:&prompt.root; cd /usr/ports/editors/koffice-kde3
&prompt.root; make install cleanAbiWordAbiWordAbiWord ist eine freie
Textverarbeitung, die ähnlich wie
µsoft; Word
ist. Sie können damit Artikel, Briefe, Berichte,
Notizen usw. verfassen. Das Programm ist
sehr schnell, besitzt viele Funktionen und ist sehr
benutzerfreundlich.AbiWord kann viele Dateiformate,
unter anderem nicht offene wie .doc von
µsoft;, importieren und exportieren.Das AbiWord-Paket installieren Sie
wie folgt:&prompt.root; pkg_add -r AbiWordSollte das Paket nicht zur Verfügung stehen, können
Sie das Programm mit der Ports-Sammlung, die zudem aktueller als
die Pakete ist, übersetzen. Gehen Sie dazu
folgendermaßen vor:&prompt.root; cd /usr/ports/editors/AbiWord
&prompt.root; make install cleanThe GIMPThe GIMPThe GIMP ist ein sehr ausgereiftes
Bildverarbeitungsprogramm mit dem Sie Bilder erstellen oder
retuschieren können. Sie können es sowohl als einfaches
Zeichenprogramm als auch zum retuschieren von Fotografien benutzen.
Das Programm besitzt eine eingebaute Skriptsprache und es existieren
sehr viele Plug-Ins. The GIMP kann
Bilder in zahlreichen Formaten lesen und speichern und stellt
Schnittstellen zu Scannern und grafischen Tabletts zur
Verfügung.Sie installieren das Paket mit dem nachstehenden Befehl:&prompt.root; pkg_add -r gimpBenutzen Sie die Ports-Sammlung, wenn Ihr FTP-Server das Paket
nicht bereitstellt. Im Verzeichnis graphics
finden Sie das Handbuch The Gimp Manual.
Sie können alles mit den folgenden Befehlen
installieren:&prompt.root; cd /usr/ports/graphics/gimp
&prompt.root; make install clean
&prompt.root; cd /usr/ports/graphics/gimp-manual-pdf
&prompt.root; make install cleanDie Entwickler-Version von The GIMP
finden Sie im Verzeichnis graphics
der Ports-Sammlung. Das Handbuch ist im HTML-Format
(graphics/gimp-manual-html)
erhältlich.OpenOffice.orgOpenOffice.orgOffice-PaketeOpenOffice.orgOpenOffice.org enthält alles,
was von einem Office-Paket erwartet wird: Textverarbeitung,
Tabellenkalkulation, Präsentation und ein Zeichenprogramm.
Die Bedienung gleicht anderen Office-Paketen und das Programm
kann zahlreiche Dateiformate importieren und exportieren. Es gibt
lokalisierte Versionen mit angepassten Menüs,
Rechtschreibkontrollen und Wörterbüchern.Die Textverarbeitung von
OpenOffice.org speichert Dateien im
XML-Format. Dadurch wird die Verwendbarkeit der Dateien auf
anderen Systemen erhöht und die Handhabung der Daten
vereinfacht. Die Tabellenkalkulation besitzt eine Makrosprache
und eine Schnittstelle zu Datenbanken.
OpenOffice.org läuft auf
&windows;, &solaris;, Linux, FreeBSD und &macos; X. Weitere
Informationen über OpenOffice.org
finden Sie auf der OpenOffice.org Website.
Spezifische Informationen für FreeBSD finden Sie auf
der Webseite FreeBSD OpenOffice.org
Porting Team. Von dort können Sie auch direkt
das OpenOffice-Paket herunterladen.OpenOffice.org installieren Sie wie
folgt:&prompt.root; pkg_add -r openoffice.orgDiese Art der Installation sollte mit einer -RELEASE-Version
funktionieren. Verwenden Sie eine andere Version, sollten Sie
die Internetseite des &os; OpenOffice.org
Porting Teams besuchen und
das entsprechende Paket herunterladen und über
&man.pkg.add.1; installieren, wobei Sie zwischen der aktuellen
Version und der Entwicklerversion wählen können.Nachdem das Paket installiert ist, müssen Sie
lediglich folgenden Befehl eingeben, um
OpenOffice.org zu starten:&prompt.user; openoffice.orgNach dem ersten Start werden Ihnen einige Fragen gestellt.
Außerdem wird in Ihrem Heimatverzeichnis der neue
Unterordner .openoffice.org2
angelegt.Falls die OpenOffice.org-Pakete
nicht zur Verfügung stehen, können Sie immer noch die
Ports-Sammlung benutzen. Beachten Sie aber bitte, dass Sie sehr
viel Plattenplatz und Zeit benötigen, um die Quellen zu
übersetzen.&prompt.root; cd /usr/ports/editors/openoffice-2
&prompt.root; make install cleanWenn Sie ein lokalisierte Version bauen wollen, ersetzen
Sie den letzten Befehl durch die folgende Zeile:&prompt.root; make LOCALIZED_LANG=Ihre_Sprache install cleanDabei ersetzen Sie Ihre_Sprache
durch den korrekten ISO-Code. Eine Liste der
unterstützten Codes enthält die Datei
files/Makefile.localized, die sich im
Portsverzeichnis befindet.Nachdem die Installation abgeschlossen ist, können Sie
OpenOffice.org durch folgenden
Befehl starten:&prompt.user; openoffice.orgAnzeigen von DokumentenEinige neuere Dokumentformate, die sich aktuell großer
Beliebtheit erfreuen, können Sie sich mit den im Basissystem
enthaltenen Programmen und Werkzeugen nicht ansehen.
Dieser Abschnitt behandelt Programme, mit denen Sie sich Dokumente in
unterschiedlichsten Formaten ansehen können.Die nachstehenden Anwendungen werden behandelt:AnwendungRessourcenbedarfInstallationsaufwand aus den Portswichtige Abhängigkeiten&acrobat.reader;niedrigniedrigLinux Binary CompatibilitygvniedrigniedrigXaw3dXpdfniedrigniedrigFreeTypeGQviewniedrigniedrigGtk+ oder
GNOME&acrobat.reader;Acrobat ReaderPDFanzeigenViele Dokumente werden heute im Portable Document
Format (PDF) zur Verfügung gestellt. PDF-Dokumente
schauen Sie sich am Besten mit dem Programm
&acrobat.reader; an, das von
Adobe für Linux freigegeben
wurde. Da Linux-Programme unter FreeBSD laufen, steht Ihnen das
Programm auch hier zur Verfügung.Um &acrobat.reader; 7 über
die Ports-Sammlung zu installieren, geben Sie Folgendes ein:&prompt.root; cd /usr/ports/print/acroread7
&prompt.root; make install cleanAufgrund der Lizenzbedinungen ist eine Paketversion leider
nicht verfügbar.gvgvPDFanzeigenPostScriptanzeigengv kann &postscript;- und
PDF-Dokumente anzeigen. Es stammt von
ghostview ab, besitzt aber wegen der
Xaw3d-Bibliothek eine
schönere Benutzeroberfläche.
In gv können Sie viele Operationen
durchführen: Sie können die Ausrichtung
und die Papiergröße eines Dokuments ändern,
das Dokument skalieren oder die Kantenglättung
(Anti-Aliasing) aktivieren. Fast
jede Operation kann sowohl mit der Tastatur als auch mit der Maus
durchgeführt werden.Installieren Sie das gv-Paket wie
folgt:&prompt.root; pkg_add -r gvBenutzen Sie die Ports-Sammlung, wenn das Paket nicht zur
Verfügung steht:&prompt.root; cd /usr/ports/print/gv
&prompt.root; make install cleanXpdfXpdfPDFanzeigenEin schlankes und effizientes Programm zum Betrachten von
PDF-Dateien ist Xpdf. Es benötigt
wenige Ressourcen und ist sehr stabil. Da das Programm die Standard
X-Zeichensätze benutzt, ist es nicht auf &motif; oder ein
anderes X-Toolkit angewiesen.Das Xpdf-Paket können Sie mit
dem folgenden Kommando installieren:&prompt.root; pkg_add -r xpdfWenn das Paket nicht verfügbar ist, oder Sie lieber die
Ports-Sammlung benutzen möchten, gehen Sie wie folgt vor:&prompt.root; cd /usr/ports/graphics/xpdf
&prompt.root; make install cleanWenn Sie nach Abschluss der Installation
Xpdf starten, öffnen Sie
das Menü mit der rechten Maustaste.GQviewGQviewMit GQview lassen sich Bilder
verwalten. Unter anderem können Sie sich Bilder (auch auf dem
ganzen Bildschirm) anschauen, ein externes Werkzeug aufrufen und
eine Vorschau (thumbnail) erzeugen.
Weiterhin können Sie automatisch ablaufende
Präsentationen erstellen und grundlegende Dateioperationen
durchführen, Bildersammlungen verwalten und doppelte Bilder
aufspüren. GQview ist
internationalisiert, das heißt es berücksichtigt die
Spracheinstellungen des Systems.Wenn Sie das GQview-Paket
installieren wollen, geben Sie das folgende Kommando ein:&prompt.root; pkg_add -r gqviewIst das Paket nicht erhältlich, oder wenn Sie die
Ports-Sammlung bevorzugen, setzen Sie die folgenden Kommandos
ab:&prompt.root; cd /usr/ports/graphics/gqview
&prompt.root; make install cleanFinanzsoftwareWenn Sie, warum auch immer, Ihre Finanzen mit einem FreeBSD
Arbeitsplatz verwalten wollen, stehen Ihnen verschiedene Anwendungen
zur Verfügung. Einige von ihnen unterstützen verbreitete
Formate, darunter Dateiformate, die von
Quicken
oder Excel verwendet werden.Dieser Abschnitt behandelt die folgenden Anwendungen:AnwendungRessourcenbedarfInstallationsaufwand aus den Portswichtige AbhängigkeitenGnuCashniedrighochGNOMEGnumericniedrighochGNOMEAbacusniedrigniedrigTcl/Tk
+
+
+ KMyMoney
+ niedrig
+ hoch
+ KDE
+ GnuCashGnuCashGnuCash ist Teil des
GNOME-Projekts, dessen Ziel es ist,
leicht zu bedienende und doch leistungsfähige Anwendungen zu
erstellen. Mit GnuCash können Sie
Ihre Einnahmen und Ausgaben, Ihre Bankkonten und Wertpapiere
verwalten. Das Programm ist leicht zu bedienen und genügt
dennoch hohen Ansprüchen.GnuCash stellt ein Register,
ähnlich dem in einem Scheckheft und ein hierarchisches System
von Konten zur Verfügung. Eine Transaktion kann in einzelne
Teile aufgespaltet werden. GnuCash kann
Quicken-Dateien (QIF) importieren und einbinden. Weiterhin
unterstützt das Programm die meisten internationalen Formate
für Zeitangaben und Währungen. Die Bedienung des
Programms kann durch zahlreiche Tastenkombinationen und dem
automatischen Vervollständigen von Eingaben beschleunigt
werden.Das GnuCash-Paket installieren Sie
wie folgt:&prompt.root; pkg_add -r gnucashWenn das Paket nicht zur Verfügung steht, benutzen Sie die
Ports-Sammlung:&prompt.root; cd /usr/ports/finance/gnucash
&prompt.root; make install cleanGnumericGnumericTabellenkalkulationGnumericGnumeric ist eine
Tabellenkalkulation, die Teil der GNOME
Benutzeroberfläche ist. Das Programm kann Eingaben anhand des
Zellenformats oder einer Folge von Eingaben vervollständigen.
Dateien verbreiteter Formate, wie die von
Excel,
Lotus 1-2-3 oder
Quattro Pro lassen sich importieren.
Grafiken erstellt Gnumeric mit dem
Programm math/guppi.
Gnumeric besitzt viele eingebaute
Funktionen und Zellenformate (zum Beispiel die üblich
verwendeten, wie Zahl, Währung, Datum oder Zeit).Installieren Sie das Gnumeric-Paket
mit dem folgenden Kommando:&prompt.root; pkg_add -r gnumericWenn das Paket nicht zur Verfügung steht, benutzen Sie die
Ports-Sammlung:&prompt.root; cd /usr/ports/math/gnumeric
&prompt.root; make install cleanAbacusAbacusTabellenkalkulationAbacusAbacus ist eine kleine und leicht zu
bedienende Tabellenkalkulation. Die vordefinierten Funktionen
stammen aus verschiedenen Bereichen wie der Statistik, der
Wirtschaft und der Mathematik. Das Programm kann Dateien im
Excel Dateiformat importieren und
exportieren sowie Ausgaben in &postscript; erzeugen.Installieren Sie das Abacus-Paket
mit dem folgenden Kommando:&prompt.root; pkg_add -r abacusWenn das Paket nicht zur Verfügung steht, benutzen Sie die
Ports-Sammlung:&prompt.root; cd /usr/ports/deskutils/abacus
+&prompt.root; make install clean
+
+
+
+ KMyMoney
+
+ KMyMoney
+
+
+ Tabellenkalkulation
+ KMyMoney
+
+
+ Bei KMyMoney handelt es sich
+ ein Programm zur Verwaltung der persönlichen Finanzen, das
+ unter KDE entwickelt wird. KMyMoney hat das Ziel, alle
+ wichtigen Funktionen zu bieten, die auch von kommerziellen
+ Programmen zur Verwaltung der persönlichen Finanzen
+ unterstützt werden. Weiters zählen einfache
+ Benutzung sowie korrekte doppelte Buchführung zu den
+ herausragenden Fähigkeiten dieses Programms. KMyMoney
+ unterstützt den Import von Datendateien im Format
+ Quicken Interchange Format (QIF),
+ kann Investionen verfolgen, unterstützt verschiedene
+ Währungen und bietet umfangreiche Reportmöglichkeiten.
+ OFX-Import wird über ein separates Plugin realisiert.
+
+ Um KMyMoney über das
+ &os;-Paketsystem zu installieren, geben Sie Folgendes ein:
+
+ &prompt.root; pkg_add -r kmymoney2
+
+ Sollte das Paket nicht verfügbar sein, können Sie
+ das Programm auch über die Ports-Sammlung
+ installieren:
+
+ &prompt.root; cd /usr/ports/finance/kmymoney2
&prompt.root; make install cleanZusammenfassungFreeBSD wird von Internet Service Providern wegen seiner
Schnelligkeit und Stabilität eingesetzt, es ist aber auch
zum Einrichten eines Arbeitsplatzes geeignet. Mit tausenden
Anwendungen, die als
Pakete oder
Ports
zur Verfügung stehen, können Sie sich einen
Arbeitsplatz nach Ihren Wünschen einrichten.Die folgende Aufstellung fasst die in diesem Kapitel besprochenen
Anwendungen zusammen:AnwendungPaket-NamePort-NameMozillamozillawww/mozilla&netscape;linux-netscape7www/netscape7Operaoperawww/operaFirefoxfirefoxwww/firefoxKOfficekoffice-kde3editors/koffice-kde3AbiWordabiwordeditors/abiwordThe GIMPgimpgraphics/gimpOpenOffice.orgopenofficeeditors/openoffice-1.1&acrobat.reader;acroreadprint/acroread7gvgvprint/gvXpdfxpdfgraphics/xpdfGQviewgqviewgraphics/gqviewGnuCashgnucashfinance/gnucashGnumericgnumericmath/gnumericAbacusabacusdeskutils/abacus
diff --git a/de_DE.ISO8859-1/books/handbook/install/chapter.sgml b/de_DE.ISO8859-1/books/handbook/install/chapter.sgml
index 1ad4eb750c..65f57b156c 100644
--- a/de_DE.ISO8859-1/books/handbook/install/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/install/chapter.sgml
@@ -1,5187 +1,5333 @@
JimMockÜberarbeitet und teilweise neu
geschrieben von RandyPrattDer Gang durch sysinstall und alle
Bildschirmabzüge von MartinHeinenÜbersetzt von &os; installierenÜbersichtInstallation
+
+ Dieses Kapitel wird in der deutschen Version gerade
+ überarbeitet. Im Zweifelsfall ist es daher ratsam,
+ das
+ Original in englischer Sprache zu lesen. Wenn Sie
+ helfen wollen, dieses Kapitel zu übersetzen, senden Sie
+ bitte eine E-Mail an die Mailingliste &a.de.translators;.
+
+
&os; wird mit dem textorientierten Programm
sysinstall installiert. Distributoren
können ein anderes Installationsprogramm verwenden,
voreingestellt ist jedoch sysinstall.
Dieses Kapitel zeigt Ihnen, wie Sie mithilfe von
sysinstall &os; installieren.Dieses Kapitel behandelt folgende Punkte:Das Erzeugen von &os;-Startdisketten.Wie &os; Platten anspricht und aufteilt.Wie sysinstall
ausgeführt wird.Die Menüs von sysinstall
und die erforderlichen Eingaben in den Menüs.Bevor Sie dieses Kapitel lesen, sollten SieDie Hardware-Notes der &os;-Release, die Sie
installieren wollen, lesen und sicherstellen, dass
Ihre Hardware unterstützt wird.Diese Installationsanleitung gilt für Rechner
mit &i386;-Architektur (PC-kompatible Rechner). Abweichende
Anweisungen für andere Plattformen (beispielsweise Alpha)
werden wo notwendig gegeben. Obwohl diese Anleitung so aktuell
wie möglich ist, kann das Installationsverfahren
von dem hier gezeigten geringfügig abweichen.
Legen Sie bitte daher diese Anleitung nicht
wortwörtlich aus, sondern lassen Sie sich von
diesem Kapitel durch den Installationsprozess leiten.Hardware-AnforderungenMinimalkonfigurationDie zur Installation von &os; erforderliche
Minimalkonfiguration hängt von der zu installierenden
&os;-Version sowie von der Hardware-Architektur ab.Informationen zur jeweiligen Minimalkonfiguration finden
Sie in Installation Notes auf der Unterseite Release
Information der &os;-Internetseiten. Die folgenden
Abschnitte fassen diese Informationen zusammen. Je nachdem,
wie Sie &os; installieren, benötigen Sie eventuell auch
ein Diskettenlaufwerk, ein unterstütztes CD-ROM-Laufwerk,
oder auch eine Netzwerkkarte. des Handbuchs enthält
weitere Informationen zu den verschiedenen
Installationsarten.Die i386- und pc98-ArchitekturSowohl &os;/i386 als auch &os;/pc98 benötigen
jeweils mindestens einen 486-Prozessor sowie mindestens
24 MB RAM. Außerdem benötigen Sie für
eine Minimalinstallation mindestens 150 MB freien
Platz auf Ihrer Festplatte.In den meisten derartigen Konfigurationen ist es
besser, für mehr RAM und mehr Plattenplatz zu sorgen,
statt einen schnelleren Prozessor einzubauen.Die Alpha-Architektur
+ Alpha
+
Um &os;/alpha zu installieren, benötigen Sie
eine unterstützte Plattorm (lesen Sie dazu auch
des
Handbuchs) sowie eine
seperate Festplatte für die &os;-Installation.
Es ist nicht derzeit möglich, die Platte mit einem
weiteren Betriebssystem zu teilen. Diese seperate Platte
muss an einen SCSI-Controller angeschlossen sein, der von
der SRM-Firmware unterstützt wird. Alternativ
können Sie auch eine IDE-Platte verwenden, wenn Ihr
SRM das Starten von IDE-Platten unterstützt.
+ ARC
+ Alpha BIOS
+ SRM
+
Für die &os;-Installation benötigen Sie die
SRM-Konsolen-Firmware für Ihre Plattform. Manchmal
ist es möglich, zwischen der AlphaBIOS-Firmware
(auch ARC genannt) und SRM zu wechseln. Ist dies bei
Ihnen nicht möglich, müssen Sie sich die neue
Firmware von der Internetseite Ihres Herstellers
herunterladen.Die amd64-Architektur&os;/amd64 benötigt für den Betrieb
mindestens einen AMD Athlon 64-,
AMD Athlon 64-FX-, oder einen
AMD Opteron-Prozessor.Wenn Sie einen auf dem Chipsatz nVidia nForce3 Pro-150
basierenden Rechner haben, müssen
Sie im BIOS das IO-APIC deaktivieren. Erlaubt ihr BIOS
dies nicht, müssen Sie stattdessen ACPI deaktivieren.
Der Grund dafür sind Fehler im Pro-150-Chipsatz, die
bis jetzt nicht behoben werden konnten.Die &sparc64;-ArchitekturUm &os;/&sparc64; zu installieren, benötigen Sie
eine unterstützte Plattform (lesen Sie dazu auch
des
Handbuchs).Sie benötigen außerdem eine seperate
Festplatte, wenn Sie &os;/&sparc64; installieren wollen,
da es derzeit leider noch nicht möglich ist, die
Platte mit einem weiteren Betriebssystem zu teilen.Unterstützte HardwareDie Hardware-Notes, die mit jedem &os;-Release
ausgeliefert werden, enthalten eine Liste lauffähiger
Hardware. Die Hardware-Notes befinden sich üblicherweise
in der Datei HARDWARE.TXT im
Wurzelverzeichnis der Distribution (CD-ROM oder FTP).
Sie können die Hardware-Notes außerdem im
Dokumentationsmenü von
sysinstall oder auf der Webseite
Release Information
lesen.Vor der InstallationErstellen Sie eine GerätelisteBevor Sie &os; installieren, erfassen Sie die Komponenten
Ihres Rechners. Die &os;-Installation wird die Komponenten
(Festplatten, Netzwerkkarten, CD-ROM-Laufwerke) zusammen
mit der Modellbezeichnung und des Herstellers anzeigen.
&os; wird auch versuchen, die richtige Konfiguration der
Geräte zu ermitteln. Dazu gehören die benutzten
Interrupts (IRQ) und IO-Ports. Wegen der Unwägbarkeiten
von PC-Hardware kann die Konfiguration der Geräte
allerdings fehlschlagen. In diesem Fall müssen Sie
die von &os; ermittelte Konfiguration korrigieren.Wenn Sie schon ein anderes Betriebssystem, wie &windows;
oder Linux installiert haben, können Sie die
Hardware-Konfiguration mit den Mitteln dieses Betriebssystems
bestimmen. Wenn Sie nicht sicher sind, welche Einstellungen
eine Erweiterungskarte besitzt, sehen Sie auf der Karte
selbst nach. Manchmal sind die Einstellungen dort
aufgedruckt. Gebräuchliche IRQs sind 3,
5 und 7. Die
Adressen von IO-Ports werden normalerweise hexadezimal,
zum Beispiel 0x330, angegeben.Halten Sie die Gerätekonfiguration vor der
Installation in einer Tabelle wie der nachstehenden fest:
GerätekonfigurationGerätIRQIO-PortsAnmerkungerste Festplatte--40 GB, Seagate, erster IDE-MasterCD-ROM--erster IDE-Slavezweite Festplatte--20 GB, IBM, zweiter IDE-Mastererster IDE-Controller140x1f0Netzwerkkarte--&intel; 10/100Modem--&tm.3com; 56K Faxmodem, an COM1…
Nachdem Sie wissen, über welche Hardware Ihr Rechner
verfügt, müssen Sie diese Informationen mit den
Hardwareanforderungen der zu installierenden &os;-Version
abgleichen.Sichern Sie Ihre DatenWenn der Rechner, auf dem Sie &os; installieren wollen,
wichtige Daten enthält, sichern Sie bitte diese Daten.
Prüfen Sie auch, dass Sie die Daten aus der Sicherung
wiederherstellen können, bevor Sie &os; installieren.
Die &os;-Installation fragt zwar nach, bevor Sie Daten auf Ihre
Festplatte schreibt, Ihre Daten sind allerdings unwiderruflich
verloren, wenn der Installationsvorgang einmal angelaufen
ist.Den Installationsort von &os; festlegenWenn Sie die gesamte Festplatte für &os; verwenden
wollen, müssen Sie sich an dieser Stelle keine weiteren
Gedanken machen – lesen Sie bitte im nächsten Abschnitt
weiter.Wenn Sie allerdings &os; neben anderen Betriebssystemen
betreiben wollen, müssen Sie wissen, wie Daten auf
einer Festplatte abgelegt werden und welche Auswirkungen
dies hat.Platteneinteilung von &i386;-SystemenEine PC-Festplatte wird in einzelne Bereiche unterteilt,
die Partitionen heißen.
&os; verwendet intern ebenfalls Partitionen. Um
Verwechslungen und Unklarheiten zu vermeiden, werden diese
Plattenbereiche unter &os; als Slices bezeichnet. So
verwendet beispielsweise das Werkzeug
fdisk den Begriff Slices, um sich auf
PC-Partitionen zu beziehen. Auf
einer PC-Festplatte können maximal vier Partitionen,
die primäre Partitionen genannt
werden, angelegt werden. Eine
erweiterte Partition hebt diese
Beschränkung auf. Eine Festplatte kann nur eine
erweiterte Partition enthalten, die wiederum weitere
so genannte logische Partitionen
enthalten kann.Jede Partition besitzt eine Partitions-ID
– eine Zahl, die den Typ der Partition festlegt.
&os;-Partitionen tragen die Partitions-ID
165.Üblicherweise kennzeichnen Betriebssysteme Partitionen
in einer besonderen Art und Weise. Beispielsweise werden
jeder primären und logischen Partition unter DOS
und dem verwandten &windows; Laufwerksbuchstaben beginnend
mit C: zugewiesen.&os; muss auf einer primären Partition installiert
werden. In dieser Partition hält &os; alle Daten
einschließlich der Dateien, die Sie anlegen.
Verfügt das System über mehrere Festplatten,
können Sie auf allen oder einigen Platten eine
&os;-Partition einrichten. Zur Installation von &os;
benötigen Sie eine freie Partition: Dies kann eine
extra für die Installation eingerichtete Partition
sein oder eine existierende Partition, die nicht mehr
benötigte Daten enthält.Wenn auf allen Platten bereits sämtliche Partitionen
benutzt werden, müssen Sie eine der Partitionen
für &os; frei machen. Benutzen Sie dazu die Werkzeuge
des eingesetzten Betriebssystems (fdisk
unter DOS oder &windows;).Verfügt das System über eine freie Partition,
benutzen Sie diese Partition. Es kann allerdings sein,
dass Sie eine oder mehrere der vorhandenen Partitionen
vorher verkleinern müssen.Eine minimale &os;-Installation benötigt nur
100 MB Plattenplatz. Diese Installation ist
allerdings sehr begrenzt und
lässt wenig Platz für Ihre eigenen Dateien.
Realistischer sind 250 MB für &os; ohne
graphische Benutzeroberfläche und 350 MB
für &os; mit einer graphischen Benutzeroberfläche.
Sie benötigen weiteren Platz für die Installation
zusätzlicher Software.Um die Partitionen zu verkleinern, können Sie
beispielsweise das kommerzielle
&partitionmagic; oder das freie
GParted benutzen. Alternativ
enthält das Verzeichnis
tools
der CD-ROM für diesen Zweck bereits die freien
Werkzeuge FIPS und
PResizer. Die Dokumentation
zu beiden Werkzeugen befindet sich ebenfalls in diesem
Verzeichnis. FIPS und
PResizer können
nur die Größen von FAT16-
und FAT32-Partitionen verändern,
während GParted und
&partitionmagic; auch
NTFS-Partitionen verändern
- können.
+ können. GParted ist auf
+ vielen Linux-Live-CDs, beispielsweise der SystemRescueCD,
+ verfügbar.
+
+ Bei der Veränderung von µsoft; Vista-Partionen
+ kommt es manchmal zu Problemen. In einem solchen Fall ist es
+ von Vorteil, wenn Sie eine Vista-Installations-CD zur
+ Verfügung haben. Wie bei jeder Änderung an Ihrer
+ Festplatte sollten Sie auch hier zuerst ein aktuelles Backup
+ anlegen.Der falsche Gebrauch dieser Werkzeuge kann
Daten auf der Festplatte löschen. Vor dem
Einsatz dieser Werkzeuge stellen Sie bitte sicher,
dass Sie frische, funktionierende Datensicherungen
besitzen.Eine bestehende Partition verwendenNehmen wir an, Sie haben einen Rechner mit einer
4 GB Festplatte auf der schon eine Version von
&windows; installiert ist. Weiterhin haben Sie die
Platte in zwei Laufwerke C:
und D: unterteilt, die jeweils
2 GB groß sind. Auf C:
wird 1 GB benutzt und 0,5 GB von Laufwerk
D: werden benutzt.Sie haben also eine Festplatte mit zwei Partitionen
und könnten alle Daten von Laufwerk
D: auf das Laufwerk
C: kopieren. Damit wäre
die zweite Partition für &os; frei.Eine bestehende Partition verkleinernNehmen wir an, Sie haben einen Rechner mit einer
4 GB Festplatte auf der schon eine Version von
&windows; installiert ist. Während der Installation
von &windows; haben sie eine große Partition
C: angelegt, die 4 GB
groß ist. Von den 4 GB werden 1,5 GB
benutzt und Sie wollen 2 GB für &os; verwenden.Sie haben zwei Möglichkeiten, &os; zu
installieren:Sichern Sie die Daten der &windows;-Partition und
installieren Sie &windows; erneut auf einer 2 GB
großen Partition.Verkleinern Sie die &windows;-Partition mit
einem der oben aufgeführten Werkzeuge.Platteneinteilung von Alpha-SystemenAlphaAuf einer Alpha müssen Sie &os; auf einer
eigenen Festplatte installieren. Zurzeit können
Sie diese Festplatte nicht mit einem anderen Betriebssystem
zusammen benutzen. Abhängig von der Alpha-Maschine,
die Sie besitzen, können Sie eine SCSI- oder eine
IDE-Festplatte verwenden; Voraussetzung ist, dass Sie
das System von der gewählten Platte starten
können.Entsprechend den Konventionen der Handbücher
von Digital/Compaq werden Eingaben im SRM in
Großbuchstaben dargestellt. Der SRM beachtet
Groß- und Kleinschreibung nicht.Das SRM-Kommando SHOW DEVICE
zeigt die Art und die Namen der Laufwerke des Systems
an. Geben Sie das Kommando an der SRM-Eingabeaufforderung
ein:>>>SHOW DEVICE
dka0.0.0.4.0 DKA0 TOSHIBA CD-ROM XM-57 3476
dkc0.0.0.1009.0 DKC0 RZ1BB-BS 0658
dkc100.1.0.1009.0 DKC100 SEAGATE ST34501W 0015
dva0.0.0.0.1 DVA0
ewa0.0.0.3.0 EWA0 00-00-F8-75-6D-01
pkc0.7.0.1009.0 PKC0 SCSI Bus ID 7 5.27
pqa0.0.0.4.0 PQA0 PCI EIDE
pqb0.0.1.4.0 PQB0 PCI EIDEDie Ausgabe stammt von einer Digital Personal Workstation
433au und zeigt drei an das System angeschlossene Laufwerke.
Das erste Laufwerk ist ein CD-ROM mit dem Namen
DKA0, die anderen beiden sind
Festplatten mit den Namen DKC0
und DKC100.Laufwerke mit Namen wie DKx
sind SCSI-Laufwerke. Der Name DKA100
zeigt ein SCSI-Laufwerk mit der SCSI-ID 1 auf dem ersten
SCSI-Bus (A) an. DKC300 zeigt
ein SCSI-Laufwerk mit der SCSI-ID 3 auf dem dritten
SCSI-Bus (C) an. SCSI Host-Bus-Adapter werden mit
dem Namen PKx bezeichnet.
Wie in der Ausgabe von SHOW DEVICE
gezeigt, werden SCSI-CD-ROM-Laufwerke wie andere
SCSI-Festplatten behandelt.IDE-Laufwerke werden mit DQx
bezeichnet, der dazugehörige IDE-Controller
heißt PQx.Netzwerkparameter ermittelnWird während der Installation ein
Netzwerk benötigt (weil Sie über
FTP oder von einem NFS-Server installieren wollen),
müssen Sie die Konfiguration des Netzwerks kennen.
Während der Installation werden Netzwerkparameter
abgefragt, damit sich &os; mit dem Netzwerk verbinden
und die Installation abschließen kann.Verbindung über Ethernet oder ein Kabel/DSL-ModemWenn Sie sich mit einem Ethernet verbinden oder eine
Internet-Verbindung mit einem Ethernet-Adapter über
Kabel oder DSL herstellen, benötigen Sie die nachstehenden
Daten:IP-AdresseIP-Adresse des Default-GatewaysHostnameIP-Adressen der DNS-ServerSubnetzmaskeWenn Sie die Daten nicht besitzen, fragen Sie bitte
Ihren Systemadministrator oder Ihren Service-Provider.
Können die Daten über DHCP
bezogen werden, merken Sie sich diese Tatsache.Verbindung über ein ModemAuch wenn Sie sich mit einem normalen Modem bei
einem ISP einwählen, können Sie &os; aus
dem Internet installieren. Die Installation über
ein Modem dauert nur sehr lange.Sie benötigen die nachstehenden Daten:Die Telefonnummer des ISPs.Die COM-Schnittstelle, an der das Modem
angeschlossen ist.Den Benutzernamen und das Passwort für
Ihr Konto.Lesen Sie die &os;-ErrataAuch wenn das &os;-Project bemüht ist, ein
Release so stabil wie möglich herzustellen, treten
ab und an Fehler auf. In seltenen Fällen betrifft
ein Fehler die Installations-Prozedur. Die Fehler und
deren Behebungen werden in den
&os;-Errata
festgehalten. Lesen Sie bitte die Errata bevor Sie &os;
installieren, damit Sie nicht in frisch entdeckte
Probleme laufen.Dokumentation zu jedem Release, inklusive der Errata
zu jedem Release, finden Sie im
Release-Abschnitt
des FreeBSD
Webauftritts..Die Installationsdateien beschaffen&os; kann von Dateien aus irgendeiner der
nachstehenden Quellen installiert werden:Lokale Medienvon einer CD-ROM oder einer DVDvon einer DOS-Partition auf demselben Rechnervon einem SCSI- oder QIC-Bandlaufwerkvon DiskettenNetzwerkvon einem FTP-Server, wenn erforderlich auch durch
eine Firewall oder durch einen HTTP-Proxyvon einem NFS-Serverüber eine feste serielle oder
eine feste parallele VerbindungWenn Sie eine &os;-CD oder &os;-DVD gekauft haben,
besitzen Sie schon alles, was Sie zur Installation
benötigen. Lesen Sie bitte im nächsten
Abschnitt () weiter.Wenn Sie sich die &os;-Installationsdateien noch nicht
besorgt haben, lesen Sie bitte zuerst den
. Dort werden die
notwendigen Vorbereitungen für eine Installation
von den eben genannten Medien beschrieben. Wenn Sie
den Abschnitt durchgearbeitet haben, lesen Sie bitte
in weiter.Das Startmedium vorbereitenUm &os; zu installieren, müssen Sie Ihren Rechner
mit einem speziellen Startmedium hochfahren, das die
Installationsroutine startet. Sie können das
Installationsprogramm nicht unter einem anderen Betriebssystem
ausführen. Ein Rechner startet normalerweise das
auf der Festplatte installierte Betriebssystem, er kann
aber auch von Disketten gestartet werden. Heutige Rechner
können ebenfalls mit einer CD-ROM gestartet werden.Wenn Sie eine &os; CD-ROM oder DVD besitzen (gekauft
oder selbst erstellt) und Ihr Rechner von CD-ROM oder DVD
starten kann (üblicherweise können Sie das
mit der BIOS-Option einstellen),
können Sie diesen Abschnitt überspringen.
Eine &os; CD-ROM oder DVD lässt sich direkt starten;
Sie können damit &os; ohne weitere Vorbereitungen
installieren.Um Startdisketten zu erzeugen, benutzen Sie die
nachstehende Anleitung:Abbilder der Startdisketten besorgenDie Abbilder Startdisketten befinden sich auf dem
Installationsmedium im Verzeichnis
floppies/; sie
können auch aus dem Internet heruntergeladen werden:
ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/.
Ersetzen Sie <arch> und
<version> durch die
passende Architektur und die passende Version.
Beispielsweise stehen die Startdisketten von
&os; &rel.current;-RELEASE für &i386; unter
.Die Abbilder besitzen die Dateinamenerweiterung
.flp. Im Verzeichnis
floppies/ befinden
sich verschiedene Abbilder; welches Sie benutzen,
hängt von der zu installierenden &os;-Version
und in einigen Fällen vom Zielrechner ab. In den
meisten Fällen werden Sie vier Disketten benötigen:
boot.flp,
kern1.flp,
kern2.flp sowie
kern3.flp.
Lesen Sie bitte die Datei README.TXT
im Verzeichnis floppies/,
sie enthält aktuelle Informationen zu den
Abbildern.Wenn Sie die Abbilder aus dem Internet herunterladen,
benutzen Sie bitte den Binärmodus
des FTP-Programms. Einige Web-Browser verwenden den
Textmodus (oder
ASCII-Modus), was dazu führt,
dass sich die erstellten Disketten nicht starten
lassen.Die Disketten vorbereitenPro Abbild benötigen Sie eine Diskette.
Es ist wichtig, dass die verwendeten Disketten fehlerfrei
sind. Sie können dies sicherstellen, indem Sie die
Disketten selbst formatieren, verlassen Sie sich bitte
nicht auf vorformatierte Disketten. Das Formatierprogramm
von &windows; zeigt fehlerhafte Blöcke nicht an,
es markiert die Blöcke einfach als fehlerhaft und
ignoriert sie dann. Benutzen Sie neue Disketten, wenn
Sie diese Installationsart verwenden.Wenn Sie &os; installieren und das Installationsprogramm
abstürzt, einfriert oder sich merkwürdig
verhält, sind oft fehlerbehaftete Disketten
die Ursache. Schreiben Sie die Abbilder auf neue
Disketten und versuchen Sie, noch mal zu installieren.Die Abbilder auf Disketten schreibenDie .flp-Dateien sind
keine normalen Dateien, die
Sie auf eine Diskette kopieren. Sie können
die Abbilder nicht von einem
Laufwerk auf ein anderes Laufwerk kopieren. Die
Abbilder werden mit einem speziellen Werkzeug direkt
auf die Diskette geschrieben.DOSWenn Sie die Startdisketten unter &ms-dos; oder
&windows; erstellen, können Sie das mitgelieferte
Werkzeug fdimage verwenden.Wenn Sie die Abbilder auf der CD-ROM verwenden und
das CD-ROM-Laufwerk den Laufwerksbuchstaben
E: besitzt, führen Sie
den nachstehenden Befehl aus:E:\>tools\fdimage floppies\boot.flp A:Führen Sie das Kommando für jede
.flp-Datei aus. Wechseln Sie
bitte jedes Mal die Diskette und beschriften Sie die
Diskette mit dem Namen der kopierten Datei. Falls Sie
die Abbilder an anderer Stelle liegen haben, passen Sie
bitte die Kommandozeile an. Wenn Sie keine CD-ROM
besitzen, können Sie fdimage
aus dem Verzeichnis
tools
des &os;-FTP-Servers herunterladen.Wenn Sie Startdisketten auf einem &unix; System
(zum Beispiel einem anderen &os; System) erstellen,
schreiben Sie die Abbilder mit dem Befehl &man.dd.1;
direkt auf die Disketten. Auf einem &os;-System
lautet die Kommandozeile:&prompt.root; dd if=boot.flp of=/dev/fd0Unter &os; spricht /dev/fd0
das erste Diskettenlaufwerk an (das Laufwerk
A:), /dev/fd1
spricht das Laufwerk B: an.
Andere &unix; Varianten verwenden unter Umständen
andere Gerätenamen, die in der Dokumentation
des jeweiligen Systems beschrieben sind.Nun ist alles für die &os;-Installation
vorbereitet.Die Installation startenDie Installationsprozedur lässt die Daten auf
Ihren Laufwerken solange unverändert bis die
nachstehende Meldung erscheint:Last Chance: Are you SURE you want continue the installation?
If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!
We can take no responsibility for lost disk contents!Vor dieser Meldung kann die Installationsprozedur
jederzeit abgebrochen werden, ohne die Daten auf der
Festplatte zu verändern. Wenn Sie meinen, etwas
falsch konfiguriert zu haben, können Sie vor
diesem Zeitpunkt einfach den Rechner ausschalten.Der SystemstartSystemstart von &i386;-SystemenSchalten Sie zunächst Ihren Rechner aus.Schalten Sie den Rechner ein. Während des
Starts sollte angezeigt werden, wie Sie das
Systemeinstellungsmenü (oder BIOS)
erreichen. Meist drücken Sie dazu die Tasten
F2, F10,
Del oder
AltS. Benutzen Sie die angezeigte Tastenkombination.
Viele Rechner zeigen beim Systemstart eine Grafik an.
Typischerweise können Sie die Grafik mit der
Taste Esc entfernen und so die
angezeigten Meldungen lesen.Suchen Sie Option, die einstellt von welchem Gerät
der Rechner startet. Normalerweise wird die Option
genannt und zeigt eine
Geräteliste, beispielsweise Floppy,
CD-ROM, First Hard Disk
an.Wenn Sie Startdisketten erstellt haben, wählen
Sie Floppy aus, wenn Sie von CD-ROM
starten, stellen Sie sicher, dass die CD-ROM ausgewählt
ist. Wenn Sie nicht sicher sind, lesen Sie bitte im
Handbuch des Rechners oder im Handbuch der Systemplatine
nach.Stellen Sie das gewünschte Startmedium ein
und sichern Sie die Einstellungen. Der Rechner sollte
dann neu starten.Wenn Sie, wie in
beschrieben, Startdisketten vorbereitet haben,
benötigen Sie nun die erste Diskette,
die boot.flp enthält.
Legen Sie diese Diskette in das Diskettenlaufwerk ein.Wenn Sie den Rechner von einer CD-ROM starten,
legen Sie die CD-ROM so früh wie möglich
in das Laufwerk ein.Wenn Ihr Rechner wie normal startet und das
existierende Betriebssystem lädt, kann das
folgende Ursachen haben:Das Startmedium (Diskette, CD-ROM) ist nicht schnell
genug eingelegt worden. Belassen Sie das Startmedium
im Laufwerk und starten Sie Ihren Rechner neu.Die BIOS-Einstellungen sind falsch vorgenommen
worden. Wiederholen Sie diesen Schritt, bis Sie
die richtige Einstellung gefunden haben.Das verwendete BIOS kann nicht von dem
gewünschten Medium starten.&os; startet jetzt. Wenn Sie von einer CD-ROM
starten, sehen Sie die folgenden Meldungen
(Versionsangaben entfernt):Booting from CD-Rom...
CD Loader 1.2
Building the boot loader arguments
Looking up /BOOT/LOADER... Found
Relocating the loader and the BTX
Starting the BTX loader
BTX loader 1.00 BTX version is 1.01
Console: internal video/keyboard
BIOS CD is cd0
BIOS drive C: is disk0
BIOS drive D: is disk1
BIOS 639kB/261120kB available memory
FreeBSD/i386 bootstrap loader, Revision 1.1
Loading /boot/defaults/loader.conf
/boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d]
\ Wenn Sie mit Startdisketten hochfahren, sehen
Sie folgende Meldungen (Versionsangaben entfernt):Booting from Floppy...
Uncompressing ... done
BTX loader 1.00 BTX version is 1.01
Console: internal video/keyboard
BIOS drive A: is disk0
BIOS drive C: is disk1
BIOS 639kB/261120kB available memory
FreeBSD/i386 bootstrap loader, Revision 1.1
Loading /boot/defaults/loader.conf
/kernel text=0x277391 data=0x3268c+0x332a8 |
Insert disk labelled "Kernel floppy 1" and press any key...Folgen Sie der Anweisung und entfernen Sie die
boot.flp-Diskette,
anschließend legen Sie die
kern1.flp-Diskette ein
und drücken Enter.
Starten Sie das System mit der ersten
Diskette und legen Sie, wenn Sie dazu aufgefordert
werden, die anderen Disketten ein.Unabhängig davon, ob Sie von Disketten
oder von CD-ROM gestartet haben, erscheint danach das
&os; Bootloader-Menü:&os; Boot Loader MenuWarten Sie entweder zehn Sekunden oder drücken
Sie Enter.Systemstart von Alpha-SystemenAlphaSchalten Sie zunächst Ihren Rechner aus.Schalten Sie den Rechner ein und warten Sie
auf die Eingabeaufforderung des Boot-Monitors.Wenn Sie, wie in
beschrieben, Startdisketten vorbereitet haben,
benötigen Sie nun die erste Diskette,
die boot.flp enthält.
Legen Sie diese Diskette in das Diskettenlaufwerk ein.
Das nachstehende Kommando startet den Rechner von
der Diskette (falls nötig, passen Sie den
Gerätenamen der Diskette an):>>>BOOT DVA0 -FLAGS '' -FILE ''Wenn Sie den Rechner von einer CD-ROM starten,
legen Sie die CD-ROM in das Laufwerk ein und
führen das folgende Kommando aus (wenn
nötig, passen Sie den Gerätenamen
des CD-ROM-Laufwerks an):>>>BOOT DKA0 -FLAGS '' -FILE ''&os; wird jetzt starten. Wenn Sie den Rechner
mit einer Diskette gestartet haben, wird irgendwann
die nachstehende Meldung erscheinen:Insert disk labelled "Kernel floppy 1" and press any key...Folgen Sie der Anweisung und entfernen Sie die
boot.flp-Diskette,
anschließend legen Sie die
kern1.flp-Diskette ein
und drücken Enter.Unabhängig davon, ob Sie von Disketten
oder von CD-ROM gestartet haben, wird folgende
Meldung erscheinen:Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 9 seconds... _Warten Sie entweder zehn Sekunden oder drücken
Sie Enter, danach erscheint das
Kernelkonfigurationsmenü.
+
+
+ Systemstart bei &sparc64;-Systemen
+
+ Die meisten &sparc64;-Systeme sind so konfiguriert, dass sie
+ automatisch von der Festplatte starten. Um &os; auf einem
+ solchen System zu installieren, müssen Sie das System aber
+ über das Netzwerk oder von einer CD-ROM starten. Daher
+ müssen Sie den Bootprozess unterbrechen und das System
+ über das PROM (OpenFirmware) starten.
+
+ Dazu starten Sie Ihr System neu und warten, bis die
+ Startmeldung erscheint. Der genaue Wortlaut hängt vom
+ eingesetzten Modell ab, die Nachricht sollte aber ähnlich
+ der folgenden aussehen:
+
+ Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
+Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved.
+OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
+Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.
+
+ Um den Startvorgang zu unterbrechen, drücken Sie nun
+ die Tastenkombination L1A
+ oder StopA.
+ Verwenden Sie eine serielle Verbindung, senden Sie das Signal
+ BREAK über die serielle Konsole
+ (etwa durch die Eingabe von ~# in den
+ Programmen &man.tip.1; oder &man.cu.1;). In beiden Fällen
+ landen Sie anschließend am PROM-Prompt:
+
+
+
+
+
+
+
+ ok
+ok {0}
+
+
+
+ Der auf Einprozessorsystemen verwendete Prompt.
+
+
+
+ Der Prompt auf Mehrprozessorsystemen. Die Zahl steht
+ dabei für die Anzahl der vorhandenen Prozessoren.
+
+
+
+
+ Nun legen Sie Ihre CD-ROM in das Laufwerk ein und geben am
+ PROM-Prompt boot cdrom ein. Danach startet Ihr
+ System von der eingelegten CD-ROM.
+
+ Die Geräteerkennung prüfenDie letzten paar Hundert Zeilen der Bildschirmausgabe
werden gesichert und können geprüft werden.Um sich den Bildschirmpuffer anzusehen, drücken
Sie die Taste Scroll-Lock. Im Puffer
können Sie mit den Pfeiltasten oder den Tasten
PageUp und PageDown
blättern. Um zur normalen Bildschirmausgabe
zurückzukehren, drücken Sie nochmals die Taste
Scroll-Lock.Prüfen Sie mit diesem Verfahren nun die Ausgaben
der Geräteerkennung. Sie werden einen Text ähnlich
wie in sehen. Die
genauen Ausgaben sind abhängig von den in Ihrem
System installierten Geräten.Ausgabe der Geräteerkennungavail memory = 253050880 (247120K bytes)
Preloaded elf kernel "kernel" at 0xc0817000.
Preloaded mfs_root "/mfsroot" at 0xc0817084.
md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4
md1: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <iSA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
0
usb0: <VIA 83572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
uhub0: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
q 11 at device 8.0 on pci0
dc0: Ethernet address: 00:04:5a:74:6b:b5
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
0 on pci0
ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/@ mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
plip0: <PLIP network interface> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
Mounting root from ufs:/dev/md0c
/stand/sysinstall running as init on vty0Prüfen Sie die Ausgabe der Geräteerkennung
sorgfältig und stellen Sie sicher, dass &os; alle
erwarteten Geräte gefunden hat. Wenn ein Gerät
nicht gefunden wurde, wird es nicht angezeigt. Ist dies
bei Ihnen der Fall, müssen Sie einen angepassten Kernel erstellen,
da das betroffene Gerät (beispielsweise eine Soundkarte)
in diesem Fall vom GENERIC-Kernel nicht
unterstützt wird.Ab &os; 6.2 gelangen Sie im nächsten Schritt
in ein Menü, in dem Sie über die Cursortasten das
Land, in dem Sie sich befinden, auswählen können
(). Durch die Bestätigung
mit der Enter-Taste wird automatisch das
von Ihnen gewählte Land sowie die dazu passende
Tastaturbelegung gewählt. Alternativ ist es auch hier
möglich, sysinstall zu verlassen
und von vorne zu beginnen.Ihr Land auswählensysinstall beendenWählen Sie mit den Pfeiltasten den Punkt
Exit Install des Hauptmenüs
aus. Nach der Auswahl wird die folgende Meldung
angezeigt: User Confirmation Requested
Are you sure you wish to exit? The system will reboot
(be sure to remove any floppies from the drives).
[ Yes ] NoWenn Sie die Auswahl mit &gui.yes;
bestätigen, wird das Installationsprogramm erneut
starten, falls sich die CD-ROM noch im Laufwerk befindet.Wenn Sie mit Disketten gestartet haben, müssen
Sie vor dem Neustart die
boot.flp-Diskette entfernen.Das Werkzeug sysinstallZum Installieren von &os; stellt das &os;-Project das
Werkzeug sysinstall zur
Verfügung. Das Werkzeug arbeitet textorientiert
und bietet eine Reihe von Menüs und Bildschirmen,
um den Installationsprozess zu konfigurieren und zu
steuern.Die Menüs von sysinstall
werden mit Tasten wie den Pfeiltasten, Enter,
Tab oder Space bedient.
Eine ausführliche
Beschreibung der Tastenbelegung ist in der Gebrauchsanweisung
von sysinstall enthalten.Die Gebrauchsanweisung können Sie lesen, indem
Sie den Menüpunkt Usage
auswählen. Stellen Sie sicher, dass die Schaltfläche
[Select], wie in
gezeigt, aktiviert ist
und drücken Sie die Taste Enter.Es erscheinen Anweisungen wie das Menüsystem zu
bedienen ist. Wenn Sie diese gelesen haben, drücken
Sie Enter, um in das Hauptmenü
zurückzukehren.Die Gebrauchsanweisung von sysinstall auswählenDie Dokumentation abrufenAus dem Hauptmenü wählen Sie mit den
Pfeiltasten Doc aus
und drücken Enter.Die Dokumentation abrufenEs wird das Dokumentationsmenü angezeigt.Das Dokumentationsmenü von sysinstallLesen Sie bitte unbedingt die mitgelieferte Dokumentation.Um ein Dokument zu lesen, wählen Sie das Dokument
mit den Pfeiltasten aus und drücken Enter.
Wenn Sie das Dokument gelesen haben, kommen Sie mit der
Taste Enter in das Dokumentationsmenü
zurück.Um in das Hauptmenü zurückzukommen,
wählen Sie mit den Pfeiltasten Exit
aus und drücken die Taste Enter.Die Tastaturbelegung ändernUm die Tastaturbelegung zu ändern, wählen
Sie den Menüpunkt Keymap
und drücken Enter. Dies ist nur
erforderlich wenn Sie eine nicht standard-konforme Tastatur
oder eine andere als eine amerikanische Tastatur einsetzen.Das Hauptmenü von sysinstallEine andere Tastaturbelegung können Sie mit den
Pfeiltasten markieren und der Taste Space
auswählen. Wenn Sie die Taste Space
nochmals drücken wird die Auswahl aufgehoben. Haben
Sie eine Tastaturbelegung ausgewählt, markieren Sie
mit den Pfeiltasten &gui.ok; und drücken Sie
Enter.Der Bildschirmabzug zeigt nur einen der verfügbaren
Belegungen an. Mit der Taste Tab markieren
Sie die Schaltfläche &gui.cancel;, die mit der
Vorgabe-Belegung wieder in das Hauptmenü
zurückführt.Sysinstall Keymap MenuInstallationsoptionen einstellenWählen Sie Options
aus und rücken die Taste Enter.Das Hauptmenü von sysinstallOptionen von sysinstallFür die meisten Benutzer sind die voreingestellten
Werte völlig ausreichend und brauchen daher nicht
geändert werden. Der Name des Releases variiert mit
der zu installierenden Version von &os;.Eine Beschreibung der ausgewählten Option
erscheint blau hervorgehoben am unteren Ende des
Bildschirms. Mit der Option
Use Defaults können
Sie alle Optionen auf die Vorgabewerte zurückstellen.Wenn Sie die Hilfeseite zu den verschiedenen Optionen
lesen wollen, drücken Sie die Taste
F1.Die Taste Q führt in das
Hauptmenü zurück.Eine Standard-Installation startenDie Standard-Installation
sollte von allen &unix;- oder &os;-Anfängern
benutzt werden. Markieren Sie mit den Pfeiltasten
Standard und drücken
Sie Enter, um die Installation zu
starten.Die Standard-Installation startenPlattenplatz für &os; bereitstellenIhre erste Aufgabe ist, &os; Plattenplatz bereitzustellen und
den Plattenplatz für sysinstall
kenntlich zu machen (label).
Sie müssen daher wissen, wie &os; mit Platten
umgeht.Nummerierung der Laufwerke im BIOSBevor Sie &os; installieren und konfigurieren, sollten
Sie Sie einen wichtigen Punkt beachten, besonders wenn Sie
mehrere Festplatten besitzen.DOSMicrosoft WindowsIn einem PC, der unter einem vom BIOS abhängigen
Betriebssystem, wie &ms-dos; oder µsoft.windows;
läuft, kann das BIOS die normale Reihenfolge der
Laufwerke verändern und das Betriebssystem beachtet
diese Änderung. Mit dieser Funktion kann der
Rechner von einem anderen Laufwerk als dem so genannten
primären Laufwerk gestartet werden.
Die Funktion ist sehr zweckmäßig für Benutzer,
die Datensicherungen auf einer zweiten Platte erstellen
und dafür Werkzeuge wie
Ghost oder xcopy
einsetzen. Wenn die erste Platte ausfällt, von einem
Virus befallen wird oder durch einen Fehler des
Betriebssystems verunstaltet wird, können die
Platten im BIOS logisch getauscht werden. Es sieht so
aus, als wären die Laufwerke, ohne Öffnen des
Gehäuses getauscht worden.SCSIBIOSTeurere Systeme mit SCSI-Controllern haben oft BIOS
Erweiterungen, mit denen die Reihenfolge von bis zu sieben
SCSI-Platten in ähnlicher Weise verändert werden
kann.Ein Benutzer, der es gewohnt ist, diese BIOS-Funktionen
zu benutzen, mag überrascht sein, dass &os; sich nicht
wie erwartet verhält. &os; verwendet das BIOS nicht
und weiß daher nichts von der logischen Plattenordnung
im BIOS. Dies kann zu sehr verwirrenden Situationen
führen, insbesondere wenn die Platten identische
Geometrien besitzen und Kopien voneinander sind.Vor der Installation von &os; sollte im BIOS die
normale Nummerierung der Laufwerke eingestellt und so belassen
werden. Ist es nötig, die Reihenfolge der Laufwerke zu
verändern, so sollte das immer auf dem schweren Weg, also
durch Öffnen des Gehäuses und Verändern der
Jumper und Kabel, erfolgen.Von Bills und Freds ungewöhnlichen
AbenteuernBill macht aus einer älteren Wintel Kiste ein
neues &os;-System für Fred. Auf einer SCSI-Platte,
die er mit der SCSI-ID 0 konfiguriert, installiert Bill
&os;.Nachdem Fred das System einige Tage benutzt hat, bemerkt
er, dass die ältere SCSI-Platte viele Fehler meldet
und beschwert sich bei Bill.Nach einigen Tagen entschließt sich Bill,
die Sache in die Hand zu nehmen. Er schnappt sich
eine identische SCSI-Platte aus dem Lager im Hinterzimmer
und baut diese, nachdem Sie einen Oberflächenscan
überstanden hat, mit der SCSI-ID 4 ein.
Anschließend kopiert er die Daten von der Platte
mit der SCSI-ID 0 auf die Platte mit der SCSI-ID 4.
Da die neue Platte zufriedenstellend läuft, stellt
Bill im SCSI-BIOS die Reihenfolge der Platten so um,
dass das System von der neuen Platte startet. Nach
einem problemlosen Start von &os; läuft das
System und Fred ist zufrieden.Nach einiger Zeit haben Bill und Fred Lust auf ein
weiteres Abenteuer – Sie wollen das System auf
eine neue &os;-Version aktualisieren. Bill ersetzt
die angeschlagene Platte mit der SCSI-ID 0 durch
eine gleiche Platte aus dem Lager. Auf der ausgetauschten
Platte installiert er problemlos mithilfe von
Freds Startdisketten die neue Version von &os;.Fred braucht ein paar Tage, um die neue &os;-Version
zu testen und entscheidet, dass Sie für den
produktiven Einsatz geeignet ist. Nun müssen die
Daten von der alten Platte (mit der SCSI-ID 4)
kopiert werden. Fred hängt dazu die alte Platte
ein und stellt bestürzt fest, dass alle Daten
verschwunden sind.Wo sind die Daten hin?Bill kopierte die Daten von der Platte mit der
SCSI-ID 0 auf die Platte mit der SCSI-ID 4.
Als Bill die Startreihenfolge im SCSI-BIOS änderte,
führte er sich nur selbst an der Nase herum. &os;
lief weiterhin auf der Platte mit der SCSI-ID 0.
Durch die Änderung der Startreihenfolge wurde nur
ein Teil des Boot- und Loader-Codes von der Platte mit
der SCSI-ID 4 geladen. Die Kernel-Treiber von
&os; ignorieren die BIOS-Einstellungen und benutzen
die normale Nummerierung. Das System lief also weiterhin
auf der Platte mit der SCSI-ID 0 und alle Daten von
Fred befanden sich auf dieser Platte. Es schien nur
so, als würde das System auf der Platte mit der
SCSI-ID 4 laufen.Wir sind erleichtert zu bemerken, dass keine Daten
verloren gingen oder verändert wurden. Die alte
Platte wurde im Müll wiedergefunden und Freds Daten
konnten wiederhergestellt werden (Bill weiß jetzt,
dass er noch viel zu lernen hat).Obwohl in diesem Beispiel SCSI-Platten verwendet
wurden, gelten die Konzepte gleichermaßen für
IDE-Platten.Slices mit Fdisk erstellenZu diesem Zeitpunkt werden noch keine Änderungen
auf die Festplatte ausgeschrieben. Sie können daher
sysinstall jederzeit verlassen,
und erneut beginnen, wenn Sie denken, einen Fehler gemacht
zu haben. Sie können sysinstall
über die Menüs verlassen, die Taste U
drücken oder die Option Undo
wählen. Wenn Sie einmal nicht wissen, wie Sie ein
Menü verlassen, können Sie den Rechner auch
einfach ausschalten.Nachdem Sie in sysinstall
die Standard-Installation ausgewählt haben, werden
Sie folgende Meldung sehen: Message
In the next menu, you will need to set up a DOS-style ("fdisk")
partitioning scheme for your hard disk. If you simply wish to devote
all disk space to FreeBSD (overwriting anything else that might be on
the disk(s) selected) then use the (A)ll command to select the default
partitioning scheme followed by a (Q)uit. If you wish to allocate only
free space to FreeBSD, move to a partition marked "unused" and use the
(C)reate command.
[ OK ]
[ Press enter or space ]Drücken Sie, wie angegeben, Enter.
Im nächsten Bildschirm werden alle Festplatten
angezeigt, die der Kernel während der Geräteerkennung
gefunden hat.
zeigt ein Beispiel von einem System mit zwei IDE-Platten,
die als ad0 und
ad2 erkannt wurden.Ein Laufwerk für Fdisk aussuchenSie fragen sich vielleicht, warum ad1
nicht angezeigt wird. Wurde die Platte vielleicht
nicht erkannt?Stellen Sie sich ein System mit zwei IDE-Platten vor.
Eine Platte ist als Master am ersten Controller, die andere
als Master am zweiten Controller angeschlossen. Wenn &os;
die Platten in der Reihenfolge, in der sie gefunden werden,
nummerieren würde, hießen die Platten
ad0 und ad1
und alles würde funktionieren.Wenn Sie nun am ersten IDE-Controller eine dritte
Platte als Slave anschließen würden, wäre
diese Platte ad1. Die vorher
ad1 genannte Platte würde
nun ad2 heißen. Dateisysteme
werden auf Geräten wie ad1s1a
angelegt. Daher könnte es passieren, dass auf
einmal Dateisysteme nicht mehr gefunden werden und Sie
&os; umkonfigurieren müssten.Um diese Probleme zu umgehen, kann der Kernel so
eingestellt werden, dass er Platten nach ihrem Anschlussort
anstelle der gefundenen Reihenfolge benennt. Nach diesem
Schema ist die Master-Platte am zweiten IDE-Controller
immerad2,
auch wenn es die Geräte ad0
oder ad1 gar nicht gibt.Dieses Verhalten ist in &os; voreingestellt und der
Grund warum im Beispiel die Geräte
ad0 und ad2
angezeigt werden. Der Rechner, von dem die gezeigte
Ausgabe stammt, hatte zwei IDE-Platten, die beide als
Master konfiguriert waren, und keine Slave-Platten.Wählen Sie die Platte aus, auf die Sie &os;
installieren wollen und drücken Sie &gui.ok;.
Anschließend startet Fdisk
und zeigt einen Bildschirm wie den in
.Der Bildschirm von Fdisk
ist in drei Abschnitte unterteilt.Der erste Abschnitt umfasst die ersten beiden Zeilen
der Anzeige. Er enthält Einzelheiten über die
aktuell ausgewählte Platte, unter anderem den
&os;-Gerätenamen, die Plattengeometrie und die
Kapazität der Platte.Der zweite Abschnitt zeigt die auf der Platte befindlichen
Slices. Angezeigt wird der Anfang und das Ende der Slice,
die Größe der Slice, der &os;-Gerätename,
eine Beschreibung und der Subtyp. Im Beispiel sehen Sie
zwei unbenutzte Slices, die durch die Plattenbelegung auf
PCs entstehen. Weiterhin sehen Sie eine große
FAT-Slice, die ziemlich sicher unter
&ms-dos;/&windows; als Laufwerk C:
auftaucht und eine erweiterte Slice, die unter &ms-dos;/&windows;
weitere Laufwerke enthalten kann.Im dritten Abschnitt sind die Kommandos von
Fdisk zusammengefasst.Typischer Fdisk-Bildschirm vor dem EditierenDie nächsten Schritte hängen von der
beabsichtigten Einteilung der Festplatte ab.Wenn Sie die gesamte Festplatte für &os; verwenden
wollen, drücken Sie die Taste A
(entspricht dem Menüpunkt
Use Entire Disk). Später
im Installationsverlauf müssen Sie diese Auswahl
bestätigen, danach werden alle bisherigen Daten von
der Festplatte gelöscht. Diese Auswahl löscht
vorher vorhandene Slices und ersetzt sie durch einen
kleinen unbenutzten Bereich (der wieder durch das PC-Design
bedingt ist) und eine große Slice für &os;.
Wählen Sie dann die neu erstellte Slice mit den Pfeiltasten
aus und drücken Sie die Taste S, um
die Slice als startfähig (bootbar) zu markieren.
zeigt den Bildschirm zu
diesem Zeitpunkt. Beachten Sie das A
in der Spalte Flags. Dies zeigt an,
dass die Slice aktiv ist und das System
von dieser Slice starten wird.Um Platz für &os; zu schaffen, können Sie
auch bestehende Slices löschen. Markieren Sie dazu
die Slice mit den Pfeiltasten und drücken Sie die Taste
D. Danach legen Sie eine neue Slice
mit der Taste C an. Sie werden nach der
Größe der zu erstellenden Slice gefragt; der
Vorgabewert entspricht der größten Slice, die
angelegt werden kann (entspricht entweder dem
größten freien Bereich auf der Festplatte oder
der ganzen Festplatte).Wenn Sie schon Platz für &os; geschaffen haben
(beispielsweise mit &partitionmagic;),
können Sie eine neue Slice direkt mit der Taste
C anlegen. Sie werden wieder nach der
Größe der anzulegenden Slice gefragt.Eine Partition über die gesamte PlatteDrücken Sie die Taste Q, wenn Sie
fertig sind. Sysinstall merkt
sich die Änderungen, schreibt sie aber noch nicht
auf die Festplatte.Einen Boot-Manager installierenSie können nun einen Boot-Manager installieren.
Unter folgenden Umständen sollten Sie den
&os;-Boot-Manager installieren:Das System besitzt mehr als ein Laufwerk und
&os; ist auf einem anderen Laufwerk als dem ersten
Laufwerk installiert.&os; teilt sich das Laufwerk mit einem anderen
Betriebssystem. Beim Systemstart wollen Sie auswählen,
welches Betriebssystem gestartet wird.Wird der Rechner ausschließlich mit &os; betrieben
und &os; ist auf dem ersten Laufwerk installiert, dann
genügt der Standard-Boot-Manager.
Wenn Sie einen anderen Boot-Manager benutzen, der &os;
starten kann, wählen Sie bitte None
aus.Nachdem Sie die Auswahl getroffen haben, drücken
Sie die Taste Enter.Sysinstall Boot-Manager-MenüIn der Hilfe, die Sie mit der Taste F1
aufrufen, werden Probleme beschrieben, die entstehen
können, wenn sich zwei Betriebssysteme ein Laufwerk
teilen.Slices auf einem anderen Laufwerk anlegenWenn das System mehr als ein Laufwerk besitzt, kehrt
die Installationsprozedur nach der Auswahl des Boot-Managers
zum Bildschirm Select Drives zurück.
Sie können hier ein anderes Laufwerk auswählen
und auf diesem Laufwerk mit Fdisk
weitere Slices anlegen.Wenn Sie &os; auf einem anderen Laufwerk als dem ersten
Laufwerk installieren, müssen Sie den &os;-Boot-Manager
auf beiden Laufwerken installieren.Die Laufwerksauswahl verlassenDie Taste Tab wechselt zwischen dem
zuletzt ausgewählten Laufwerk und den Schaltflächen
&gui.ok; und &gui.cancel;.Drücken Sie einmal die Taste Tab,
um &gui.ok; auszuwählen und drücken Sie
anschließend Enter um die
Installation weiterzuführen.Partitionen mit Bsdlabel
anlegenIn jeder angelegten Slice müssen Sie Partitionen
anlegen. Die Partitionen werden mit Buchstaben von
a bis h gekennzeichnet.
Die Buchstaben b, c
und d haben eine besondere Bedeutung,
die Sie beachten sollten.Einige Anwendungen profitieren von einer besonderen
Aufteilung der Partitionen, insbesondere wenn das System
mehr als ein Laufwerk besitzt. Bei der ersten &os;-Installation
sollten Sie sich allerdings nicht zu viele Gedanken über
die Partitionen machen. Wichtiger ist, dass Sie &os;
installieren und benutzen. Wenn Sie mehr Erfahrung mit
&os; gesammelt haben, können Sie &os; jederzeit mit
anderen Partitionen installieren.Das folgende Schema legt vier Partitionen an: Eine
Partition für den Auslagerungsbereich
(swap space) und drei
Partitionen für Dateisysteme.
Partitionen auf dem ersten LaufwerkPartitionDateisystemGrößeBeschreibunga/100 MBDas Root-Dateisystem. Jedes andere Dateisystem
wird irgendwo unterhalb von diesem Dateisystem
eingehangen. 100 MB ist eine vernünftige
Größe für dieses Dateisystem.
Sie werden hier wenig Daten speichern und &os;
benötigt ungefähr 40 MB Platz auf
diesem Dateisystem. Der Rest ist für temporäre
Daten und die Reserve, falls künftige Versionen
von &os; mehr Platz in /
benötigen.bN/A2-3 x RAMDer Auslagerungsbereich befindet sich auf der
b-Partition. Es ist schon fast
eine Kunst, die Größe des Auslagerungsbereichs
richtig zu bestimmen. Eine gute Daumenregel ist,
den Auslagerungsbereich zwei bis dreimal
größer als den Hauptspeicher (RAM)
anzulegen. Sie sollten mindestens 64 MB
für den Auslagerungsbereich vorsehen. Wenn
das System also weniger als 32 MB Hauptspeicher
besitzt, richten Sie einen 64 MB großen
Auslagerungsbereich ein.
Besitzt das System mehr als ein Laufwerk,
können Sie auf jedem Laufwerk Auslagerungsbereiche
anlegen. Da &os; alle Auslagerungsbereiche
benutzt, wird der Vorgang des Auslagerns durch
mehrere Bereiche beschleunigt. Berechnen Sie
in diesem Fall die Größe des benötigten
Auslagerungsbereichs, beispielsweise 128 MB,
und teilen Sie die Größe durch die
Anzahl der Laufwerke. Dies gibt die Größe
des Auslagerungsbereichs auf jedem Laufwerk.
Mit zwei Platten ergibt das in diesem Beispiel
64 MB Auslagerungsbereich pro Platte.e/var50 MBDas Verzeichnis /var
enthält Dateien, die sich dauernd
ändern (Protokolldateien und Dateien für
Verwaltungszwecke) und auf die im Normalbetrieb
oft zugegriffen wird. Liegen diese Dateien in
einem gesonderten Dateisystem, kann &os; den Zugriff
auf die Dateien optimieren, ohne den Zugriff auf
Dateien mit einem anderen Zugriffmuster zu
stören.f/usrDer Rest des LaufwerksAlle anderen Dateien werden normalerweise
im Verzeichnis /usr oder
einem Unterverzeichnis von /usr
abgelegt.
Wenn Sie &os; auf mehr als einem Laufwerk installieren,
müssen Sie noch weitere Partitionen in den Slices
auf den anderen Laufwerken anlegen. Am einfachsten legen
Sie pro Laufwerk zwei Partitionen an: eine für den
Auslagerungsbereich und eine andere für ein
Dateisystem.
Partitionen auf weiteren LaufwerkenPartitionDateisystemGrößeBeschreibungb--Wie schon besprochen, können Sie den
Auslagerungsbereich auf mehrere Platten verteilen.
Auch wenn die a-Partition frei
ist, sollte der Auslagerungsbereich entsprechend
der Konvention auf der b-Partition
angelegt werden.e/disknDer Rest des LaufwerksDer Rest der Platte wird von einer großen
Partition eingenommen. Sie könnten für
diese Partition die a-Partition
anstelle der e-Partition benutzen.
Allerdings ist die a-Partition
per Konvention für das Root-Dateisystem
(/) reserviert. Sie brauchen
die Konvention nicht zu beachten, da aber
sysinstall die Konvention
beachtet, ist die Installation sauberer, wenn Sie
das auch tun. Sie können das Dateisystem
irgendwo einhängen. Das Beispiel schlägt
die Verzeichnisse
/diskn
vor, wobei n die Laufwerke
nummeriert. Sie können ein anderes Schema
verwenden, wenn Sie möchten.
Wenn Sie die Aufteilung der Partitionen festgelegt haben,
können Sie die Partitionen mit
sysinstall anlegen. Es erscheint
die nachstehende Meldung: Message
Now, you need to create BSD partitions inside of the fdisk
partition(s) just created. If you have a reasonable amount of disk
space (200MB or more) and don't have any special requirements, simply
use the (A)uto command to allocate space automatically. If you have
more specific needs or just don't care for the layout chosen by
(A)uto, press F1 for more information on manual layout.
[ OK ]
[ Press enter or space ]Drücken Sie Enter, um den
&os;-Partitionseditor, der Disklabel
heißt, zu starten. zeigt den
Einstiegsbildschirm von Disklabel.
Der Bildschirm ist in drei Bereiche geteilt.Die ersten Zeilen zeigen den Namen des Laufwerks, das
Sie gerade bearbeiten und die Slice, die die erstellten
Partitionen enthält (Disklabel
spricht hier von Partitionen anstatt von Slices). Der
freie Platz einer Slice, der noch keiner Partition zugeordnet
ist, wird ebenfalls angezeigt.In der Mitte des Bildschirms werden die angelegten
Partitionen, der Name des Dateisystems, das sich in
der Partition befindet, dessen Größe und
die Optionen zum Erstellen des Dateisystems angezeigt.Das untere Drittel des Bildschirms zeigt die in
Disklabel gültigen
Tastenkombinationen.Sysinstall Disklabel-EditorDisklabel kann für Sie
automatisch Partitionen mit vorgegebenen Größen
erstellen. Probieren Sie das bitte jetzt aus und drücken
Sie die Taste A. Der Bildschirm sieht
danach ähnlich wie in
aus. Abhängig von der Größe des Laufwerks
können die Vorgabewerte richtig oder falsch sein.
Da Sie die Vorgaben nicht akzeptieren müssen, spielt
das keine Rolle.&os; legt das Verzeichnis /tmp
in einer eigenen Partition an. Dies verhindert,
dass sich die Root-Partition mit temporären
Dateien füllt.Sysinstall Disklabel-Editor mit automatischen VorgabenWollen Sie die vorgegebenen Partitionen nicht verwenden
und durch eigene ersetzen, markieren Sie mit den Pfeiltasten
die erste Partition und drücken Sie die Taste
D, um die Partition zu löschen.
Wiederholen Sie dies für alle vorgegebenen Partitionen.Um die erste Partition (a), die als
/ eingehangen wird, zu erstellen,
drücken Sie die Taste C. Stellen Sie
dabei sicher, dass die richtige Slice im oberen Teil des
Bildschirms markiert ist. Wie in
, erscheint ein Fenster,
in dem Sie die Größe der Partition angeben
müssen. Sie können die Größe in
Blöcken oder einer Zahl gefolgt von M
für Megabyte, G für Gigabyte
oder C für Zylinder angeben.Ab &os; 5.X gibt es den Menüpunkt
Custom Newfs (Taste Z).
Sie können dort Dateisysteme vom Typ
UFS2 anlegen (dies ist ab &os; 5.1
die Vorgabe), die Einstellungen von
mit Auto Defaults angelegten
Dateisystemen ändern oder die Option
für zu
erstellende Dateisysteme voreinstellen.
Vergessen Sie nicht, Soft Updates mit der Option
zu aktivieren.Die Größe einer Partition festlegenDie vorgegebene Größe erstellt eine Partition,
die den Rest der Slice ausfüllt. Wenn Sie die
Größen aus dem früheren Beispiel verwenden,
löschen Sie die vorgeschlagene Größe mit
der Taste Backspace und tragen Sie die
neue Größe, wie in
gezeigt, ein. Drücken Sie anschließend
&gui.ok;.Die Größe einer Partition
ändernNachdem Sie die Größe der Partition festgelegt
haben, werden Sie gefragt, ob die Partition ein Dateisystem
oder einen Auslagerungsbereich enthalten soll (siehe
). Die erste Partition
enthält ein Dateisystem, wählen Sie
FS aus und drücken Sie
die Taste Enter.Den Partitionstyp festlegenAbschließend müssen Sie, weil Sie ein
Dateisystem erstellen, angeben, wo das Dateisystem
eingehangen wird. Die Eingabe ist in
dargestellt.
Das Root-Dateisystem wird in /
eingehangen, geben Sie daher /
ein und drücken Sie die Taste Enter.Den Mountpoint festlegenAuf dem Bildschirm wird jetzt die neu angelegte Partition
angezeigt. Wiederholen Sie diese Prozedur für die
restlichen Partitionen. Beim Anlegen des Auslagerungsbereichs
werden Sie nicht nach einem Mountpoint gefragt, da
ein Auslagerungsbereich nie eingehangen wird. Wenn
Sie die letzte Partition anlegen, /usr,
können Sie die vorgeschlagene Größe
stehen lassen. Das Dateisystem wird dann den Rest der
Slice einnehmen.Der letzte Bildschirm von Disklabel
sieht wie in aus (Ihre
Werte werden von den gezeigten Werten abweichen).
Drücken Sie die Taste Q, um
Disklabel zu verlassen.Sysinstall Disklabel-EditorDen Installationsumfang bestimmenDie Distribution auswählenWelche Software Sie installieren, hängt
hauptsächlich vom Zweck des Rechners und dem zur
Verfügung stehenden Plattenplatz ab. Die vorgegebenen
Distributionen reichen von der minimalen Installation
bis hin zu einer kompletten Installation. Anfänger
sollten eine der vorgegebenen Distributionen auswählen,
erfahrene Benutzer können die zu installierende
Distribution anpassen.Die Taste F1 führt zu einem
Hilfebildschirm, der die Distributionen und deren Inhalte
beschreibt. Drücken Sie Enter, um
die Hilfe zu verlassen und zur Auswahl der Distribution
zurückzukehren.Wenn Sie eine graphische Benutzeroberfläche
installieren wollen, sollten Sie eine Distribution
auswählen, deren Name mit X
anfängt. Die Konfiguration des X-Servers
und die Auswahl der Benutzeroberfläche ist
Teil der Nacharbeiten. Die Konfiguration des X-Servers
wird in besprochen.Seit &os; 5.3 wird &xorg;
als Standard-X-Server installiert.Wenn Sie einen angepassten Kernel erstellen wollen,
wählen Sie eine Distribution aus, die den Quellcode
(source code) enthält.
Warum und wie Sie einen angepassten Kernel erstellen, erfahren
Sie in .Natürlich ist das flexibelste System das, auf
dem alles installiert ist. Wenn das System über
ausreichend Plattenplatz verfügt, wählen
Sie mit den Pfeiltasten die Option All
aus (siehe )
und drücken die Taste Enter.
Wenn Sie Bedenken haben, dass der Plattenplatz nicht
ausreicht, wählen Sie eine Distribution, die weniger
Software enthält. Machen Sie sich keine unnötigen
Sorgen um die richtige Distribution, ausgelassene Distribution
können später nachinstalliert werden.Die Distribution auswählenDie Ports-Sammlung installierenNach der Auswahl der Distribution haben Sie Gelegenheit,
die &os;-Ports-Sammlung zu installieren. Mit der
Ports-Sammlung lässt sich Software Dritter auf
einfache Art und Weise installieren. Der Quellcode
der zu installierenden Software ist nicht in der
Ports-Sammlung enthalten. Stattdessen enthält die
Ports-Sammlung Dateien, die den Installationsprozess
(herunterladen, übersetzen und installieren) automatisieren.
Die Ports-Sammlung wird in
besprochen.Der Installationsprozess prüft nicht, ob ausreichend
Platz für die Ports-Sammlung vorhanden ist. Wählen
Sie die Ports-Sammlung bitte nur aus, wenn das System
über ausreichenden Platz verfügt. In
&os; &rel.current; nimmt die Ports-Sammlung ungefähr
&ports.size; Plattenplatz in Anspruch. Neuere Versionen
von &os; benötigen mit Sicherheit noch mehr Platz. User Confirmation Requested
Would you like to install the FreeBSD ports collection?
This will give you ready access to over &os.numports; ported software packages,
at a cost of around &ports.size; of disk space when "clean" and possibly much
more than that if a lot of the distribution tarballs are loaded
(unless you have the extra CDs from a FreeBSD CD/DVD distribution
available and can mount it on /cdrom, in which case this is far less
of a problem).
The ports collection is a very valuable resource and well worth having
on your /usr partition, so it is advisable to say Yes to this option.
For more information on the ports collection & the latest ports,
visit:
http://www.FreeBSD.org/ports
[ Yes ] NoWählen Sie mit den Pfeiltasten
&gui.yes; aus, um die Ports-Sammlung
zu installieren. Wählen Sie &gui.no;
aus, um die Ports-Sammlung auszulassen. Drücken
Sie danach die Taste Enter, es erscheint
wieder das Distributionsmenü.Die Distributionen bestätigenWenn Sie mit den ausgewählten Optionen zufrieden
sind, wählen Sie mit den Pfeiltasten
Exit aus (stellen Sie sicher,
dass &gui.ok; aktiv ist) und drücken Sie
die Taste Enter.Das Installationsmedium auswählenWenn Sie von einer CD-ROM oder einer DVD installieren,
wählen Sie bitte
Install from a FreeBSD CD/DVD aus.
Stellen Sie sicher, dass &gui.ok; aktiv ist und drücken
Sie dann die Taste Enter, um mit der
Installation fortzufahren.Wenn Sie ein anderes Installationsmedium benutzen,
wählen Sie die passende Option aus und folgen
den angezeigten Anweisungen.Die Hilfeseiten über Installationsmedien erreichen
Sie mit der Taste F1. Drücken Sie
Enter, um zur Auswahl des Installationsmediums
zurückzukehren.Das Installationsmedium auswählenFTP-InstallationsmodiInstallationFTPSie können zwischen drei FTP-Installationsmodi
wählen: Active-FTP, Passive-FTP oder über einen
HTTP-Proxy.FTP Active: Install from an FTP
serverDiese Option führt alle FTP-Operationen
im Active-Mode aus. Dieser Modus
funktioniert nicht durch Firewalls, er funktioniert
aber mit alten FTP-Servern, die den Passive-Mode
nicht beherrschen. Wenn die Verbindung im
Passive-Mode (das ist die Vorgabe) hängt,
versuchen Sie den Active-Mode.FTP Passive: Install from an FTP server through a
firewallFTPPassive-ModeMit dieser Option benutzt
sysinstall den
Passive-Mode für alle FTP-Operationen.
In diesem Modus funktionieren Verbindungen durch
Firewalls, die einkommende Pakete auf beliebigen
TCP-Ports blockieren.FTP via a HTTP proxy: Install from an FTP server
through a http proxyFTPüber einen HTTP-ProxyDiese Option weist sysinstall
an, alle FTP-Operationen mit HTTP über einen
Proxy (wie ein Web-Browser) durchzuführen.
Der Proxy leitet die Anfragen an den richtigen
FTP-Server weiter. Mit dieser Option passieren
Sie eine Firewall, die FTP-Verbindungen verbietet,
aber einen HTTP-Proxy anbietet. Neben dem FTP-Server
müssen Sie in diesem Fall den Proxy-Server
angeben.Bei einem FTP-Proxy-Server müssen Sie normalerweise
den Ziel-FTP-Server als Teil des Benutzernamens hinter dem
Klammeraffen (@) angeben. Der Proxy-Server
übernimmt die Kommunikation mit dem Ziel-FTP-Server.
Nehmen wir an, Sie wollen von
ftp.FreeBSD.org über
den FTP-Proxy foo.example.com
auf Port 1234 installieren.Wählen Sie das Menü
Options aus und setzen Sie
dort den FTP-Benutzernamen (username)
auf ftp@ftp.FreeBSD.org. Als Passwort
geben Sie bitte Ihre E-Mail-Adresse an. Setzen Sie das
Installationsmedium auf Active-FTP oder Passive-FTP, je
nachdem welchen Modus der Proxy-Server unterstützt.
Für die URL geben Sie
ftp://foo.example.com:1234/pub/FreeBSD an.Der Proxy-Server foo.example.com
leitet Zugriffe auf das Verzeichnis
/pub/FreeBSD
an den Server ftp.FreeBSD.org
weiter. Daher können
foo.example.com als
FTP-Server angeben.Die Installation festschreibenWenn Sie wünschen, kann die Installation nun
beginnen. Dies ist die letzte Gelegenheit, die
Installation abzubrechen und Änderungen auf der
Festplatte zu vermeiden. User Confirmation Requested
Last Chance! Are you SURE you want to continue the installation?
If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!
We can take no responsibility for lost disk contents!
[ Yes ] NoWählen Sie &gui.yes; aus
und drücken Sie Enter, um weiter
zu machen.Die Installationsdauer hängt von den ausgewählten
Distributionen, dem Installationsmedium und der Geschwindigkeit
des Rechners ab. Während der Installation wird der
Fortgang mit Statusmeldungen angezeigt.Die Installation ist beendet, wenn die folgende
Meldung erscheint: Message
Congratulations! You now have FreeBSD installed on your system.
We will now move on to the final configuration questions.
For any option you do not wish to configure, simply select No.
If you wish to re-enter this utility after the system is up, you may
do so by typing: /usr/sbin/sysinstall.
[ OK ]
[ Press enter or space ]Drücken Sie die Taste Enter,
um die Nacharbeiten durchzuführen.Wenn Sie &gui.no; auswählen und
Enter drücken wird die Installation
abgebrochen und das System wird nicht verändert.
Die nachstehende Meldung wird angezeigt: Message
Installation complete with some errors. You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature.
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed.
[ OK ]Die Meldung wird angezeigt, weil nichts installiert
wurde. Drücken Sie Enter, um
in das Hauptmenü zurückzukehren. Dort können
Sie die Installationsprozedur verlassen.Arbeiten nach der InstallationNach einer erfolgreichen Installation wird das System
konfiguriert. Sie können das System direkt konfigurieren
oder nach einem Neustart. Nach einem Neustart rufen Sie
sysinstall (vor &os; 5.2
/stand/sysinstall) auf und wählen
den Menüpunkt Configure.NetzwerkkonfigurationWenn Sie schon PPP für eine FTP-Installation
konfiguriert haben, erscheint dieser Bildschirm nicht.
Sie können die Konfiguration später in
sysinstall vornehmen.Netzwerke und die Konfiguration von &os; als
Gateway oder Router werden eingehend im Kapitel
Weiterführende
Netzwerkthemen behandelt. User Confirmation Requested
Would you like to configure any Ethernet or SLIP/PPP network devices?
[ Yes ] NoWenn Sie eine Netzwerkkarte konfigurieren wollen,
wählen Sie &gui.yes; aus und
drücken Sie die Taste Enter.
Wählen Sie &gui.no;, um die
Netzwerkkonfiguration zu überspringen.Eine Netzwerkkarte auswählenWählen Sie die zu konfigurierende Karte mit den
Pfeiltasten aus und drücken Sie die Taste
Enter. User Confirmation Requested
Do you want to try IPv6 configuration of the interface?
Yes [ No ]Für das gezeigte Installationsbeispiel genügte
das momentan verwendete Internet-Protokoll
(IPv4). Daher wurde mit den Pfeiltasten
&gui.no; ausgewählt und mit der
Taste Enter bestätigt.Wenn Sie durch einen RA-Server mit
einem IPv6-Netzwerk verbunden sind,
wählen Sie bitte &gui.yes; und
drücken die Taste Enter. Die Suche
nach den RA-Servern dauert
einige Sekunden. User Confirmation Requested
Do you want to try DHCP configuration of the interface?
Yes [ No ]Falls Sie das Dynamic Host Configuration Protocol
(DHCP) nicht verwenden, wählen
Sie &gui.no; aus und drücken
Sie Enter.Wenn Sie &gui.yes; auswählen,
wird das Programm dhclient
ausgeführt und bei Erfolg die Netzwerkkarte
konfiguriert. Mehr über
DHCP können Sie in
nachlesen.Der nächste Bildschirmabzug zeigt die
Netzwerkkonfiguration eines Systems, das Gateway für
das lokale Netz ist.Die Netzwerkkarte ed0 konfigurierenTragen Sie in die Felder, die Sie mit der Taste
Tab auswählen können, die
richtige Konfiguration ein.HostDer vollständige Rechnername
(fully-qualified hostname),
wie in diesem Beispiel
k6-2.example.com.DomainDer Domain-Name, in dem sich der Rechner befindet.
Im Beispiel ist das
example.com.IPv4 GatewayDie IP-Adresse des Rechners, der Pakete an entfernte
Netze weiterleitet. Sie müssen dieses Feld
ausfüllen, wenn der sich der Rechner in
einem Netzwerk befindet. Lassen Sie das
Feld leer, wenn der Rechner der Gateway
in das Internet ist. Der IPv4-Gateway wird
auch default gateway
oder default route
genannt.Name serverDie IP-Adresse des lokalen DNS-Servers. Im Beispiel
gibt es keinen lokalen DNS-Server, daher wurde der
DNS-Server des Providers
(208.163.10.2) benutzt.IPv4 addressDie IP-Adresse der Netzwerkkarte
(192.168.0.1).Netmask (Netzmaske)Im Beispiel werden Adressen aus einem Klasse C
Netz (192.168.0.0 bis
192.168.0.255) benutzt.
Standardmäßig besitzt ein Klasse C Netz
die Netzmaske
255.255.255.0.Extra options to ifconfig (Optionen für ifconfig)Zusätzliche Optionen für den Befehl
ifconfig, die spezifisch für die
verwendete Netzwerkkarte sind. Im Beispiel sind
keine Optionen angegeben.Wenn Sie alle Werte eingegeben haben, wählen
Sie mit Tab &gui.ok; aus und drücken
Sie Enter. User Confirmation Requested
Would you like to Bring Up the ed0 interface right now?
[ Yes ] NoWenn Sie &gui.yes; auswählen
und Enter drücken, wird die
Netzwerkkonfiguration aktiviert. Allerdings bringt dies
zu diesem Zeitpunkt nicht viel, da der Rechner noch
neu gestartet werden muss.Gateway einrichten User Confirmation Requested
Do you want this machine to function as a network gateway?
[ Yes ] NoWählen Sie &gui.yes;, wenn der
Rechner ein Gateway für ein lokales Netz ist und
Pakete an andere Netze weiterleitet. Wenn der Rechner
ein normaler Netzknoten ist, wählen Sie
&gui.no; aus. Bestätigen Sie
die auswahl mit der Taste Enter.IP-Dienste einrichten User Confirmation Requested
Do you want to configure inetd and the network services that it provides?
Yes [ No ]Wenn &gui.no; ausgewählt wird,
werden Dienste wie telnetd nicht
aktiviert. Benutzer können sich dann von entfernten
Rechnern nicht mit telnet an
dieser Maschine anmelden. Lokale Benutzer können aber
auf entfernte Rechner mit telnet
zugreifen.Die Dienste können Sie nach der Installation
aktivieren, indem Sie die Datei /etc/inetd.conf
editieren. Dies wird in
beschrieben.Wenn Sie jetzt weitere Dienste aktivieren möchten,
wählen Sie &gui.yes; aus.
Es erscheint die nachstehende Rückfrage: User Confirmation Requested
The Internet Super Server (inetd) allows a number of simple Internet
services to be enabled, including finger, ftp and telnetd. Enabling
these services may increase risk of security problems by increasing
the exposure of your system.
With this in mind, do you wish to enable inetd?
[ Yes ] NoBestätigen Sie die Rückfrage mit
&gui.yes;. User Confirmation Requested
inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
which of its Internet services will be available. The default FreeBSD
inetd.conf(5) leaves all services disabled by default, so they must be
specifically enabled in the configuration file before they will
function, even once inetd(8) is enabled. Note that services for
IPv6 must be separately enabled from IPv4 services.
Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
use the current settings.
[ Yes ] NoWenn Sie &gui.yes; auswählen,
können Sie Dienste aktivieren, in dem Sie das Zeichen
# am Zeilenanfang entfernen.inetd.conf editierenWenn Sie die gewünschten Dienste aktiviert haben,
drücken Sie die Taste Esc. Es erscheint
ein Menü, in dem Sie die Änderungen abspeichern
und den Editor verlassen können.Anonymous-FTPFTPanonymous User Confirmation Requested
Do you want to have anonymous FTP access to this machine?
Yes [ No ]Anonymous-FTP verbietenWenn Sie die vorgegebene Auswahl
&gui.no; mit der Taste
Enter bestätigen, können
Benutzer, die ein Konto und ein Passwort auf dem
System besitzen, immer noch mit FTP auf das System
zugreifen.Anonymous-FTP erlaubenWenn Sie Anonymous-FTP erlauben, darf jeder auf Ihr
System zugreifen. Bedenken Sie die Folgen für die
Systemsicherheit (siehe ) bevor
Sie diese Option aktivieren.Um Anonymous-FTP zu aktivieren, wählen Sie
mit den Pfeiltasten &gui.yes; aus
und drücken Sie die Taste Enter.
Es erscheint ein ähnlicher Bildschirm wie der
folgende:Anonymous-FTP konfigurierenMit der Taste F1 rufen Sie die
Hilfe auf:This screen allows you to configure the anonymous FTP user.
The following configuration values are editable:
UID: The user ID you wish to assign to the anonymous FTP user.
All files uploaded will be owned by this ID.
Group: Which group you wish the anonymous FTP user to be in.
Comment: String describing this user in /etc/passwd
FTP Root Directory:
Where files available for anonymous FTP will be kept.
Upload subdirectory:
Where files uploaded by anonymous FTP users will go.Das FTP-Wurzelverzeichnis wird per Voreinstellung
in /var angelegt.
Wenn in /var
zu wenig Platz vorhanden ist, können Sie das
FTP-Wurzelverzeichnis beispielsweise nach
/usr/ftp verlegen.Wenn Sie mit den Einstellungen zufrieden sind,
drücken Sie die Taste Enter. User Confirmation Requested
Create a welcome message file for anonymous FTP users?
[ Yes ] NoWenn Sie &gui.yes; auswählen
und mit Enter bestätigen, können
Sie die Begrüßungsmeldung des FTP-Servers
in einem Editor ändern.Begrüßungsmeldung des FTP-Servers
editierenDer Editor, in dem Sie sich befinden, heißt
ee. Folgen Sie den Anweisungen,
um die Meldung zu editieren. Sie können die
Meldung auch später in einem Editor Ihrer
Wahl editieren. Merken Sie sich dazu den Dateinamen,
der im Editor unten angezeigt wird.Wenn Sie die Taste Esc drücken,
erscheint ein Menü, in dem
a) leave editor vorgewählt
ist. Drücken Sie die Taste Enter,
um den Editor zu verlassen. Falls Sie Änderungen
vorgenommen haben, bestätigen Sie die Änderungen
nochmals mit Enter.Network-File-System einrichtenMit dem Network-File-System (NFS)
können Sie über ein Netzwerk auf Dateien zugreifen.
Ein Rechner kann NFS-Server,
NFS-Client oder beides sein.
NFS wird in
besprochen.NFS-Server einrichten User Confirmation Requested
Do you want to configure this machine as an NFS server?
Yes [ No ]Wenn Sie keinen NFS-Server
benötigen, wählen Sie &gui.no;
aus und bestätigen Sie mit Enter.Wenn Sie &gui.yes; auswählen,
erscheint der Hinweis, dass die Datei
exports angelegt werden muss. Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local filesystems.
Press [Enter] now to invoke an editor on /etc/exports
[ OK ]Drücken Sie Enter und es
wird ein Editor gestartet, in dem Sie die Datei
exports editieren können.exports editierenFolgen Sie den Anweisungen, um Dateisysteme
zu exportieren. Sie können die Datei
auch später in einem Editor Ihrer
Wahl editieren. Merken Sie sich dazu den Dateinamen,
der im Editor unten angezeigt wird.Drücken Sie die Taste Esc
und es erscheint ein Menü, in dem
a) leave editor vorgewählt
ist. Drücken Sie die Taste Enter,
um den Editor zu verlassen.NFS-Client einrichtenMit einem NFS-Client können
Sie auf NFS-Server zugreifen. User Confirmation Requested
Do you want to configure this machine as an NFS client?
Yes [ No ]Wählen Sie entweder &gui.yes;
oder &gui.no; aus und drücken
Sie Enter.Die Systemkonsole einrichtenSie können verschiedene Merkmale der
Systemkonsole anpassen. User Confirmation Requested
Would you like to customize your system console settings?
[ Yes ] NoWenn Sie die Merkmale der Systemkonsole anpassen wollen,
wählen Sie &gui.yes; aus und
drücken Sie die Taste Enter.Merkmale der SystemkonsoleOft wird ein Bildschirmschoner auf der Konsole aktiviert.
Wälen Sie mit den Pfeiltasten
Saver aus und drücken Sie
die Taste Enter.Bildschirmschoner auswählenWählen Sie den gewünschten Bildschirmschoner
mit den Pfeiltasten aus und drücken Sie
Enter. Das Konfigurationsmenü der
Systemkonsole erscheint wieder.In der Voreinstellung wird der Bildschirmschoner nach
300 Sekunden aktiviert. Um diese Zeitspanne zu
ändern, wählen Sie wieder
Saver aus. Mit den Pfeiltasten
wählen Sie dann Timeout
aus und drücken Enter. Es
erscheint ein Eingabefenster:Den Bildschirmschoner einstellenÄndern Sie die Zeitspanne und wählen Sie &gui.ok;
aus. Mit Enter kehren Sie in das
Konfigurationsmenü der Systemkonsole zurück.Die Konfiguration der Systemkonsole verlassenUm die Nacharbeiten fortzuführen, wählen Sie
Exit aus und drücken Sie
Enter.Die Zeitzone einstellenWenn Sie die Zeitzone richtig einstellen, kann Ihr
Rechner automatisch regional bedingte Zeitumstellungen
ausführen und andere von der Zeitzone abhängige
Funktionen handhaben.Das folgende Beispiel gilt für den Osten der USA.
Ihre Auswahl hängt vom geographischen Standort
Ihres Rechners ab. User Confirmation Requested
Would you like to set this machine's time zone now?
[ Yes ] NoUm die Zeitzone einzustellen, wählen Sie
&gui.yes; und drücken
Enter. User Confirmation Requested
Is this machine's CMOS clock set to UTC? If it is set to local time
or you don't know, please choose NO here!
Yes [ No ]Je nachdem ob die Systemzeit die Zeitzone UTC verwendet,
wählen Sie &gui.yes; oder
&gui.no; aus. Bestätigen Sie
die Auswahl mit der Taste Enter.Das Gebiet auswählenWählen Sie mit den Pfeiltasten das richtige
Gebiet aus und drücken Sie Enter.Das Land auswählenWählen Sie mit den Pfeiltasten das richtige
Land aus und drücken Sie Enter.Die Zeitzone auswählenWählen Sie mit den Pfeiltasten die richtige
Zeitzone aus drücken Sie Enter. Confirmation
Does the abbreviation 'EDT' look reasonable?
[ Yes ] NoWenn die angezeigte Abkürzung der Zeitzone richtig
ist, bestätigen Sie diese mit der Taste
Enter.Linux-Kompatibilität User Confirmation Requested
Would you like to enable Linux binary compatibility?
[ Yes ] NoWenn Sie &gui.yes; auswählen
und Enter drücken, können Sie
Linux-Software auf &os; laufen lassen. Später wird
dazu die notwendige Software installiert.Wenn Sie über FTP installieren, müssen Sie
mit dem Internet verbunden sein. Einige FTP-Server bieten
nicht alle verfügbare Software an. Es kann sein, dass
die nötige Software für die Linux-Kompatibilität
nicht installiert werden kann, dies können Sie später
jedoch nachholen.Die Maus konfigurierenMit einer 3-Tasten-Maus können Sie Texte auf der
Konsole und in Programmen markieren und einfügen
(cut and paste). Wenn Sie
eine 2-Tasten-Maus besitzen, können Sie eine 3-Tasten-Maus
emulieren. Lesen Sie dazu nach der Installation die
Hilfeseite &man.moused.8;. Das folgende Beispiel zeigt
die Konfiguration einer nicht-USB-Maus (PS/2 oder serielle
Maus): User Confirmation Requested
Does this system have a non-USB mouse attached to it?
[ Yes ] No Wählen Sie &gui.no; für
eine USB-Maus und &gui.yes; für
eine andere Maus aus und drücken Sie
Enter.Das Mausprotokoll festlegenMarkieren Sie mit den Pfeiltasten
Type und drücken Sie
press Enter.Das Mausprotokoll festlegenIm Beispiel wurde eine PS/2-Maus verwendet, sodass die
Vorgabe Auto passend war.
Sie können das Protokoll mit den Pfeiltasten ändern.
Stellen Sie sicher, dass &gui.ok; aktiviert ist und
verlassen Sie das Menü mit der Taste
Enter.Den Mausport einstellenWählen Sie mit den Pfeiltasten
Port und drücken Sie die Taste
Enter.Den Mausport einstellenIm Beispiel wurde eine PS/2-Maus verwendet, sodass die
Vorgabe PS/2 richtig war.
Sie können den Port mit den Pfeiltasten ändern.
Bestätigen Sie die Auswahl mit der Taste
Enter.Den Mouse-Daemon aktivierenWählen Sie nun mit den Pfeiltasten
Enable aus und drücken Sie
die Taste Enter, um den Mouse-Daemon
zu aktivieren und zu testen.Den Mouse-Daemon testenBewegen Sie die Maus hin und her und prüfen Sie,
dass sich der Mauszeiger entsprechend bewegt. Wenn alles
in Ordnung ist, wählen Sie &gui.yes;
aus und drücken Sie Enter. Wenn sich
die Maus nicht richtig verhält, wurde sie nicht korrekt
konfiguriert. Wählen Sie in diesem Fall
&gui.no; und versuchen Sie, die
Einstellungen zu korrigieren.Um mit den Nacharbeiten fortzufahren, wählen Sie
mit den Pfeiltasten Exit aus
und drücken Sie Enter.TomRhodesBeigetragen von Weitere Netzwerkdienste einrichtenAnfänger ohne Vorwissen finden das Einrichten
von Netzwerkdiensten oft deprimierend. Netzwerke und
das Internet sind für moderne Betriebssysteme von
entscheidender Bedeutung. Es ist daher wichtig, die
Netzwerkfunktionen von &os; zu kennen. Die von &os;
angebotenen Netzwerkdienste können Sie während
der Installation kennen lernen.Netzwerkdienste sind Programme, die Eingaben aus dem
Netzwerk entgegennehmen. Es wird große Mühe
darauf verwendet, dass diese Programme keinen Schaden
verursachen. Leider können auch Programmierern
Fehler unterlaufen und es gibt Fälle, in denen Fehler
in Netzwerkdiensten von Angreifern ausgenutzt wurden.
Es ist daher wichtig, dass Sie nur Dienste aktivieren,
die Sie benötigen. Im Zweifallsfall sollten Sie
einen Dienst solange nicht aktivieren, bis Sie herausfinden,
dass Sie den Dienst benötigen. Einen Dienst können
Sie später immer noch mit sysinstall
oder in der Datei /etc/rc.conf
aktivieren.Wählen Sie den Menüpunkt
Networking und es erscheint ein Menü
wie das nachstehende:Netzwerkdienste – obere HälfteDie erste Option, Interfaces,
wurde schon in konfiguriert.
Sie können daher diesen Punkt überspringen.Der Punkt AMD aktiviert
einen Dienst, der automatisch Dateisysteme einhängt.
Normalerweise wird der Dienst zusammen mit dem
NFS-Protokoll (siehe unten) verwendet,
um automatisch entfernte Dateisysteme einzuhängen.
Dieser Menüpunkt erfordert keine weitere
Konfiguration.Der nächste Menüpunkt ist
AMD Flags. Wenn Sie den Punkt
auswählen, erscheint ein Fenster, in dem Sie
AMD-spezifische Optionen eingeben
können. Die nachstehenden Optionen sind schon
vorgegeben:-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.mapDie Option legt das Verzeichnis
fest (hier /.amd_mnt),
unter dem Dateisysteme eingehangen werden. Die
Option legt die Protokolldatei
fest. Wenn syslogd verwendet
wird, werden alle Meldungen an den Daemon
syslogd gesendet. Das Verzeichnis
/host dient zum
Zugriff auf exportierte Verzeichnisse von entfernten Rechnern,
das Verzeichnis /net
dient zum Zugriff auf exportierte Verzeichnisse von entfernten
IP-Adressen. Die Datei /etc/amd.map
enthält die Einstellungen für von
AMD verwaltete Dateisysteme.FTPanonymousDie Auswahl Anon FTP erlaubt
Anonymous-FTP-Verbindungen. Wählen Sie diese Option,
wenn Sie einen Anonymous-FTP-Server einrichten wollen.
Seien Sie sich über die Sicherheitsrisiken bewusst,
wenn Sie Anonymous-FTP erlauben. Die Sicherheitsrisiken
und die Konfiguration von Anonymous-FTP werden in einem
gesonderten Fenster erklärt, das aufgeht, wenn Sie
diese Option auswählen.Der Menüpunkt Gateway
konfiguriert das System, wie vorher erläutert, als
Gateway. Wenn Sie während der Installation den Rechner
aus Versehen als Gateway konfiguriert haben, können
Sie dies hier wieder rückgängig machen.Der Menüpunkt Inetd
konfiguriert, wie schon oben besprochen, den Daemon
&man.inetd.8;.Die Auswahl Mail konfiguriert
den Mail Transfer Agent (MTA) des
Systems. Wenn Sie diesen Punkt auswählen, erscheint
das folgende Menü:Den MTA festlegenIn diesem Menü wählen Sie aus, welcher
MTA installiert und benutzt wird.
Ein MTA ist ein Mail-Server, der
E-Mails an lokale Empfänger oder an Empfänger
im Internet ausliefert.Die Auswahl Sendmail
installiert das verbreitete sendmail
(in &os; die Voreinstellung). Die Auswahl
Sendmail local verwendet
sendmail als MTA,
deaktiviert aber den Empfang von E-Mails aus dem Internet.
Postfix und
Exim sind ähnlich wie
Sendmail. Beide Programme
liefern E-Mails aus und einige Anwender verwenden lieber eines
der beiden Programme als MTA.Nachdem Sie einen MTA ausgewählt
haben (oder beschlossen haben, keinen MTA
zu benutzen), erscheint wieder das Menü Netzwerkdienste.
Der nächste Menüpunkt ist
NFS client.Die Auswahl NFS client
erlaubt es dem System, mit einem NFS-Server
zu kommunizieren. Ein NFS-Server
stellt mithilfe des NFS-Protokolls
Dateisysteme für andere Systeme auf dem Netzwerk
bereit. Wenn der Rechner alleine für sich steht,
können Sie diesen Menüpunkt auslassen.
Wahrscheinlich müssen Sie noch weitere Einstellungen
vornehmen; der beschreibt
die Einstellungen für NFS-Server
und NFS-Clients.Der Menüpunkt NFS server
richtet einen NFS-Server auf dem
Rechner ein. Durch die Auswahl dieses Punktes werden
die für Remote-Procedure-Call (RPC)
benötigten Dienste gestartet. Mit RPC
werden Routinen auf entfernten Rechnern aufgerufen.Der nächste Punkt, Ntpdate,
konfiguriert die Zeitsynchronisation. Wenn Sie diesen
Punkt auswählen, erscheint das folgende Menü:Ntpdate konfigurierenWählen Sie aus diesem Menü einen nahe
liegenden Server aus. Die Zeitsynchronisation mit
einem nahe liegenden Server ist, wegen der geringeren
Latenzzeit, genauer als die Synchronisation mit einem
weiter entfernten Server.Der nächste Menüpunkt ist
PCNFSD. Wenn Sie diesen Punkt
auswählen, wird net/pcnfsd
aus der Ports-Sammlung installiert.
Dieses nützliche Werkzeug stellt
NFS-Authentifizierungsdienste für
Systeme bereit, die diese Dienste nicht anbieten
(beispielsweise Microsofts &ms-dos;).Um die nächsten Menüpunkte zu sehen,
müssen Sie herunterblättern:Netzwerkdienste – untere HälfteDie Programme &man.rpcbind.8;, &man.rpc.statd.8; und
&man.rpc.lockd.8; werden für Remote-Procedure-Calls
(RPC) benutzt. Das Programm
rpcbind verwaltet die Kommunikation
zwischen NFS-Servern und
NFS-Clients und ist für den
Betrieb eines NFS-Servers erforderlich.
Der Daemon rpc.statd hält
zusammen mit dem Daemon rpc.statd
des entfernten Rechners den Status der Verbindung. Der
Status einer Verbindung wird normalerweise in der Datei
/var/db/statd.status festgehalten.
Der nächste Menüpunkt ist
rpc.lockd, der Dateisperren
(file locks) bereitstellt.
rpc.lockd wird normalerweise
zusammen mit dem Daemon rpc.statd
benutzt, der festhält welche Rechner Sperren anfordern
und wie oft Sperren angefordert werden. Beide Dienste
sind wunderbar zur Fehlersuche geeignet, doch werden
Sie zum Betrieb von NFS-Servern und
NFS-Clients nicht benötigt.Der nächste Punkt in der Auswahl ist
Routed, der Routing-Daemon.
Das Programm &man.routed.8; verwaltet die Routing-Tabelle,
entdeckt Multicast-Router und stellt die Routing-Tabelle
auf Anfrage jedem mit dem Netz verbundenen Rechner zur
Verfügung. Der Daemon wird hauptsächlich auf
Gateways eines lokalen Netzes eingesetzt.
Wenn Sie den Punkt auswählen müssen Sie
den Ort des Programms angeben. Die Vorgabe können
Sie mit der Taste Enter übernehmen.
Anschließend werden Sie nach den Kommandozeilenoptionen
für routed gefragt. Vorgegeben
ist die Option .Der nächste Menüpunkt ist
Rwhod. Wenn Sie diesen Punkt
auswählen, wird während des Systemstarts der
Daemon &man.rwhod.8; gestartet. Das Kommando
rwhod schickt Broadcast-Meldungen
in das Netz oder empfängt diese im Consumer-Mode.
Die Funktion der Werkzeuge wird in den Hilfeseiten
&man.ruptime.1; und &man.rwho.1; beschrieben.Der vorletzte Menüpunkt aktiviert den Daemon
&man.sshd.8;, den OpenSSH
Secure-Shell-Server. Wo möglich sollte
SSH anstelle von
telnet und FTP
eingesetzt werden. Der Secure-Shell-Server erstellt
verschlüsselte und daher sichere Verbindungen
zwischen zwei Rechnern.TCP Extensions ist der
letzte Menüpunkt. Diese Auswahl aktiviert die
TCP-Erweiterungen aus
RFC 1323 und
RFC 1644. Obwohl dies auf
vielen Rechnern die Verbindungsgeschwindigkeit erhöht,
können durch diese Option auch Verbindungsabbrüche
auftreten. Auf Servern sollte diese Option nicht aktiviert
werden, auf Einzelmaschinen kann diese Option nützlich
sein.Wenn Sie die Netzwerkdienste eingerichtet haben,
blättern Sie zum Menüpunkt
Exit hoch, um die Nacharbeiten
fortzusetzen.Den X-Server einrichtenDer X-Server kann erst nach einer erfolgreichen
Installation von &os; eingerichtet werden. Weitere
Informationen zur Installation und Konfiguration des X-Servers
enthält des Handbuchs.Wenn Sie eine graphische Benutzeroberfläche,
wie KDE oder
GNOME verwenden wollen,
müssen Sie einen X-Server einrichten.Pakete installierenPakete (packages) sind
schon übersetzte Programme und sind ein
zweckmäßiger Weg, Programme zu installieren.Beispielhaft wird im Folgenden die Installation
eines Paketes gezeigt. In diesem Schritt können
auch weitere Pakete installiert werden. Nach der
Installation können Sie mit
sysinstall (vor &os; 5.2
/stand/sysinstall) zusätzliche
Pakete installieren. User Confirmation Requested
The FreeBSD package collection is a collection of hundreds of
ready-to-run applications, from text editors to games to WEB servers
and more. Would you like to browse the collection now?
[ Yes ] NoNachdem Sie [ Yes ]
ausgewählt und Enter gedrückt
haben, gelangen Sie in die Paketauswahl:Die Paketkategorie aussuchenEs stehen nur die Pakete zur Auswahl, die sich
auf dem momentanen Installationsmedium befinden.Wenn Sie All auswählen,
werden alle Pakete angezeigt. Sie können die
Anzeige auf die Pakete einer Kategorie beschränken.
Wählen Sie mit den Pfeiltasten die Kategorie
aus und drücken Sie die Taste
Enter.Ein Menü mit allen Paketen der ausgewählten
Kategorie erscheint:Pakete auswählenIm gezeigten Bildschirm ist das Paket
bash ausgewählt. Sie
können weitere Pakete auswählen, indem Sie
die Pakete mit den Pfeiltasten markieren und die Taste
Space drücken. In der unteren
linken Ecke des Bildschirms wird eine Kurzbeschreibung
des ausgewählten Pakets angezeigt.Die Taste Tab wechselt zwischen
dem zuletzt ausgesuchten Paket, &gui.ok; und
&gui.cancel;.Wenn Sie die zu installierenden Pakete ausgewählt
haben, drücken Sie einmal Tab, um
&gui.ok; zu markieren. Drücken Sie dann
Enter, um wieder in die Paketauswahl
zu gelangen.Die rechte und die linke Pfeiltaste wechseln ebenfalls
zwischen &gui.ok; und &gui.cancel;. Mit diesen Tasten
können Sie auch &gui.ok; auswählen und dann mit
Enter zur Paketauswahl
zurückkehren.Pakete installierenBenutzen Sie die Taste Tab und
die Pfeiltasten um [ Install ]
auszuwählen. Drücken Sie anschließend
die Taste Enter. Sie müssen jetzt
die Installation der Pakete bestätigen:Paketinstallation bestätigenDie Paketinstallation wird gestartet, wenn Sie
&gui.ok; auswählen und Enter
drücken. Den Verlauf der Installation können
Sie anhand der angezeigten Meldungen verfolgen; achten
Sie dabei auf Fehlermeldungen.Nach der Paketinstallation können Sie die
Nacharbeiten fortsetzen. Wenn Sie keine Pakete
ausgewählt haben und die Nacharbeiten fortsetzen
möchten, wählen Sie trotzdem
[ Install ] aus.Benutzer und Gruppen anlegenWährend der Installation sollten Sie mindestens
ein Benutzerkonto anlegen, sodass Sie das System
ohne das Konto root benutzen
können. Normalerweise ist die Root-Partition
recht klein und läuft schnell voll, wenn Sie
Anwendungen unter dem root-Konto
laufen lassen. Vor der größten Gefahr
warnt der nachstehende Hinweis: User Confirmation Requested
Would you like to add any initial user accounts to the system? Adding
at least one account for yourself at this stage is suggested since
working as the "root" user is dangerous (it is easy to do things which
adversely affect the entire system).
[ Yes ] NoDer Bildschirm auf Deutsch: Bestätigung erforderlich
Wollen Sie Benutzerkonten anlegen? Wir empfehlen, mindestens
ein Konto für sich selbst anzulegen, da es gefährlich
ist, unter "root" zu arbeiten (es ist leicht, Befehle einzugeben,
die das System nachhaltig beeinträchtigen).
[ Yes ] NoUm ein Benutzerkonto anzulegen, wählen Sie
&gui.yes; aus und drücken
Enter.Benutzerkonto auswählenMarkieren Sie User mit
den Pfeiltasten und drücken Sie die Taste
Enter.Benutzerkonto anlegenWählen Sie die Felder zum Ausfüllen mit
der Taste Tab aus. Zur Hilfe werden
die nachstehenden Beschreibungen werden im unteren
Teil des Bildschirms angezeigt:Login IDDer Name des Benutzerkontos (verpflichtend).UIDDie numerische ID dieses Kontos. Wenn Sie das
Feld leer lassen, wird eine ID automatisch
zugeteilt.GroupDie diesem Konto zugeordnete Login-Gruppe.
Wenn Sie das Feld leer lassen, wird automatisch
eine Gruppe zugeteilt.PasswordDas Passwort des Benutzerkontos.
Füllen Sie dieses Feld sehr sorgfätig
aus.Full nameDer vollständige Name des Benutzers
(Kommentarfeld).Member groupsDie Gruppen, in denen dieses Konto Mitglied
ist (das Konto erhält Zugriffsrechte auf
Dateien dieser Gruppe).Home directoryDas Heimatverzeichnis des Benutzerkontos.
Wenn Sie das Feld leer lassen, wird das Verzeichnis
automatisch festgelegt.Login shellDie Login-Shell des Kontos. Wenn Sie das
Feld leer lassen, wird /bin/sh
als Login-Shell festgesetzt.Im Beispiel wurde die Login-Shell von
/bin/sh zu der vorher installierten
/usr/local/bin/bash geändert.
Tragen Sie keine Shell ein, die nicht existiert, da sich
sonst nicht anmelden können. In der BSD-Welt wird
häufig die C-Shell benutzt, die Sie mit
/bin/tcsh angeben können.Damit ein Wechsel auf den Superuser
root möglich ist, wurde dem
Benutzerkonto die Gruppe wheel
zugeordnet.Wenn Sie zufrieden sind, drücken Sie &gui.ok;.
Es erscheint wieder das Benutzer-Menü:Benutzermenü verlassenWeitere Gruppen können, wenn Sie die Anforderungen
schon kennen, zu diesem Zeitpunkt angelegt werden.
Nach der Installation können Sie Gruppen mit
dem Werkzeug sysinstall (vor &os; 5.2
/stand/sysinstall) anlegen.Wenn Sie alle Benutzer angelegt haben, wählen
Sie mit den Pfeiltasten Exit
aus und drücken Sie die Taste
Enter.Das root-Passwort festlegen Message
Now you must set the system manager's password.
This is the password you'll use to log in as "root".
[ OK ]
- [ Press enter to continue ]
+ [ Press enter or space ]
Um das root-Passwort festzulegen,
drücken Sie die Taste Enter.Sie müssen das Passwort zweimal eingeben.
Stellen Sie sicher, dass Sie das Passwort nicht
vergessen. Beachten Sie, dass bei der Eingabe
das Passwort weder ausgegeben wird noch Sterne
angezeigt werden.
- Changing local password for root.
-New password :
+ New password :
Retype new password :Nach der erfolgreichen Eingabe des Passworts
kann die Installation fortgesetzt werden.Die Installation beendenWenn Sie noch weitere Netzwerkkarten konfigurieren
oder weitere Einstellungen vornehmen wollen, können
Sie das jetzt tun. Sie können die Einstellungen auch
nach der Installation mit sysinstall
(/stand/sysinstall vor &os; 5.2)
vornehmen. User Confirmation Requested
Visit the general configuration menu for a chance to set any last
options?
Yes [ No ]Um in das Hauptmenü zurückzukehren, wählen
Sie mit den Pfeiltasten &gui.no; aus
und drücken Sie Enter.Die Installation beendenWählen Sie mit den Pfeiltasten
[X Exit Install] aus und drücken
Sie die Taste Enter. Sie müssen
das Beenden der Installation bestätigen: User Confirmation Requested
Are you sure you wish to exit? The system will reboot (be sure to
- remove any floppies from the drives).
+ remove any floppies/CDs/DVDs from the drives).
[ Yes ] NoWählen Sie &gui.yes; aus
und entfernen Sie die Diskette aus dem Laufwerk, wenn
Sie von einer Diskette gestartet haben. Das CD-Laufwerk
ist bis zum Neustart des Systems verriegelt. Entfernen
Sie die CD zügig wenn der Rechner startet.Achten Sie beim Neustart des Systems auf eventuell
auftauchende Fehlermeldungen.&os; startenStart von &os; auf einem &i386;Wenn alles funktioniert hat, laufen viele Meldungen
über den Bildschirm und schließlich erscheint
ein Anmeldeprompt. Um sich die Meldungen anzusehen.
drücken Sie die Taste Scroll-Lock.
Sie können dann mit den Tasten PgUp
und PgDn blättern. Wenn Sie erneut
Scroll-Lock drücken, kehren
Sie zum Anmeldeprompt zurück.Es kann sein, dass der Puffer zu klein ist, um alle
Meldungen anzuzeigen. Nachdem Sie sich angemeldet haben,
können Sie sich mit dem Kommando dmesg
alle Meldungen ansehen.Melden Sie sich bitte mit dem Benutzerkonto an
(rpratt im Beispiel),
das Sie während der Installation eingerichtet haben.
Arbeiten Sie mit root nur dann
wenn es erforderlich ist.Die nachfolgende Abbildung zeigt typische
Startmeldungen (Versionsangaben entfernt):Copyright (c) 1992-2002 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
Timecounter "i8254" frequency 1193182 Hz
CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
Origin = "AuthenticAMD" Id = 0x580 Stepping = 0
Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
AMD Features=0x80000800<SYSCALL,3DNow!>
real memory = 268435456 (262144K bytes)
config> di sn0
config> di lnc0
config> di le0
config> di ie0
config> di fe0
config> di cs0
config> di bt0
config> di aic0
config> di aha0
config> di adv0
config> q
avail memory = 256311296 (250304K bytes)
Preloaded elf kernel "kernel" at 0xc0491000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
md0: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
device 10.0 on pci0
ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x1 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
ppbus0: IEEE1284 device found /NIBBLE
Probing for PnP devices on ppbus0:
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
Mounting root from ufs:/dev/ad0s1a
swapon: adding /dev/ad0s1b as swap device
Automatic boot in progress...
/dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
/dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
/dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
/dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
/dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
Doing initial network setup: hostname.
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
ether 52:54:05:de:73:1b
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
Additional routing options: IP gateway=YES TCP keepalive=YES
routing daemons:.
additional daemons: syslogd.
Doing additional network setup:.
Starting final network daemons: creating ssh RSA host key
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
creating ssh DSA host key
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
/usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
starting standard daemons: inetd cron sshd usbd sendmail.
Initial rc.i386 initialization:.
rc.i386 configuring syscons: blank_time screensaver moused.
Additional ABI support: linux.
Local package initialization:.
Additional TCP options:.
FreeBSD/i386 (k6-2.example.com) (ttyv0)
login: rpratt
Password:Das Erzeugen der RSA- und DSA-Schlüssel kann auf
langsamen Maschinen lange dauern. Die Schlüssel
werden nur beim ersten Neustart erzeugt, spätere
Neustarts sind schneller.Wenn der X-Server konfiguriert ist und eine
Oberfläche ausgewählt wurde, können Sie
X mit dem Kommando startx starten.Start von &os; auf einer AlphaAlphaNach der Installation können Sie &os; von
der SRM-Eingabeaufforderung mit einem Befehl wie
dem folgenden starten:>>>BOOT DKC0Der Befehl weist die Firmware an, von dem
angegebenen Laufwerk zu starten. Damit &os; künftig
automatisch startet, geben Sie die folgenden Befehle
ein:>>>SET BOOT_OSFLAGS A>>>SET BOOT_FILE ''>>>SET BOOTDEF_DEV DKC0>>>SET AUTO_ACTION BOOTBeim Start von &os; erscheinen ähnliche
Meldungen, wie beim Start von &os; auf einem
&i386;-System.&os; herunterfahrenEs ist wichtig, dass Sie das Betriebssystem richtig
herunterfahren. Wechseln Sie zunächst mit dem
Befehl su zum Superuser; Sie müssen
dazu das root-Passwort eingeben.
Der Wechsel auf den Superuser gelingt nur, wenn der
Benutzer ein Mitglied der Gruppe wheel
ist. Ansonsten melden Sie sich direkt als Benutzer
root an. Der Befehl
shutdown -h now hält das System
an.The operating system has halted.
Please press any key to reboot.Sie können den Rechner ausschalten, nachdem die
Meldung Please press any key to reboot
erschienen ist. Wenn Sie stattdessen eine Taste drücken,
startet das System erneut.Sie können das System auch mit der Tastenkombination
CtrlAltDel
neu starten. Sie sollten diese Tastenkombination
allerdings nicht gewohnheitsmäßig benutzen.FehlersucheInstallationFehlersucheDieser Abschnitt behandelt häufig auftretende
Installationsprobleme. Weiterhin enthält er Hinweise
wie &os; parallel mit &ms-dos; oder &windows; betrieben wird.Wenn etwas schief gehtAufgrund der Beschränkungen der PC-Architektur
ist eine zuverlässige Geräteerkennung nicht
möglich. Falls die Geräteerkennung
fehlschlägt, können Sie einige Dinge
versuchen.Sehen Sie in den Hardware
Notes Ihrer &os;-Version nach, ob Ihre Hardware
unterstützt wird.Wenn Ihre Hardware unterstützt wird und sich
der Installationsprozess aufhängt oder sonstige
Probleme auftauchen, müssen Sie einen angepassten Kernel
erstellen, da Ihre Hardware in diesem Fall nicht vom
GENERIC-Kernel unterstützt wird.
Der Kernel auf den Startdisketten
verwendet die Werkseinstellungen für IRQs,
IO-Adressen und DMA-Kanäle. Geänderte
Einstellungen müssen Sie daher in der
Kernelkonfigurationsdatei angeben, damit &os; diese
Geräte korrekt erkennt.Es ist auch möglich, dass die Suche nach einem
nicht vorhandenen Gerät dazu führt, dass die
Erkennung eines vorhandenen Geräts fehlschlägt.
In diesem Fall sollten Sie nicht vorhandene Geräte,
deren Einstellungen sich mit vorhandenen Geräten
überschneiden, deaktivieren.Einige Installationsprobleme können Sie vermeiden
oder umgehen, indem Sie die Firmware der Hardware,
insbesondere die Firmware der Systemplatine, aktualisieren.
Die Firmware der Systemplatine ist das
BIOS. Die meisten Hardware-Hersteller
bieten aktuelle Firmware und Anleitungen zur
Aktualisierung der Firmware auf dem Internet an.Viele Hersteller raten davon ab, ohne guten
Grund das BIOS zu aktualisieren.
Die Aktualisierung kann fehlschlagen
und den BIOS-Chip dauerhaft
beschädigen.
-
- Vorhandene &ms-dos;-Partitionen bearbeiten
-
-
- Partitionen
- &ms-dos;
-
-
- Viele Benutzer wollen &os; auf PCs
- installieren, auf denen sich schon ein
- µsoft;-Betriebssystem befindet. Bei diesem Vorhaben
- unterstützt das Werkzeug FIPS.
- Das Werkzeug befindet sich auf der Installations-CD-ROM im
- Verzeichnis tools
- oder kann von den &os;-Spiegeln
- heruntergeladen werden.
-
- Das Werkzeug FIPS teilt
- eine bestehende &ms-dos;-Partition auf. Der erste Teil
- enthält die Daten der alten Partition, der zweite
- Teil steht für die Installation von &os; zur
- Verfügung. Vorher muss die &ms-dos;-Partition
- defragmentiert werden. Klicken Sie im Explorer mit
- der rechten Maustaste das Laufwerk an und wählen
- Sie Defragmentieren aus. Alternativ können Sie
- die Norton Disk Tools benutzen.
- Nachdem das Laufwerk defragmentiert ist, können Sie
- FIPS aufrufen. Folgen Sie einfach
- den Anweisungen des Werkzeugs. Nach einem Neustart
- können Sie &os; in die freie Slice installieren.
- Den Platzbedarf der Installation können Sie im
- Menü Distributions von
- sysinstall abschätzen.
-
- Von PowerQuest
- stammt das nützliche Werkzeug
- &partitionmagic;. Diese
- Anwendung bietet weit mehr Funktionen als
- FIPS. Benutzen Sie
- &partitionmagic;, wenn Sie
- die verwendeten Betriebssysteme oft wechseln wollen.
- Das Produkt kostet allerdings Geld; wenn Sie &os;
- installieren und beibehalten wollen, ist wahrscheinlich
- FIPS das Richtige für
- Sie.
-
-
&ms-dos;- und &windows;-Dateisysteme benutzenMit Double Space™
komprimierte Dateisysteme werden zurzeit von &os; nicht
unterstützt. Damit &os; auf die Daten zugreifen kann,
müssen Sie das Dateisystem daher dekomprimieren.
Rufen Sie dazu den Compression Agent
aus dem Menü Start >
Programs >
System Tools auf.Unter &os; hängen Sie &ms-dos;-Dateisysteme
(FAT16 sowie FAT32) mit dem Kommando &man.mount.msdosfs.8; ein.
Dazu ein Beispiel:&prompt.root; mount_msdosfs /dev/ad0s1 /mntDas &ms-dos;-Dateisystem befindet sich hier auf
der ersten Partition der primären Platte. Dies kann
bei Ihnen anders sein. Die Anordnung der Partitionen
entnehmen Sie den Ausgaben von dmesg
und mount.Erweiterte &ms-dos;-Partitionen werden für
gewöhnlich hinter die &os;-Partitionen gelegt:
Die Nummern der von &ms-dos; benutzten Slices ist
höher als die der Slices von &os;. Beispielsweise
kann /dev/ad0s1 die erste
&ms-dos; Partition sein, /dev/ad0s2
die &os;-Partition sein und /dev/ad0s3
eine erweiterte &ms-dos;-Partition. Einige Anfänger
verwirrt diese Situation zunächst.Analog werden NTFS-Partitionen mit dem
Kommando &man.mount.ntfs.8; eingehangen.
- Fragen und Antworten für Alpha-Benutzer
-
-
- Alpha
-
-
- Dieser Abschnitt beantwortet häufig gestellte
- Fragen zur &os;-Installation auf Alpha-Systemen.
+ Fragen und Antworten zu häufig auftretenden
+ Problemen
- Kann ich &os; von der ARC- oder Alpha-BIOS-Konsole
- starten?
-
-
- ARC
- Alpha-BIOS
- SRM
-
-
- Nein, wie Compaq Tru64 und VMS startet
- &os; nur von der SRM-Konsole.
-
-
-
-
-
- Hilfe, ich habe keinen Platz! Muss ich
- zuerst alles löschen?
+ Mein System hängt sich beim Testen der Hardware
+ auf, oder es verhält sich seltsam während der
+ Installation oder das Diskettenlaufwerk wird nicht
+ getestet.
-
-
- Leider ja.
-
-
-
-
-
- Kann ich Compaq Tru64- oder VMS-Dateisysteme
- einhängen?
-
-
+
- Zurzeit nicht.
+ &os; 5.0 and above makes extensive use of the system ACPI
+ service on the i386, amd64 and ia64 platforms to aid in system
+ configuration if it's detected during boot. Unfortunately,
+ some bugs still exist in both the ACPI driver and within system
+ motherboards and BIOS. The use of ACPI can be disabled by setting
+ the hint.acpi.0.disabled hint in the third stage
+ boot loader:
+
+ set hint.acpi.0.disabled="1"
+
+ This is reset each time the system is booted, so it is
+ necessary to add hint.acpi.0.disabled="1"
+ to the file
+ /boot/loader.conf. More information about the
+ boot loader can be found in the &os; Handbook.
+
+
+
+
+ I go to boot from the hard disk for the first time
+ after installing &os;, the kernel loads and probes my
+ hardware, but stops with messages like:
+
+ changing root device to ad1s1a panic: cannot mount root
+ What is wrong? What can I do?
+
+ What is this
+ bios_drive:interface(unit,partition)kernel_name
+ thing that is displayed with the boot help?
+
+
+ There is a longstanding problem in the case where the
+ boot disk is not the first disk in the system. The BIOS
+ uses a different numbering scheme to &os;, and working
+ out which numbers correspond to which is difficult to get
+ right.
+
+ In the case where the boot disk is not the first disk
+ in the system, &os; can need some help finding it. There
+ are two common situations here, and in both of these cases,
+ you need to tell &os; where the root filesystem is. You
+ do this by specifying the BIOS disk number, the disk type
+ and the &os; disk number for that type.
+
+ The first situation is where you have two IDE disks,
+ each configured as the master on their respective IDE
+ busses, and wish to boot &os; from the second disk. The
+ BIOS sees these as disk 0 and disk 1, while &os; sees
+ them as ad0 and
+ ad2.
+
+ &os; is on BIOS disk 1, of type
+ ad and the &os; disk number is 2, so
+ you would say:
+
+ 1:ad(2,a)kernel
+
+ Note that if you have a slave on the primary bus, the
+ above is not necessary (and is effectively wrong).
+
+ The second situation involves booting from a SCSI disk
+ when you have one or more IDE disks in the system. In this
+ case, the &os; disk number is lower than the BIOS disk
+ number. If you have two IDE disks as well as the SCSI disk,
+ the SCSI disk is BIOS disk 2, type da and
+ &os; disk number 0, so you would say:
+
+ 2:da(0,a)kernel
+
+ To tell &os; that you want to boot from BIOS disk
+ 2, which is the first SCSI disk in the system. If you only
+ had one IDE disk, you would use '1:' instead.
+
+ Once you have determined the correct values to use,
+ you can put the command exactly as you would have typed it
+ in the /boot.config file using a
+ standard text editor. Unless instructed otherwise, &os;
+ will use the contents of this file as the default response
+ to the boot: prompt.
+
+
+
+
+ I go to boot from the hard disk for the first time
+ after installing &os;, but the Boot Manager prompt just
+ prints F? at the boot menu each time but
+ the boot won't go any further.
+
+
+ The hard disk geometry was set incorrectly in the
+ Partition editor when you installed &os;. Go back into
+ the partition editor and specify the actual geometry of your
+ hard disk. You must reinstall &os; again from the
+ beginning with the correct geometry.
+
+ If you are failing entirely in figuring out the
+ correct geometry for your machine, here's a tip: Install a
+ small DOS partition at the beginning of the disk and install
+ &os; after that. The install program will see the DOS
+ partition and try to infer the correct geometry from it,
+ which usually works.
+
+ The following tip is no longer recommended, but is left here
+ for reference:
+
+
+ If you are setting up a truly dedicated &os;
+ server or workstation where you don't care for (future)
+ compatibility with DOS, Linux or another operating system,
+ you've also got the option to use the entire disk (`A' in
+ the partition editor), selecting the non-standard option
+ where &os; occupies the entire disk from the very first
+ to the very last sector. This will leave all geometry
+ considerations aside, but is somewhat limiting unless
+ you're never going to run anything other than &os; on a
+ disk.
+
+
+
+
+
+ The system finds my &man.ed.4; network card, but I
+ keep getting device timeout errors.
+
+
+ Your card is probably on a different IRQ from what is
+ specified in the /boot/device.hints file. The ed driver does
+ not use the `soft' configuration by default (values entered
+ using EZSETUP in DOS), but it will use the software
+ configuration if you specify -1 in the hints
+ for the interface.
+
+ Either move the jumper on the card to a hard
+ configuration setting (altering the kernel settings if
+ necessary), or specify the IRQ as -1
+ by setting the hint hint.ed.0.irq="-1"
+ This will tell the kernel to
+ use the soft configuration.
+
+ Another possibility is that your card is at IRQ 9,
+ which is shared by IRQ 2 and frequently a cause of problems
+ (especially when you have a VGA card using IRQ 2!). You
+ should not use IRQ 2 or 9 if at all possible.
-
+
ValentinoVaschettoBeigetragen von Anspruchsvollere InstallationenDieser Abschnitt beschreibt die Installation von &os;
in besonderen Situationen.&os; auf einem System ohne Monitor oder Tastatur
installierenInstallationheadless (serielle Konsole)serielle KonsoleDiese Methode wird als headless install
(kopflose Installation) bezeichnet, da die Maschine, auf
die &os; installiert werden soll, entweder keinen Monitor
angeschlossen hat oder über keine VGA-Karte verfügt.
Wie kann &os; dennoch installiert werden? Eben
mithilfe einer seriellen Konsole. Im Wesentlichen ist
eine serielle Konsole eine andere Maschine, die Ein- und
Ausgaben für eine andere Maschine bereitstellt.
Um über eine serielle Konsole zu installieren, erstellen
Sie zunächst die Startdisketten, wie in
beschrieben.Damit ein Systemstart mit der seriellen Konsole
möglich ist, müssen die Disketten entsprechend
der nachstehenden Anleitung angepasst werden:Die Startdisketten für eine serielle Konsole
anpassenmountWenn Sie ein System mit den frisch erstellten
Disketten starten, läuft der normale
&os;-Installationsprozess an. Diese Installation
soll aber über die serielle Konsole gesteuert
werden. Hängen Sie mit dem Kommando &man.mount.8;
die Diskette boot.flp ein:&prompt.root; mount /dev/fd0 /mntWechseln Sie in das Verzeichnis
/mnt:&prompt.root; cd /mntIn diesem Verzeichnis können Sie den
Start über eine serielle Konsole einstellen.
Erstellen Sie die Datei boot.config
mit dem Inhalt /boot/loader -h.
Diese Zeile weist den Bootloader an, mit der seriellen
Konsole zu starten.&prompt.root; echo "/boot/loader -h" > boot.configNachdem Sie die Diskette angepasst haben, hängen
Sie die Diskette mit dem Kommando &man.umount.8;
wieder aus:&prompt.root; cd /
&prompt.root; umount /mntSie können die Diskette nun aus dem
Laufwerk entfernen.Das Nullmodemkabel anschließenNullmodemkabelSie müssen beide Maschinen mit einem
Nullmodemkabel
verbinden. Schließen Sie
das Nullmodemkabel an die seriellen Schnittstellen
beider Maschinen an. Sie können
kein direktes serielles Kabel verwenden,
Nullmodemkabel besitzen gekreuzte Leitungen.Die Installation startenSie können die Installation jetzt starten.
Legen Sie die boot.flp-Diskette
in das Laufwerk der Maschine ein, auf der Sie &os;
installieren wollen. Schalten Sie anschließend
die Maschine ein.Die Verbindung mit der zur installierenden
Maschine herstellencuMit dem Kommando &man.cu.1; verbinden Sie sich
mit der zu installierenden Maschine:&prompt.root; cu -l /dev/cuad0Unter &os; 5.X müssen Sie
/dev/cuaa0 anstelle von
/dev/cuad0 verwenden.Fertig! Über die cu-Sitzung
können Sie nun die zu installierende Maschine steuern.
Sie erhalten die Aufforderung die Diskette
kern1.flp einzulegen.
Anschließend legen Sie den Terminaltyp fest.
Wählen Sie die FreeBSD color console
aus und fahren wie gewohnt mit der Installation fort.Eigene Installationsmedien herstellenIm Folgenden ist mit Installations-CD
eine CD-ROM oder DVD gemeint, die Sie gekauft oder selbst
hergestellt haben.Oft müssen Sie eigene Installationsmedien erzeugen.
Dies können physische Medien wie Bänder sein oder
Installationsquellen sein, aus denen
sysinstall Dateien herunterlädt,
beispielsweise ein lokaler FTP-Server oder eine
&ms-dos;-Partition.Beispiele:Im lokalen Netzwerk befinden sich viele Maschinen,
Sie besitzen allerdings nur eine Installations-CD.
Den Inhalt der Installations-CD wollen Sie auf
einem lokalem FTP-Server bereitstellen. Zur Installation
wird der lokale FTP-Server anstelle eines Internet-Servers
benutzt.Sie haben eine Installations-CD, allerdings erkennt
&os; im Gegensatz zu &ms-dos;/&windows; das CD- oder
DVD-Laufwerk nicht. Sie können die
Installationsdateien auf eine DOS-Partition desselben
Rechners kopieren und &os; von der DOS-Partition
installieren.Der Rechner, auf dem Sie &os; installieren wollen,
besitzt kein CD- oder DVD-Laufwerk. Ein anderer Rechner,
zu dem eine serielle oder parallele Verbindung besteht,
besitzt allerdings ein CD- oder DVD-Laufwerk.Sie wollen ein Band erzeugen, mit dem Sie &os;
installieren können.Eine Installations-CD-ROM erzeugenMit jeder Release stellt das &os;-Project für
jede unterstützte Architektur mindestens zwei
CD-Abbilder (ISO-Images) zur Verfügung.
Wenn Sie einen CD-Brenner besitzen, können Sie
diese Abbilder brennen und damit &os; installieren.
Wenn Sie einen CD-Brenner besitzen und über eine
gute Internet-Verbindung verfügen, ist das die
preiswerteste Art, &os; zu installieren.Das richtige Abbild herunterladenDie ISO-Abbilder für jedes Releases
können Sie von
ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arch/version
oder einem nahe gelegenen Spiegel herunterladen.
Ersetzen Sie arch und
version durch passende
Werte.Das Verzeichnis enthält die folgenden
Abbilder:
FreeBSD 5.X sowie
6.X-ISO-AbbilderDateinameInhaltVersion-RELEASE-Architektur-bootonly.isoEnthält alles, was Sie benötigen, um
um den FreeBSD-Kernel zu laden und die
Installationsoberfläche zu starten. Die zu
installierenden Dateien müssen über
FTP oder eine andere geeignete Quelle bezogen
werden.version-RELEASE-Architektur-disc1.isoAlles, was Sie für die Installation von
FreeBSD benötigen. Zusätzlich ist ein
Live-Dateisystem enthalten, das
gemeinsam mit der Repair-Funktion
von sysinstall
verwendet werden kann.version-RELEASE-Architektur-disc2.isoDie &os;-Dokumentation (bis einschließlich
&os; 6.1) und so viele Pakete Dritter, wie auf dem
Installationsmedium Platz hatten.version-RELEASE-arch-docs.isoDie &os;-Dokumentation (ab &os; 6.2).
Sie benötigen nur eines der beiden Abbilder
bootonly oder
disc1. Laden Sie bitte nicht
beide Abbilder herunter, das disc1-Abbild
enthält alles, was das bootonly-Abbild
enthält.Benutzen Sie das bootonly-Abbild,
wenn Sie eine preiswerte Internet-Anbindung besitzen.
Mit diesem Abbild können Sie &os; installieren.
Software Dritter können Sie anschließend
mithilfe des Ports-Systems ()
herunterladen.Benutzen Sie das disc1-Abbild,
wenn Sie &os; installieren wollen und das
Installationsmedium eine angemessene Auswahl an Software
Dritter enthalten soll.Die zusätzlichen Abbilder sind nützlich
aber nicht notwendig, insbesondere wenn Sie eine
schnelle Internet-Verbindung besitzen.Die CDs brennenSie müssen die Abbilder auf eine CD
brennen. Das Brennen von CDs unter &os;
wird in erläutert
(sehen Sie sich insbesondere
und an).Wenn Sie die CDs unter einem anderen Betriebssystem
erstellen, benutzen Sie die entsprechenden Werkzeuge
des Betriebssystems. Die Abbilder sind
Standard-ISO-Abbilder und können von vielen
Brennprogrammen verarbeitet werden.Wenn Sie eine angepasste Version von FreeBSD
erstellen wollen, sollten Sie den Release Engineering
Article lesen.Einen lokalen FTP-Server einrichtenInstallationNetzwerkinstallationFTPDie Dateien auf der Installations-CD sind genauso
angeordnet wie auf den &os;-FTP-Servern. Daher ist es
einfach, einen lokalen FTP-Server für die
&os;-Installation über ein Netzwerk einzurichten.Hängen Sie auf dem FTP-Server die CD-ROM in
das Verzeichnis /cdrom
ein:&prompt.root; mount /cdromLegen Sie ein Konto für Anonymous-FTP an.
Dazu editieren Sie die Datei
/etc/passwd mit dem Kommando
&man.vipw.8; und fügen die nachstehende Zeile
hinzu:ftp:*:99:99::0:0:FTP:/cdrom:/nonexistentStellen Sie sicher, dass der FTP-Dienst in der Datei
/etc/inetd.conf aktiviert ist.Jeder, der Ihren Rechner über das Netzwerk
erreicht, kann nun &os; über FTP installieren.
In sysinstall wird dazu
FTP als Installationsmedium wählt. Der
FTP-Server wird durch die Auswahl
Other (andere als die vorgegebenen
Server) und anschließende Eingabe von
ftp://Ihr Rechner
festgelegt.Wenn die Version der für die FTP-Installation
Ihrer Clients verwendeten Bootmedien (normalerweise Disketten)
nicht exakt der von Ihnen auf Ihrem lokalen FTP-Server
angebotenen Version entspricht, ist
sysinstall nicht in der
Lage, die Installation abzuschließen. Sind die
Versionsnummern unterschiedlich, können Sie durch
das Aufrufen des Punktes Optionssysinstall dazu zwingen, die
Installation dennoch abzuschließen. Dazu setzen
Sie den Namen der Distribution auf
any.Diese Vorgehensweise ist in Ihrem lokalen Netzwerk,
das durch eine Firewall geschützt ist, völlig
in Ordnung. Wenn Sie FTP für Rechner auf dem
Internet (und nicht für lokale Rechner) anbieten,
zieht Ihr Server die Aufmerksamkeit von Crackern und
andere Unannehmlichkeiten auf sich. Achten Sie in
diesem Fall darauf, dass Sie gute Sicherheitsverfahren
anwenden.Installationsdisketten erstellenInstallationDiskettenWenn Sie, was wir nicht empfehlen,
von Disketten installieren müssen, weil Disketten das
einzig unterstützte Installationsmedium sind oder
Sie es sich einfach schwer machen wollen, müssen
Sie zunächst einige Disketten vorbereiten.Sie müssen mindestens den Inhalt des Verzeichnisses
base auf
1.44 MB Disketten kopieren.
Wenn Sie die Disketten unter &ms-dos; erstellen,
müssen
Sie die Disketten mit dem DOS-Kommando
FORMAT formatieren. Unter &windows;
können Sie Disketten mithilfe des Explorers
formatieren (klicken Sie mit der rechten Maustaste auf
das A:-Laufwerk und wählen
Sie Format aus).Vertrauen Sie vorformatierten Disketten nicht; formatieren
Sie die Disketten zur Sicherheit immer selbst. In der
Vergangenheit waren vorformatierte Disketten der Verursacher
vieler Probleme.Falls Sie die Disketten auf einer &os;-Maschine
erstellen, sollten Sie immer noch formatieren. Allerdings
brauchen Sie kein DOS-Dateisystem auf den Disketten
anzulegen. Mit den Kommandos bsdlabel
und newfs können Sie das Dateisystem
UFS verwenden, wie im nachstehenden Beispiel für
3.5" 1.44 MB Disketten gezeigt:&prompt.root; fdformat -f 1440 fd0.1440
&prompt.root; bsdlabel -w fd0.1440 floppy3
&prompt.root; newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0Anschließend können Sie die Disketten
wie ein normales Dateisystem einhängen und
beschreiben.Nachdem Sie die Disketten formatiert haben, kopieren
Sie die Dateien der Distribution auf die Disketten. Die
Dateien der Distribution sind in Stücke geteilt, sodass
fünf Dateien auf eine 1.44 MB Diskette passen.
Kopieren Sie die gewünschten Distribution auf
Disketten, wobei Sie so viele Dateien wie möglich
auf eine Diskette kopieren. Jede Distribution wird auf
der Diskette in einem eigenen Verzeichnis abgelegt,
beispielsweise a:\base\base.aa,
a:\base\base.ab und so weiter.Die Datei base.inf muss
unbedingt auf die erste Diskette des
base-Diskettensatzes kopiert werden,
damit das Installationsprogramm feststellen kann, wie viele
Disketten geladen werden müssen, um die Distribution
wieder zusammenzusetzen.Im Installationsprozess wählen Sie als
Installationsmedium Floppy
aus. Folgen Sie dann den gegebenen Anweisungen.Von einer &ms-dos;-Partition installierenInstallationvon einer &ms-dos;-PartitionUm eine Installation von einer &ms-dos;-Partition
vorzubereiten, kopieren Sie Dateien der Distributionen
in das Verzeichnis freebsd
direkt unterhalb des Wurzelverzeichnisses (zum Beispiel
c:\freebsd).
In diesem Verzeichnis muss sich dieselbe Verzeichnisstruktur
wie auf dem Installationsmedium befinden. Wenn Sie
die Dateien von einer Installations-CD kopieren, empfehlen
wir den DOS-Befehl xcopy. Das
nachstehende Beispiel bereitet eine minimale Installation
von &os; vor:C:\>md c:\freebsdC:\>xcopy e:\bin c:\freebsd\bin\ /sC:\>xcopy e:\manpages c:\freebsd\manpages\ /sIm Beispiel wurde angenommen, dass auf Laufwerk
C: ausreichend Platz vorhanden
ist und die CD-ROM Laufwerk E:
ist.Wenn Sie kein CD-Laufwerk besitzen, können Sie
die Distributionen von
ftp.FreeBSD.org
herunterladen. Jede Distribution liegt in einem eigenen
Verzeichnis. Beispielsweise liegt die Base-Distribution
im Verzeichnis
&rel.current;/base/.Kopieren Sie jede Distribution, die Sie von einer
&ms-dos;-Partition installieren wollen (und für
die Platz ist) in das Verzeichnis
c:\freebsd.
Für eine minimale Installation benötigen
Sie nur die Base-Distribution.Ein Installationsband erstellenInstallationvon einem QIC/SCSI-BandFalls Sie nicht über FTP oder von einer CD-ROM
installieren können, ist die Installation von Band
wahrscheinlich die einfachste Methode. Das
Installationsprogramm erwartet, dass sich die Distributionen
im tar-Format auf dem Band befinden.
Von den Distributions-Dateien erstellen Sie das
Installationsband einfach mit dem Kommando
tar:&prompt.root; cd /freebsd/distdir
&prompt.root; tar cvf /dev/rwt0 dist1 ... dist2Stellen Sie während der Installation sicher, dass
Sie über genügend freien Platz in einem
temporären Verzeichnis (das Sie festlegen können)
verfügen. Das temporäre Verzeichnis muss
den gesamten Inhalt des Bands
aufnehmen können. Da auf Bänder nicht wahlfrei
zugegriffen werden kann, benötigt diese
Installationsmethode temporär sehr viel Platz.Das Band muss sich vor dem Neustart mit der
Startdiskette im Laufwerk befinden. Ansonsten
wird das Band während der Geräteerkennung
vielleicht nicht erkannt.Eine Netzwerkinstallation vorbereitenInstallationNetzwerkinstallationseriell (SLIP oder PPP)InstallationNetzwerkinstallationparallel (PLIP)InstallationNetzwerkinstallationEthernetSie können drei Verbindungsarten für eine
Netzwerkinstallation benutzen: Eine Ethernet-Verbindung,
eine serielle Verbindung (SLIP oder PPP), oder eine
parallele Verbindung (PLIP, Laplink-Kabel).Die schnellste Netzwerkinstallation ist natürlich
mit einer Netzwerkkarte möglich. &os; unterstützt
die meisten der üblichen Netzwerkkarten. Eine Liste
der unterstützten Netzwerkkarten ist in den
Hardware-Notes jedes Releases enthalten. Wenn Sie eine
unterstützte PCMCIA-Netzwerkkarte benutzen, stellen
Sie sicher, dass die Karte eingesteckt ist,
bevor der Laptop eingeschaltet wird.
Leider unterstützt &os; das Einstecken von PCMCIA-Karten
während der Installation noch nicht.Für eine Netzwerkinstallation müssen Sie
Ihre IP-Adresse, die Netzwerkmaske und den Namen Ihres
Rechner kennen. Wenn Sie über eine PPP-Verbindung
installieren und keine feste IP-Adresse besitzen, braucht
Sie der vorgehende Satz nicht zu beunruhigen. Sie
können eine IP-Adresse dynamisch von Ihrem ISP
beziehen. Fragen Sie Ihren Systemadministrator nach
den richtigen Netzwerkeinstellungen.
Wenn Sie andere Rechner über Namen anstatt über
IP-Adressen erreichen wollen, brauchen Sie zudem einen
Nameserver und möglicherweise die Adresse eines
Gateways (mit PPP ist das die Adresse des ISPs), über
den Sie den Nameserver erreichen. Wenn Sie von einem
FTP-Server über einen HTTP-Proxy installieren wollen,
benötigen Sie außerdem noch die Adresse des
Proxy-Servers. Wenn Sie nicht alle oder zumindest
die meisten der benötigten Daten kennen, sollten
Sie wirklich vor der Installation
mit Ihrem Systemadministrator oder ISP reden!Die SLIP-Unterstützung ist recht einfach und
auf feste Verbindungen, beispielsweise ein serielles Kabel
zwischen einem Laptop und einem anderen Rechner, beschränkt.
Die Verbindung muss fest sein, da die Installation mit
SLIP keine Einwahl unterstützt. Eine Einwahl ist mit
PPP möglich, das Sie, wenn möglich, gegenüber
SLIP bevorzugen sollten.Wenn Sie ein Modem benutzen, ist PPP ziemlich sicher
die einzige Wahl. Stellen Sie sicher, dass Sie die
Daten Ihres Service Providers bereitliegen haben,
da Sie während der Installation die Daten früh
benötigen.Wenn Sie PAP oder CHAP benutzen, um sich mit Ihrem ISP
zu verbinden (wenn Sie unter &windows; kein Skript
benötigen, um die Verbindung herzustellen), brauchen
Sie an der ppp-Eingabeaufforderung
nur das Kommando dial abzusetzen.
Ansonsten müssen Sie sich mit Modem-spezifischen
AT-Kommandos bei Ihrem ISP einwählen (PPP stellt
nur einen einfachen Terminal-Emulator zur Verfügung).
Weiteres über PPP erfahren Sie im Abschnitt
User-PPP des Handbuchs
und im PPP-Abschnitt
der FAQ. Bei Problemen können Sie mit dem Kommando
set log local Meldungen auf den Bildschirm
umleiten.Wenn eine feste Verbindung zu einer anderen &os;-Maschine
besteht (2.0 Release oder neuer), sollten Sie ein
paralleles Laplink-Kabel in Betracht ziehen. Über
eine parallele Verbindung sind höhrere Geschwindigkeiten
als über eine serielle Verbindung (typischerweise
bis zu 50 kByte/s) möglich. Daher ist die
Installation über eine parallele Verbindung schneller
als eine Installation über eine serielle Verbindung.Eine NFS-Installation vorbereitenInstallationNetzwerkinstallationNFSEine NFS-Installation ist unkompliziert. Kopieren
Sie einfach die Distributionen auf einen NFS-Server
und wählen Sie NFS als Installationsmedium aus.Wenn der NFS-Server nur Verbindungen über
privilegierte Ports (Ports kleiner 1024) annimmt,
setzen Sie vor der Installation die Option
NFS Secure im Menü
Options.Wenn Sie eine schlechte Netzwerkkarte besitzen,
die sehr langsam ist, wählen Sie die Option
NFS Slow.Damit die NFS-Installation funktioniert, muss der
NFS-Server auch Unterverzeichnisse von exportierten
Verzeichnissen zum Einhängen freigeben. Wenn
beispielsweise die Distribution von &os; &rel.current;
unter ziggy:/usr/archive/stuff/FreeBSD
liegt, muss der Rechner ziggy erlauben,
das Verzeichnis
/usr/archive/stuff/FreeBSD
einzuhängen. Es reicht nicht, dass
ziggy erlaubt das Verzeichnis
/usr oder
/usr/archive/stuff
einzuhängen.Unter &os; werden diese Freigaben in der Datei
/etc/exports mit der Option
eingestellt. Die nötigen
Einstellungen können auf einem anderen NFS-Server
unterschiedlich sein. Wenn Sie vom NFS-Server die
Fehlermeldung permission denied
erhalten, dann haben Sie wahrscheinlich die Freigaben
nicht richtig konfiguriert.
diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
index aaab631485..e3052e447d 100644
--- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
@@ -1,3400 +1,3400 @@
Bezugsquellen für FreeBSDCD-ROM und DVD VerlegerFreeBSD-PaketeFreeBSD-Pakete (FreeBSD-CDs, zusätzliche Software und
gedruckte Dokumentation) erhalten Sie von mehreren
Händlern:CompUSA
WWW: Frys Electronics
WWW: FreeBSD-CDs und -DVDsDie FreeBSD-CDs und -DVDs werden von vielen Online-Händlern
angeboten:BSD Mall by Daemon NewsPO Box 161Nauvoo, IL62354USA
Telefon: +1 866 273-6255
Fax: +1 217 453-9956
E-Mail: sales@bsdmall.com
- WWW:
+ WWW: BSD-Systems
E-Mail: info@bsd-systems.co.uk
WWW: FreeBSD Mall, Inc.3623 Sanford StreetConcord, CA94520-1405USA
- Telefon: +1 925 674-0783
+ Telefon: +1 925 240-6652
Fax: +1 925 674-0821
E-Mail: info@freebsdmall.com
WWW: Dr. Hinner EDVSt. Augustinus-Str. 10D-81825MünchenGermany
Telefon: (089) 428 419
WWW: Ikarios22-24 rue Voltaire92000NanterreFrance
WWW: JMC SoftwareIreland
Telefon: 353 1 6291282
WWW: Linux CD MallPrivate Bag MBE N348Auckland 1030New Zealand
Telefon: +64 21 866529
WWW: The Linux EmporiumHilliard House, Lester WayWallingfordOX10 9TAUnited Kingdom
Telefon: +44 1491 837010
Fax: +44 1491 837016
WWW: Linux+ DVD MagazineLewartowskiego 6Warsaw00-190Poland
Telefon: +48 22 860 18 18
E-Mail: editors@lpmagazine.org
WWW: Linux System Labs Australia21 Ray DriveBalwyn NorthVIC - 3104Australia
Telefon: +61 3 9857 5918
Fax: +61 3 9857 8974
WWW: LinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: LieferantenWenn Sie FreeBSD-CD-ROM-Produkte weiterverkaufen möchten,
kontaktieren Sie einen der folgenden Lieferanten:Cylogistics809B Cuesta Dr., #2149Mountain View, CA94040USA
Telefon: +1 650 694-4949
Fax: +1 650 694-4953
E-Mail: sales@cylogistics.com
WWW: Ingram Micro1600 E. St. Andrew PlaceSanta Ana, CA92705-4926USA
Telefon: 1 (800) 456-8000
WWW: Kudzu, LLC7375 Washington Ave. S.Edina, MN55439USA
Telefon: +1 952 947-0822
Fax: +1 952 947-0876
E-Mail: sales@kudzuenterprises.comLinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: Navarre Corp7400 49th Ave SouthNew Hope, MN55428USA
Telefon: +1 763 535-8333
Fax: +1 763 535-0341
WWW: FTP-ServerDie offiziellen Quellen von FreeBSD sind mit anonymous FTP
über ein weltweites Netz von FTP-Spiegeln erhältlich.
Obwohl
über eine gute Anbindung verfügt, sollten Sie einen
Spiegel in Ihrer Nähe verwenden (insbesondere, wenn Sie
selber einen Spiegel einrichten wollen).Die Datenbank
der FreeBSD-Spiegel ist aktueller als die folgende Liste, da
sie im Gegensatz zu einer statischen Liste die Informationen aus
dem DNS erhält.Sie können FreeBSD auch über anonymous FTP von den
folgenden Spiegeln beziehen. Wenn Sie FreeBSD über anonymous
FTP beziehen wollen, wählen Sie bitte einen Spiegel in Ihrer
Nähe. Die unter Haupt-Spiegel aufgeführten
Spiegel stellen normalerweise das komplette FreeBSD-Archiv
(alle momentan erhältlichen Versionen für jede
unterstützte Architektur) zur Verfügung. Wahrscheinlich
geht es aber schneller, wenn Sie einen Spiegel in Ihrer
Nähe benutzen. Die Länder-Spiegel stellen die neusten
Versionen für die beliebtesten Architekturen bereit,
sie stellen aber unter Umständen nicht das komplette
FreeBSD-Archiv bereit. Auf alle Server kann mit
anonymous FTP zugegriffen werden, einige Server bieten
auch andere Zugriffsmethoden an. Die zur Verfügung
stehenden Zugriffsmethoden sind bei jedem Server in Klammern
angegeben.
&chap.mirrors.ftp.inc;
Anonymous CVSEinführungCVSanonymousAnonymous CVS (oder anoncvs) dient zum
Synchronisieren mit entfernten Repositories und steht mit
den CVS Werkzeugen, die im FreeBSD
Basissystem enthalten sind, zur Verfügung. Benutzer von
FreeBSD können damit unter anderem lesende Operationen
auf den Anoncvs Servern des
FreeBSD Projects durchführen,
ohne über besondere Berechtigungen zu verfügen. Um es
zu benutzen, setzen Sie einfach die CVSROOT
Umgebungsvariable auf einen Anoncvs Server
und geben beim Login mit cvs login das
Passwort anoncvs an. Danach können
Sie mit &man.cvs.1; wie auf jedes lokale Repository (allerdings nur
lesend) zugreifen.cvs login speichert Passwörter
zur Authentifizierung an einem CVS Server in der Datei
.cvspass in Ihrem
HOME-Verzeichnis. Wenn diese Datei beim ersten
Benutzen von cvs login nicht existiert,
erhalten Sie vielleicht eine Fehlermeldung. In diesem Fall
legen Sie einfach eine leere .cvspass
Datei an und melden sich erneut an.CVSup und
Anoncvs bieten dieselbe
Funktionalität, die folgenden Kriterien helfen Ihnen zu
entscheiden, welche Methode Sie benutzen sollen.
CVSup
geht wesentlich effizienter mit Netzwerk-Ressourcen um und ist
auch technisch ausgereifter. Allerdings müssen Sie zuerst
einen speziellen Client installieren und konfigurieren, bevor Sie
CVSup benutzen können. Weiterhin
können Sie mit CVSup nur relativ
große Teile der Quellen, die Sammlungen
genannt werden, synchronisieren.Im Gegensatz dazu können Sie mit
Anoncvs jede beliebige Datei oder
indem Sie einfach den CVS Namen des
Moduls angeben, ein beliebiges Programm, wie ls
oder grep, bearbeiten. Natürlich
können Sie mit Anoncvs nur lesend
auf ein CVS Repository zugreifen.
Wenn Sie lokal mit dem FreeBSD-Repository entwickeln wollen, dann
ist CVSup die einzige Wahl.Benutzen von Anonymous CVSSetzen Sie einfach die CVSROOT
Umgebungsvariable, um &man.cvs.1; das
CVS Repository eines FreeBSD
Anoncvs-Servers bekannt zu geben.
Zurzeit stehen folgende Server zur Verfügung:Deutschland:
:pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs
(rsh, pserver, ssh, ssh/2022)Frankreich:
:pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs
(Das Passwort für pserver ist
anoncvs, ssh-Zugriffe
verwenden kein Passwort.)Japan:
:pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und das
Passwort anoncvs.)Österreich:
:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und ein
beliebiges Passwort.)Taiwan:
:pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
(pserver: Benutzen Sie cvs login
und ein beliebiges Passwort. ssh: kein Passwort.)SSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pubUSA:
freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu
SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pubUSA:
anoncvs@anoncvs1.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pubMit CVS können Sie praktisch
jede Version von FreeBSD, die schon einmal existiert hat (oder in
manchen Fällen existieren wird) auschecken. Sie sollten
daher damit vertraut sein, wie Sie mit Tags unter &man.cvs.1;
arbeiten (die Option). Zudem müssen Sie
die Namen der Tags im FreeBSD-Repository kennen.Es gibt zwei verschiedene TagsTags sind
symbolische Namen, die im Repository vergeben werden.
: Tags, die Revisionen bezeichnen und Tags, die
Zweige bezeichnen. Die Ersten sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die
aktuellste Revision. Da ein Tag eines Zweiges nicht an eine
bestimmte Revision gebunden ist, kann sich dessen Bedeutung von
heute auf morgen ändern.In finden Sie eine Liste der
gültigen Tags. Beachten Sie bitte, dass keines der
Tags auf die Ports-Sammlung anwendbar ist, da diese nicht
über Zweige verfügt.Wenn Sie ein Tag eines Zweiges verwenden, erhalten Sie die
aktuellsten Dateien dieses Entwicklungszweiges. Wenn Sie eine
frühere Revision erhalten möchten, können Sie zum
Beispiel einen Zeitpunkt mit der Option
angeben. Weitere Informationen dazu entnehmen Sie bitte
&man.cvs.1;.BeispieleIm Folgenden finden Sie einige Beispiele für den Umgang
mit Anonymous CVS. Sie sollten sich
aber die Manualpage von &man.cvs.1; sorgfältig durchlesen,
bevor Sie anfangen.&man.ls.1; von -CURRENT auschecken&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie ein beliebigesPasswort.
&prompt.user; cvs co lsDen src/-Baum über
SSH auschecken&prompt.user; cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src
The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be establiestablished.
DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts.&man.ls.1; aus dem 6-STABLE-Zweig auschecken&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie ein beliebigesPasswort.
&prompt.user; cvs co -rRELENG_6 lsÄnderungen in &man.ls.1; zwischen 5.3 RELEASE und
5.4 RELEASE (als unified diff)&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie ein beliebigesPasswort.
&prompt.user; cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE lsGültige Modulnamen herausfinden&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie ein beliebigesPasswort.
&prompt.user; cvs co modules
&prompt.user; more modules/modulesWeitere RessourcenDie folgenden Ressourcen sind nützlich, um den Umgang
mit CVS zu lernen:CVS Tutorial von Cal Poly.CVS Home,
die Homepage des CVS-Projekts.CVSweb das
Web Interface zu CVS des FreeBSD
Projekts.CTMCTMMit CTM
Abkürzung für CVS Through eMail
können Sie einen
entfernten Verzeichnisbaum mit einem zentralen Baum
synchronisieren. Es wurde extra zum Synchronisieren der FreeBSD
Quellen entwickelt, obwohl es mit der Zeit vielleicht auch andere
Anwendungen geben wird. Zurzeit existiert leider so gut wie keine
Dokumentation zum Erstellen der Deltas. Wenn Sie Hilfe
benötigen oder CTM für
andere Zwecke einsetzen wollen, wenden Sie sich bitte an
die Mailingliste &a.ctm-users.name;.Warum soll ich CTM benutzen?Mit CTM erhalten Sie eine lokale
Kopie des FreeBSD-Quellbaums, den es in mehreren
Varianten gibt. Sie können das ganze
Repository oder nur einen Zweig spiegeln. Wenn Sie ein aktiver
FreeBSD-Entwickler mit einer schlechten oder gar keiner TCP/IP
Verbindung sind, oder die Änderungen einfach automatisch
zugesandt bekommen wollen, dann ist CTM
das Richtige für Sie. Für die Zweige mit der
meisten Aktivität müssen Sie sich täglich bis zu drei
Deltas beschaffen, Sie sollten allerdings erwägen, die
Deltas automatisch über E-Mail zu beziehen. Die
Größe der Updates wird so klein wie möglich
gehalten. Normalerweise sind sie kleiner als 5 kB, manchmal
sind sie 10-50 kB groß (etwa jedes 10. Update) und ab
und an werden Sie auch einmal ein Update mit 100 kB oder
mehr erhalten.Sie sollten sich über die Vorbehalte gegen die
Verwendung der Quellen anstelle eines offiziellen Releases
bewusst sein. Das trifft besonders auf &os.current; zu, lesen
Sie dazu bitte den Abschnitt
&os.current;.Was brauche ich, um CTM zu
benutzen?Zwei Sachen: Das CTM Programm und
die initialen Deltas, von denen aus Sie auf die
aktuellen Stände kommen.CTM ist schon seit der
Version 2.0 Teil des FreeBSD-Basissystems. Sie finden es in
/usr/src/usr.sbin/ctm, wenn Sie eine Kopie
der Quellen besitzen.Die Deltas, die CTM verarbeitet,
können Sie über FTP oder E-Mail beziehen. Wenn Sie
über einen FTP Zugang zum Internet verfügen, erhalten
Sie die Deltas unter der folgenden URL:Die Deltas werden auch von
CTM Spiegeln
bereitgehalten.Wechseln Sie in das passende Verzeichnisse zum Beispiel
src-cur für &os.current; und laden Sie
sich von dort die Deltas herunter.Sie können die Deltas auch über E-Mail
beziehen.Abonnieren Sie dazu eine der
CTM-Verteilerlisten.
Über &a.ctm-cvs-cur.name; erhalten Sie den kompletten
CVS-Baum, über
&a.ctm-src-cur.name; erhalten Sie &os.current; und über
&a.ctm-src-4.name; erhalten Sie den FreeBSD
4.X-Zweig. Wenn Sie nicht wissen, wie Sie eine der
Mailinglisten abonnieren, folgen Sie einem der Verweise
von oben oder besuchen Sie die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Benutzen Sie ctm_rmail, um die
CTM Updates, die Sie per
E-Mail empfangen, auszupacken und anzuwenden. Wenn Sie diesen
Prozess automatisiert ablaufen lassen möchten,
können Sie dazu einen Eintrag in
/etc/aliases verwenden. Genauere
Informationen finden Sie in der Manualpage von
ctm_rmail.Sie sollten die Mailingliste &a.ctm-announce.name;
abonnieren, egal wie Sie die
CTM-Deltas erhalten.
Ankündigungen, die den Betrieb des
CTM-Systems betreffen, werden
nur auf dieser Liste bekannt gegeben. Klicken Sie
auf den Namen der Liste oder besuchen Sie die Seite
&a.mailman.lists.link;, um diese Liste zu abonnieren.Initialisieren von CTMBevor Sie die CTM Deltas benutzen
können, brauchen Sie einen Startpunkt, auf den die
nachfolgenden Deltas angewendet werden.Sie können natürlich mit einem leeren Verzeichnis
beginnen. In diesem Fall benötigen Sie ein
XEmpty-Delta, mit dem Sie den
CTM-Verzeichnisbaum initialisieren.
Wenn Sie Glück haben, finden Sie ein
XEmpty-Delta, mit dem sie beginnen können,
auf einer der CDs Ihrer Distribution.Da die Verzeichnisbäume mehrere Megabyte groß
sind, sollten Sie nach Möglichkeit etwas schon vorhandenes
benutzen. Wenn Sie eine -RELEASE CD besitzen, können Sie
die Quellen von dieser CD benutzen. Sie ersparen sich damit das
Übertragen großer Datenmengen.Die Deltas, mit denen Sie beginnen können, enthalten ein
X in ihrem Namen, wie in
src-cur.3210XEmpty.gz. Hinter dem
X wird der Startpunkt der Deltas
angegeben, in diesem Fall steht Empty
für ein leeres Verzeichnis. Nach etwa 100 Deltas wird ein
neues XEmpty-Delta erstellt.
Mit ungefähr 75 Megabyte komprimierter Daten sind diese
XEmpty-Deltas übrigens sehr
groß.Nachdem Sie Ihren Startpunkt festgelegt haben, benötigen
Sie alle Deltas mit einer höheren Nummer.Benutzen von CTMUm ein Delta einzuspielen, benutzen Sie das folgende
Kommando:&prompt.root; cd /Pfad/zu/den/Quellen
&prompt.root; ctm -v -v /Pfad/zu/den/Deltas/src-xxx.*CTM kann mit Deltas arbeiten, die
mit gzip komprimiert wurden. Sie brauchen die
Deltas vorher nicht mit gunzip zu
dekomprimieren und sparen damit Plattenplatz.Ihr Quellbaum wird erst dann verändert, wenn
CTM die Deltas sauber verarbeiten
kann. Die Integrität der Deltas und ihre Anwendbarkeit auf
den Quellbaum lassen sich durch die Angabe des Schalters
-c überprüfen,
CTM ändert in diesem Fall Ihren
Quellbaum nicht.CTM verfügt über weitere
Kommandozeilenoptionen, Informationen dazu finden Sie in der
Manualpage oder dem Quellcode.Das war schon alles. Um Ihre Quellen aktuell zu halten,
verwenden Sie CTM jedes Mal, wenn Sie
neue Deltas bekommen.Löschen Sie die Deltas nicht, wenn Sie diese nur schwer
wieder beschaffen können. Behalten Sie sie für den
Fall, das etwas passiert. Auch wenn Sie nur Disketten besitzen,
sollten Sie erwägen, die Deltas mit
fdwrite zu sichern.Umgang mit lokalen ÄnderungenEntwickler wollen mit den Dateien im Quellbaum
experimentieren und diese verändern. In beschränkter
Weise werden lokale Änderungen von
CTM unterstützt. Wenn
CTM die Datei foo
bearbeiten will, überprüft es zuerst ob die Datei
foo.ctm existiert. Wenn diese Datei
existiert, werden Änderungen in ihr anstatt in
foo vorgenommen.Mit diesem Verfahren ist eine leichte Handhabung lokaler
Änderungen möglich. Kopieren Sie die Dateien, die Sie
ändern möchten, in Dateien, die das Suffix
.ctm tragen. Sie können dann
ungestört mit dem Quellcode arbeiten, während
CTM die
.ctm Dateien aktualisiert.Weitere CTM-OptionenWas wird aktualisiert?Eine Liste der Änderungen, die
CTM an Ihrem Quellbaum vornehmen
wird, erhalten Sie, wenn Sie die Option
angeben.Das ist nützlich, wenn Sie Logs über die
Änderungen führen wollen, geänderte Dateien vor-
oder nachbearbeiten wollen, oder einfach ein bisschen
paranoid sind.Sicherungen vor einer Aktualisierung erstellenSie wollen vielleicht die Dateien, die durch eine
CTM Aktualisierung verändert
werden, sichern.Mit weisen Sie
CTM an, alle Dateien, die durch ein
CTM Delta verändert
würden, nach backup-file zu
sichern.Dateien ausschließenManchmal wollen Sie nur bestimmte Teile aktualisieren
oder nur bestimmte Dateien aus einer Folge
von Deltas extrahieren.Sie können die Liste der Dateien, mit denen
CTM arbeitet, einschränken,
indem Sie reguläre Ausdrücke mit den Optionen
und angeben.Wenn Sie eine aktuelle Kopie von
lib/libc/Makefile aus den gesicherten
CTM Deltas erhalten wollen, setzen
Sie das folgende Kommando ab:&prompt.root; cd /wo/Sie/es/auspacken/wollen/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*Die Optionen und
werden in der Reihenfolge angewandt, in der sie auf der
Kommandozeile angegeben wurden. Eine Datei wird nur dann von
CTM verarbeitet, wenn dies nach der
Anwendung der Optionen und
noch erlaubt ist.Pläne für CTMMehrere:Hinzufügen eines Authentifizierungsmechanismus,
damit gefälschte CTM-Deltas
erkannt werden können.Aufräumen der
CTM-Optionen, die mit der Zeit
unübersichtlich und irreführend wurden.VerschiedenesEs gibt Deltas für die Ports-Sammlung, die
aber nicht intensiv genutzt werden.CTM-SpiegelDie CTM-Deltas können Sie mit anonymous FTP von den folgenden
Spiegeln beziehen. Versuchen Sie bitte einen Spiegel in Ihrer
Nähe zu benutzen.Bei Problemen wenden Sie sich bitte an die
Mailingliste &a.ctm-users.name;.Kalifornien, Bay Area, Offizieller ServerSüdafrika, Backup-Server für alte DeltasTaiwan/R.O.C.Wenn die Liste keinen Spiegel in Ihrer Nähe enthält
oder Sie Probleme mit dem ausgewählten Spiegel haben, versuchen
Sie einen Spiegel mit einer Suchmaschine, wie
alltheweb, zu
finden.Benutzen von CVSupEinführungCVSup ist eine Anwendung, die
Verzeichnisbäume von einem entfernten
CVS-Server bereitstellt und
aktualisiert. Die Quellen von FreeBSD werden in einem
CVS-Repository auf einer
Entwicklungsmaschine in Kalifornien gepflegt. Mit
CVSup können sich FreeBSD-Benutzer
den eigenen Quellbaum auf aktuellem Stand halten.Zum Aktualisieren benutzt CVSup die
Pull-Methode, bei der die Aktualisierungen vom Client angefragt
werden. Der Server wartet dabei passiv auf Anfragen von Clients,
das heißt er verschickt nicht unaufgefordert
Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die
Benutzer müssen CVSup entweder
manuell starten oder einen cron Job einrichten, um
regelmäßig Aktualisierungen zu erhalten.CVSup in genau dieser Schreibweise
bezeichnet die Anwendung, die aus dem Client cvsup
und dem Server cvsupd besteht.
cvsup läuft auf den Maschinen der Benutzer,
cvsupd läuft auf jedem der
FreeBSD-Spiegel.Wenn Sie die FreeBSD-Dokumentation und die Mailinglisten lesen,
werden Sie oft auf Sup, dem
Vorgänger von CVSup stoßen.
CVSup wird in gleicher Weise wie
Sup benutzt und verfügt sogar
über Konfigurationsdateien, die kompatibel zu denen von
Sup sind. Da
CVSup schneller und flexibler als
Sup ist, wird
Sup vom FreeBSD Project nicht mehr
benutzt.Mit csup gibt es in inzwischen
auch eine in C geschriebene Neuimplementierung von
CVSup. Der größte
Vorteil dieser neuen Version ist neben einer höheren
Geschwindigkeit der, dass dieses Programm nicht von der
Sprache Modula-3 abhängig ist und Sie daher dieses
Paket nicht mitinstallieren müssen. Ab &os; 6.2
ist csup bereits im Basissystem
enthalten und kann sofort verwendet werden. Verwenden Sie
hingegen eine ältere &os;-Version, können Sie
&man.csup.1; über den Port net/csup installieren. Alternativ
können Sie zur Installation auch ein vorkompiliertes
Paket (Package) verwenden. csup
unterstützt allerdings keinen CVS-Modus. Wollen Sie
komplette Repositories spiegeln, müssen Sie also
weiterhin CVSup einsetzen.
Wollen Sie künftig csup
einsetzen, überspringen Sie in den folgenden
Ausführungen einfach den Abschnitt zur Installation von
CVSup und ersetzen alle Vorkommen
von CVSup durch
csup.Installation von CVSupCVSup können Sie leicht
installieren, wenn Sie das vorkompilierte Paket
net/cvsup aus der
Ports-Sammlung benutzen.
Alternativ können Sie
net/cvsup auch ausgehend von
den Quellen bauen, doch seien Sie gewarnt:
net/cvsup hängt vom
Modula-3 System ab, das viel Zeit und
Platz zum Herunterladen und Bauen braucht.Wenn Sie CVSup auf einer
Maschine ohne &xfree86;
oder &xorg;,
beispielsweise einem Server, benutzen, stellen Sie sicher,
dass Sie den Port ohne das
CVSup-GUI,
net/cvsup-without-gui
verwenden.Wollen Sie csup unter
&os; 6.1 oder älter installieren, können Sie
dazu das vorkompilierte Paket net/csup oder den Port
net/csup (zur Installation
aus den Quellen) verwenden.Konfiguration von CVSupDas Verhalten von CVSup wird mit
einer Konfigurationsdatei gesteuert, die
supfile genannt wird. Beispiele für
Konfigurationsdateien finden Sie in dem Verzeichnis
.Ein supfile enthält die folgenden
Informationen:Welche Dateien Sie
erhalten wollen.Welche Versionen der
Dateien Sie benötigen.Woher Sie die Dateien
beziehen wollen.Wo Sie die erhaltenen
Dateien speichern.Wo Sie die
Status-Dateien aufbewahren wollen.In den folgenden Abschnitten erstellen wir ein typisches
supfile indem wir nach und nach diese Punkte
klären. Zuerst beschreiben wir aber den Aufbau dieser
Konfigurationsdatei.Ein supfile ist eine Textdatei.
Kommentare beginnen mit einem # und gelten bis zum
Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten,
werden ignoriert.Die anderen Zeilen legen die Dateien fest, die ein Benutzer
erhalten will. Der Server organisiert verschiedene Dateien in
einer Sammlung, deren Name auf einer Zeile angegeben
wird. Nach dem Namen der Sammlung können mehrere durch
Leerzeichen getrennte Felder folgen, die die oben angesprochenen
Informationen festlegen. Es gibt zwei Arten von Feldern: Felder,
die Optionen festlegen und Felder mit Parametern.
Optionen bestehen aus einem Schlüsselwort, wie
oder und
stehen alleine. Ein Parameterfeld beginnt mit einem
Schlüsselwort, dem = und ein Parameter,
wie in ,
folgt. Dieses Feld darf keine Leerzeichen enthalten.In einem supfile werden normalerweise
mehrere Sammlungen angefordert. Die erforderlichen Felder
können explizit für jede Sammlung angegeben werden,
dann werden jedoch die Zeilen ziemlich lang. Außerdem ist
dieses Vorgehen sehr unhandlich, da die meisten Felder für
alle Sammlungen gleich sind. CVSup
bietet die Möglichkeit, Vorgaben für die Felder der
Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung
*default beginnen, legen Optionen und Parameter
für nachfolgende Sammlungen im supfile
fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung
überschrieben werden. Durch Hinzufügen weiterer
*default Zeilen können die Vorgaben auch
mitten im supfile überschrieben oder
erweitert werden.Mit diesem Wissen können wir nun ein
supfile erstellen, das den Quellbaum von
FreeBSD-CURRENT anfordert und
aktualisiert.Welche Dateien wollen Sie
empfangen?Dateien werden von CVSup in
Sammlungen organisiert. Die erhältlichen
Sammlungen werden später
beschrieben. Wir wollen den Quellbaum von FreeBSD empfangen,
der in der Sammlung src-all enthalten ist.
Das supfile enthält pro Zeile eine
Sammlung, in diesem Fall also nur eine einzige Zeile:src-allWelche Versionen der Dateien
werden benötigt?Mit CVSup können Sie jede
Version der Quellen bekommen, da der
cvsupd-Server seine Daten direkt aus
dem CVS-Repository bezieht. Sie
können die benötigten Versionen in den
Parameterfeldern tag= und
angeben.Achten Sie darauf, dass Sie das richtige
tag=-Feld angeben. Einige Tags sind nur
für spezielle Sammlungen gültig. Wenn Sie ein
falsches Tag angeben oder sich verschreiben, wird
CVSup Dateien löschen, die
Sie wahrscheinlich gar nicht löschen wollten.
Achten Sie insbesondere bei den
ports-*-Sammlungen darauf,
ausschließlichtag=. zu verwenden.Mit tag= wird ein symbolischer Name aus
dem Repository angegeben. Es gibt zwei verschiedene Tags:
Tags, die Revisionen bezeichnen und Tags, die Zweige
bezeichnen. Die ersteren sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf
die aktuellste Revision. Da ein Tag eines Zweiges nicht an
eine bestimmte Revision gebunden ist, kann sich dessen
Bedeutung von heute auf morgen ändern. zählt für Benutzer
relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein
Tag, wie RELENG_4, angeben, müssen Sie
diesem tag= vorstellen:
tag=RELENG_4. Denken Sie daran, dass
es für die Ports-Sammlung nur tag=.
gibt.Achten Sie darauf, dass Sie den Namen eines Tags
richtig angeben. CVSup kann nicht
zwischen richtigen und falschen Tags unterscheiden. Wenn Sie
sich bei der Angabe eines Tags vertippen, nimmt
CVSup an, Sie hätten ein
gültiges Tag angegeben, dem nur keine Dateien zugeordnet
sind. Die Folge davon ist, dass Ihre vorhandenen Quellen
gelöscht werden.Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht,
erhalten Sie die aktuellsten Revisionen der Dateien auf diesem
Zweig. Wenn Sie eine frühere Revision erhalten
möchten, können Sie diese im
Feld angeben. Einzelheiten dazu finden Sie in der Manualpage
von cvsup.Wir möchten gerne FreeBSD-CURRENT beziehen und
fügen die folgende Zeile am Anfang
der Konfigurationsdatei ein:*default tag=.Eine wichtige Ausnahme ist wenn Sie weder ein
tag=-Feld noch ein date=-Feld
angeben. In diesem Fall erhalten Sie anstelle einer speziellen
Revision die wirklichen RCS-Dateien aus dem CVS-Repository
des Servers. Diese Vorgehensweise wird von Entwicklern
bevorzugt, da sie mit einem eigenen Repository leicht die
Entwicklungsgeschichte und Veränderungen von Dateien
verfolgen können. Dieser Vorteil muss allerdings mit
sehr viel Plattenplatz bezahlt werden.Woher sollen die Dateien
bezogen werden?Im host=-Feld wird angegeben, woher
cvsup die Dateien holen soll. Sie
können hier jeden der CVSup-Spiegel angeben, doch
sollten Sie einen Server in Ihrer Nähe auswählen.
Für dieses Beispiel wollen wir den erfundenen Server
cvsup99.FreeBSD.org
verwenden:*default host=cvsup99.FreeBSD.orgBevor Sie CVSup laufen
lassen, sollten Sie hier einen existierenden Server
einsetzen. Den zu verwendenden Server können Sie auf der
Kommandozeile mit
überschreiben.Wo sollen die Dateien
gespeichert werden?Im prefix=-Feld teilen Sie
cvsup mit, wo die Dateien gespeichert werden
sollen. In diesem Beispiel werden wir die Quelldateien direkt
im Verzeichnisbaum für Quellen
/usr/src ablegen. Das Verzeichnis
src ist schon in der Sammlung, die wir
beziehen enthalten, so dass wir die folgende Zeile
angeben:*default prefix=/usrWo sollen die
Statusinformationen von cvsup gespeichert
werden?cvsup legt in einem Verzeichnis
Statusinformationen ab, die festhalten, welche Versionen schon
empfangen wurden. Wir verwenden das Verzeichnis
/var/db:*default base=/var/dbWenn das Verzeichnis für die Statusinformationen nicht
existiert, sollten Sie es jetzt anlegen, da
cvsup ohne dieses Verzeichnis nicht
startet.Verschiedene Einstellungen:Eine weitere Zeile sollte normalerweise in jedem
supfile sein:*default release=cvs delete use-rel-suffix compressMit release=cvs wird angegeben,
dass der Server das FreeBSD-Haupt-Repository abfragen soll,
was praktisch immer der Fall ist (die Ausnahmen werden in
diesem Text nicht diskutiert).delete erlaubt es
CVSup, Dateien zu löschen.
Diese Option sollten Sie immer angeben, damit
CVSup Ihren Quellbaum auch wirklich
aktuell halten kann. CVSup
löscht nur Dateien für die es auch verantwortlich
ist. Andere Dateien, die sich in einem Baum unter Kontrolle
von CVSup befinden, werden nicht
verändert.Wenn Sie wirklich etwas über das obskure
use-rel-suffix erfahren wollen, lesen Sie
bitte in der Manualpage nach, ansonsten geben Sie es einfach an
und vergessen es.Wenn Sie compress angeben, werden Daten
auf dem Kommunikationskanal komprimiert. Wenn Sie über
eine T1-Leitung oder eine schnellere Netzanbindung
verfügen, brauchen Sie diese Option vielleicht nicht. In
allen anderen Fällen beschleunigt sie aber den
Ablauf.Zusammenfassung:Das vollständige supfile unseres
Beispiels sieht nun so aus:*default tag=.
*default host=cvsup99.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-allDie refuse DateiCVSup benutzt die Pull-Methode, das
heißt wenn sich ein Client mit einem Server verbindet,
erhält er eine Liste der verfügbaren Sammlungen und
wählt aus diesen die herunterzuladenden Dateien aus. In der
Voreinstellung wählt der Client alle Dateien aus, die zu
einer gegebenen Sammlung und zu einem gegebenen Tag passen.
Dieses Verhalten ist aber nicht immer erwünscht, besonders
wenn Sie die doc, ports
oder www Verzeichnisbäume
synchronisieren. Die wenigsten Leute beherrschen vier oder fünf
Sprachen und benötigen Dateien mit speziellen Anpassungen
für eine Sprache. Wenn Sie die Ports-Sammlung
synchronisieren, können Sie anstelle von
ports-all einzelne Ports, wie
ports-astrology oder
ports-biology angeben. Die
doc und www
Verzeichnisbäume verfügen aber nicht über
Sammlungen für spezielle Sprachen. In diesem Fall
müssen Sie eines der vielen eleganten Merkmale von
CVSup benutzen: Die
refuse Datei.Mit einer refuse Datei können Sie
bestimmte Dateien einer Sammlung von der Übertragung
ausschließen. Der Ort der refuse ist
base/sup/refuse,
wobei base in Ihrem
supfile festgelegt wurde.
Wir verwenden das Verzeichnis
/var/db, der Ort der
refuse Datei ist daher
/var/db/sup/refuse.Das Format der refuse Datei ist einfach:
Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie
nicht herunterladen wollen. Wenn Sie zum Beispiel die
Dokumentation nicht in anderen Sprachen als Englisch
lesen wollen, könnte Ihre
refuse-Datei wie folgt aussehen:doc/bn_*
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/it_*
doc/ja_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ru_*
doc/sr_*
doc/tr_*
doc/zh_*Die Aufzählung setzt sich für andere Sprachen fort.
Eine vollständige Liste finden Sie im
FreeBSD
CVS Repository.Die refuse Datei spart Anwendern von
CVSup, die über eine langsame
Internetanbindung verfügen oder deren Internetverbindung
zeitlich abgerechnet wird, wertvolle Zeit, da sie Dateien, die sie
nicht benötigen, nicht mehr herunterladen müssen.
Weitere Informationen zu refuse Dateien und
anderen Eigenschaften von CVSup
entnehmen Sie bitte der Manualpage.Ausführen von CVSupWir können nun eine Aktualisierung mit der folgenden
Kommandozeile starten:&prompt.root; cvsup supfilesupfile gibt
dabei das eben erstelle supfile an. Wenn Sie
X11 benutzen, wird
cvsup ein GUI starten.
Drücken Sie go und schauen Sie
zu.Das Beispiel aktualisiert die Dateien im Verzeichnisbaum
/usr/src. Sie müssen
cvsup als root starten,
damit Sie die nötigen Rechte haben, die Dateien zu
aktualisieren. Sie sind vielleicht ein bisschen nervös
weil Sie das Programm zum ersten Mal anwenden und möchten
zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein
temporäres Verzeichnis an und übergeben es auf der
Kommandozeile von cvsup:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destAktualisierungen werden dann nur in dem angegebenen Verzeichnis
vorgenommen. CVSup untersucht die
Dateien in /usr/src, wird aber keine dieser
Dateien verändern. Die veränderten Dateien finden Sie
stattdessen in /var/tmp/dest/usr/src. Die
Statusdateien von CVSup werden ebenfalls
nicht geändert, sondern in dem angegebenen Verzeichnis
abgelegt. Wenn Sie Leseberechtigung in
/usr/src haben, brauchen Sie das Programm
noch nicht einmal unter root laufen zu
lassen.Wenn Sie X11 nicht benutzen wollen
oder keine GUIs mögen, sollten Sie
cvsup wie folgt aufrufen:&prompt.root; cvsup -g -L 2 supfile verhindert den Start des
GUIs. Wenn Sie kein
X11 laufen haben, passiert das
automatisch, ansonsten müssen Sie diesen Schalter
angeben.Mit gibt CVSup
Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der
Meldungen können Sie von bis
einstellen. In der Voreinstellung
werden nur Fehlermeldungen ausgegeben.Eine Zusammenfassung der Optionen von
CVSup erhalten Sie mit
cvsup -H. Genauere Informationen finden Sie in
der Manualpage von CVSup.Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind,
können Sie CVSup
regelmäßig aus &man.cron.8; ausführen. In diesem
Fall sollten Sie natürlich nicht das GUI
benutzen.CVSup SammlungenDie CVSup Sammlungen sind
hierarchisch organisiert. Es gibt wenige große Sammlungen,
die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine
große Sammlung beziehen, entspricht das dem Beziehen aller
Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden
Aufzählung durch Einrückungen dargestellt.Die am häufigsten benutzen Sammlungen sind
src-all und ports-all. Die
anderen Sammlungen werden von wenigen Leuten zu speziellen Zwecken
benutzt und es kann sein, dass diese nicht auf allen Spiegeln
zur Verfügung stehen.cvs-all release=cvsDas FreeBSD-Haupt-Repository einschließlich der
Kryptographie-Module.distrib release=cvsDateien, die zum Verteilen und Spiegeln von FreeBSD
benötigt werden.doc-all release=cvsQuellen des FreeBSD-Handbuchs und weiterer
Dokumentation. Diese Sammlung enthält nicht die
FreeBSD-Webseite.ports-all release=cvsDie FreeBSD-Ports-Sammlung.Wenn Sie nicht die gesamte Ports-Sammlung
(ports-all) aktualisieren wollen,
sondern nur eine der nachstehend aufgeführten
Teilsammlungen, aktualisieren Sie
immer die Teilsammlung
ports-base. Diese Teilsammlung
enthält das Bausystem der Ports. Immer wenn
ports-base geändert wird,
ist es so gut wie sicher, dass diese Änderung
auch tatsächlich von einem Port benutzt wird.
Der Bau eines Ports, der auf Änderungen
im Bausystem angewiesen wird, wird fehlschlagen,
wenn das Bausystem noch auf einem alten Stand ist.
Aktualisieren Sie vor allen Dingen
ports-base, wenn Sie bei
einem Bau merkwürdige Fehlermeldungen
erhalten und kein aktuelles Bausystem benutzen.Wenn Sie die Datei
ports/INDEX selbst
erzeugen, brauchen Sie unbedingt die
Sammlung ports-all (den
ganzen Ports-Baum). Es ist nicht möglich,
ports/INDEX nur mit
einem Teilbaum zu erstellen. Lesen Sie dazu
bitte die FAQ.ports-accessibility
release=cvsWerkzeuge für behinderte Benutzer.ports-arabic
release=cvsArabische Sprachunterstützung.ports-archivers
release=cvsWerkzeuge zum Archivieren.ports-astro
release=cvsAstronomie-Programme.ports-audio
release=cvsAudio-Programme.ports-base
release=cvsDas Bausystem der Ports-Sammlung.
Dazu gehören verschiedene Dateien in den
Unterverzeichnissen Mk/
und Tools/ von
/usr/ports.Aktualisieren Sie diese Teilsammlung
jedes Mal, wenn Sie
einen Teil der Ports-Sammlung aktualisieren.
Lesen Sie dazu auch den obigen
Hinweis zur Ports-Sammlung.ports-benchmarks
release=cvsBenchmarks.ports-biology
release=cvsBiologie.ports-cad
release=cvsComputer Aided Design Werkzeuge.ports-chinese
release=cvsChinesische Sprachunterstützung.ports-comms
release=cvsProgramme zur Datenkommunikation.ports-converters
release=cvsZeichensatz Konvertierer.ports-databases
release=cvsDatenbanken.ports-deskutils
release=cvsSachen, die sich vor dem Computer-Zeitalter
auf dem Schreibtisch befanden.ports-devel
release=cvsWerkzeuge für Entwickler.ports-dns
release=cvsSoftware für DNS.ports-editors
release=cvsEditoren.ports-emulators
release=cvsProgramme, die andere Betriebssysteme
emulieren.ports-finance
release=cvsFinanz-Anwendungen.ports-ftp
release=cvsWerkzeuge für FTP Clients und Server.ports-games
release=cvsSpiele.ports-german
release=cvsDeutsche Sprachunterstützung.ports-graphics
release=cvsGraphik-Programme.ports-hebrew
release=cvsHebräische Sprachunterstützung.ports-hungarian
release=cvsUngarische Sprachunterstützung.ports-irc
release=cvsInternet Relay Chat Werkzeuge.ports-japanese
release=cvsJapanische Sprachunterstützung.ports-java
release=cvs&java; Werkzeuge.ports-korean
release=cvsKoreanische Sprachunterstützung.ports-lang
release=cvsProgrammiersprachen.ports-mail
release=cvsE-Mail Programme.ports-math
release=cvsProgramme zur numerischen Mathematik.ports-mbone
release=cvsMBone Anwendungen.ports-misc
release=cvsVerschiedene Werkzeuge.ports-multimedia
release=cvsMultimedia-Anwendungen.ports-net
release=cvsNetzwerk-Programme.ports-net-im
release=cvsDiverse Instant-Messenger.ports-net-mgmt
release=cvsSoftware zum Verwalten von Netzwerken.ports-net-p2p
release=cvsSoftware für die Nutzung von
Peer-to-Peer-Netzwerken.ports-news
release=cvsUSENET News Werkzeuge.ports-palm
release=cvsProgramme für den
Palm.ports-polish
release=cvsPolnische Sprachunterstützung.ports-ports-mgmt
release=cvsWerkzeuge zum Management von Ports und
Paketen.ports-portuguese
release=cvsPortugiesische Sprachunterstützung.ports-print
release=cvsDruckprogramme.ports-russian
release=cvsRussische Sprachunterstützung.ports-science
release=cvsWissenschaft.ports-security
release=cvsWerkzeuge zum Thema Sicherheit.ports-shells
release=cvsKommandozeilen-Shells.ports-sysutils
release=cvsSystem-Werkzeuge.ports-textproc
release=cvsProgramme zur Textverarbeitung (ohne Desktop
Publishing).ports-ukrainian
release=cvsUkrainische Sprachunterstützung.ports-vietnamese
release=cvsVietnamesische
Sprachunterstützung.ports-www
release=cvsSoftware rund um das World Wide Web.ports-x11
release=cvsX-Window Programme.ports-x11-clocks
release=cvsX11-Uhren.ports-x11-drivers
release=cvsX11-Treiber.ports-x11-fm
release=cvsX11-Dateiverwalter.ports-x11-fonts
release=cvsX11-Zeichensätze und Werkzeuge dazu.ports-x11-toolkits
release=cvsX11-Werkzeuge.ports-x11-servers
release=cvsX11-Server.ports-x11-themes
release=cvsX11-Themes.ports-x11-wm
release=cvsX11-Fensterverwalter.projects-all release=cvsQuelltexte der verschiedenen FreeBSD-Projekte.src-all release=cvsDie FreeBSD-Quellen einschließlich der
Kryptographie-Module.src-base
release=cvsVerschiedene Dateien unter
/usr/src.src-bin
release=cvsBenutzer-Werkzeuge die im Einzelbenutzermodus
gebraucht werden
(/usr/src/bin).src-cddl
release=cvsWerkzeuge und Bibliotheken, die der
CDDL-Lizenz unterliegen
(/usr/src/cddl).src-contrib
release=cvsWerkzeuge und Bibliotheken, die nicht aus dem
FreeBSD Project stammen und wenig verändert
übernommen werden.
(/usr/src/contrib).src-crypto release=cvsKryptographische Werkzeuge und Bibliotheken,
die nicht aus dem FreeBSD Project stammen und
wenig verändert übernommen werden.
(/usr/src/crypto).src-eBones release=cvsKerberos und DES
(/usr/src/eBones). Wird
in aktuellen Releases von FreeBSD nicht
benutzt.src-etc
release=cvsKonfigurationsdateien des Systems
(/usr/src/etc).src-games
release=cvsSpiele
(/usr/src/games).src-gnu
release=cvsWerkzeuge, die unter der GNU Public License
stehen (/usr/src/gnu).src-include
release=cvsHeader Dateien
(/usr/src/include).src-kerberos5
release=cvsKerberos5
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV
(/usr/src/kerberosIV).src-lib
release=cvsBibliotheken
(/usr/src/lib).src-libexec
release=cvsSystemprogramme, die von anderen Programmen
ausgeführt werden
(/usr/src/libexec).src-release
release=cvsDateien, die zum Erstellen eines FreeBSD
Releases notwendig sind
(/usr/src/release).src-rescue
release=cvsStatisch gelinkte Programme zur
Wiederherstellung eines defekten Systems.
Lesen Sie dazu auch die Manualpage
&man.rescue.8;
(/usr/src/rescue).src-sbin release=cvsWerkzeuge für den Einzelbenutzermodus
(/usr/src/sbin).src-secure
release=cvsKryptographische Bibliotheken und Befehle
(/usr/src/secure).src-share
release=cvsDateien, die von mehreren Systemen
gemeinsam benutzt werden können
(/usr/src/share).src-sys
release=cvsDer Kernel
(/usr/src/sys).src-sys-crypto
release=cvsKryptographie Quellen des Kernels
(/usr/src/sys/crypto).src-tools
release=cvsVerschiedene Werkzeuge zur Pflege von FreeBSD
(/usr/src/tools).src-usrbin
release=cvsBenutzer-Werkzeuge
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem-Werkzeuge
(/usr/src/usr.sbin).www release=cvsDie Quellen der FreeBSD-WWW-Seite.distrib release=selfDie Konfigurationsdateien des
CVSup Servers. Diese werden von
den CVSup benutzt.gnats release=currentDie GNATS Datenbank, in der Problemberichte verwaltet
werden.mail-archive release=currentDas Archiv der FreeBSD-Mailinglisten.www release=currentDie formatierten Dateien der FreeBSD-WWW-Seite (nicht die
Quellen). Diese werden von den WWW-Spiegeln benutzt.Weiterführende InformationenDie CVSup FAQ und weitere
Informationen über CVSup finden Sie
auf The CVSup Home Page.FreeBSD spezifische Diskussionen über
CVSup finden auf der Mailingliste
&a.hackers; statt. Dort und auf der Liste &a.announce; werden neue
Versionen von CVSup
angekündigt.Bei Fragen und Problemberichten zu
CVSup lesen Sie bitte die
CVSup FAQ.CVSup-ServerDie folgende Aufzählung enthält
CVSup Server für FreeBSD:
&chap.mirrors.cvsup.inc;
Portsnap einsetzenEinführungBei Portsnap handelt es sich um
ein System für die sichere Distribution der
&os;-Ports-Sammlung. Dazu wird in der Regel stündlich
ein Snapshot des Ports-Baumes erzeugt, der
anschließend komprimiert und kryptografisch signiert
wird. Die dabei erzeugten Dateien werden danach über HTTP
verteilt.Analog zu CVSup verwendet auch
auch Portsnap das
Pull-Prinzip, um die Ports-Sammlung zu
aktualisieren: Der komprimierte und signierte Ports-Baum
wird auf einem Webserver abgelegt, der danach passiv auf
Client-Anforderungen wartet. Ein Anwender muss daher
&man.portsnap.8; manuell starten, um seine
Ports-Sammlung zu aktualisieren. Eine Alternative ist das
Erstellen eines &man.cron.8; -Jobs, der den
Ports-Baum regelmäßig automatisch aktualisiert.Beachten Sie, dass Portsnapnicht mit der echten
Ports-Sammlung unter /usr/ports/, sondern
mit einer komprimierten Kopie des Ports-Baumes arbeitet, die
in der Voreinstellung unter
/var/db/portsnap/ angelegt wird. Diese
komprimierte Version wird danach dazu verwendet, den
tatsächlichen Ports-Baum zu aktualisieren.Haben Sie Portsnap über
die &os;-Ports-Sammlung installiert, wird der komprimierte
Ports-Baum statt unter /var/db/portsnap/
unter /usr/local/portsnap/ angelegt.InstallationSeit &os; 6.0 ist Portsnap
im &os;-Basissystem enthalten. Verwenden Sie eine ältere
&os;-Version, können Sie zur Installation den Port
ports-mgmt/portsnap
verwenden.portsnap konfigurierenportsnap kann über die
Datei /etc/portsnap.conf konfiguriert
werden. In der Regel kann allerdings die
Standardkonfiguration unverändert übernommen werden.
Wollen Sie die Datei dennoch anpassen, sollten Sie zuvor
&man.portsnap.conf.5; lesen.Wurde Portsnap über
die &os;-Ports-Sammlung installiert, so wird statt
/etc/portsnap.conf/usr/local/etc/portsnap.conf als
Konfigurationsdatei verwendet. Diese Datei wird
während der Installation nicht angelegt, allerdings
wird eine Beispielkonfigurationsdatei mitgeliefert, die
Sie in dieses Verzeichnis kopieren können:&prompt.root; cd /usr/local/etc && cp portsnap.conf.sample portsnap.confDer erste Aufruf von portsnapWenn Sie &man.portsnap.8; das erste
Mal aufrufen, müssen Sie einen komprimierten Snapshot
des kompletten Ports-Baumes nach
/var/db/portsnap/ herunterladen (oder
nach /usr/local/portsnap/ Sie
Portsnap über die
Ports-Sammlung installiert haben). Die ungefähre
Größe des komprimierten Ports-Baumes beträgt
derzeit (Anfang 2006) etwa 41 MB.&prompt.root; portsnap fetchNachdem der komprimierte Snapshot heruntergeladen wurde,
kann eine Live-Version des Ports-Baumes nach
/usr/ports/ extrahiert werden. Dieser
Schritt ist selbst dann nötig, wenn sich bereits ein
Ports-Baum in diesem Verzeichnis befindet (der beispielsweise
von CVSup angelegt wurde), weil
portsnap einen Ausgangszustand
des Ports-Baumes benötigt, um festzustellen, welche Teile
des Baums aktualisiert werden müssen:&prompt.root; portsnap extractBei einer &os;-Standardinstallation wird das Verzeichnis
/usr/ports nicht
angelegt. Verwenden Sie &os; 6.0-RELEASE, sollten Sie
dies vor der ersten Ausführung von
portsnap nachholen. Verwenden Sie hingegen
eine aktuellere &os;-Version oder eine aktuellere Version
von Portsnap, wird dies
beim ersten Aufruf von portsnap automatisch
erledigt.Den Ports-Baum aktualisierenNachdem der originale komprimierte Snapshot des Ports-Baumes
heruntergeladen und nach /usr/ports/
extrahiert wurde, können Sie den Ports-Baum aktualisieren.
Dazu sind zwei Schritte nötig: Mit
fetch laden Sie Aktualisierungen herunter,
mit update aktualisieren Sie die
Live-Version des Ports-Baumes. Beide Parameter können
gleichzeitig an portsnap
übergeben werden:&prompt.root; portsnap fetch updateEinige ältere
portsnap-Versionen unterstützen
diese Syntax nicht. In diesem Fall gehen Sie wie folgt
vor:&prompt.root; portsnap fetch
&prompt.root; portsnap updatePortsnap als cron-Job startenUm eine Überlastung der
Portsnap-Server zu vermeiden,
kann portsnap fetch nicht als
normaler &man.cron.8;-Job ausgeführt werden.
Als Alternative gibt es den Befehl
portsnap cron, der eine zufällige
Zeitspanne (bis zu 3600 Sekunden) wartet, bevor Aktualisierungen
heruntergeladen werden.portsnap update sollte ebenfalls
nicht als cron-Job ausgeführt werden,
da es zu massiven Problemen kann, wenn parallel zur
Aktualisierung ein Port gebaut oder installiert wird. Die
Aktualisierung des Portsindex stellt hingegen kein Problem
dar. Um die INDEX-Datei zu aktualisieren,
übergeben Sie zusätzlich die Option
an portsnap. (Wenn Sie
portsnap -I update als
cron-Job definiert haben, müssen Sie
portsnap update ohne die Option
aufrufen, um den Rest des Ports-Baumes
zu aktualisieren.)Wenn Sie die folgende Zeile in
/etc/crontab aufnehmen, aktualisiert
portsnap den komprimierten
Snapshot sowie die INDEX-Dateien unter
/usr/ports/ und verschickt eine
E-Mail, wenn Ihre installierten Ports veraltet sind:0 3 * * * root portsnap -I cron update && pkg_version -vIL=Ist Ihre Systemuhr nicht auf Ihre lokale Zeitzone
eingestellt, ersetzen Sie bitte 3
durch eine beliebige Zahl zwischen 0 und 23, damit die
Last der Portsnap-Server
gleichmäßiger verteilt wird.Einige ältere
portsnap-Versionen unterstützen
die Angabe von mehreren Befehlen (etwa
cron update) für
einen einzigen portsnap-Aufruf nicht. Ist
dies bei Ihnen der Fall, ersetzen Sie bitte
portsnap -I cron update durch
portsnap cron && portsnap -I update.CVS-TagsWenn Sie Quellen mit CVS oder
CVSup erhalten oder aktualisieren wollen,
müssen Sie ein Tag angeben. Ein Tag kann einen bestimmten
&os;-Zweig oder einen bestimmten Zeitpunkt
(Release-Tag) bestimmen.Tags für ZweigeMit Ausnahme von HEAD (das immer
ein gültiges Tag ist), können die folgenden
Tags nur im src/-Quellbaum verwendet
werden. Die Quellbäume ports/,
doc/ und www/
sind nicht verzweigt.HEADSymbolischer Name für den Hauptzweig, auch
&os.current; genannt. Dies ist die Vorgabe, wenn keine
Revision angegeben wird.In CVSup wird dieses Tag mit
einem . (Punkt) bezeichnet.In CVS ist das die Vorgabe,
wenn Sie kein Tag oder eine Revision angeben. Außer
Sie wollen einen -STABLE Rechner auf -CURRENT aktualisieren,
ist es nicht ratsam, die -CURRENT
Quellen auf einem -STABLE Rechner einzuspielen.RELENG_6Der Entwicklungszweig für FreeBSD-6.X, auch als
FreeBSD 6-STABLE bekannt.RELENG_6_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 6.1
durchgeführt werden.RELENG_6_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 6.1
durchgeführt werden.RELENG_6_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 6.0
durchgeführt werden.RELENG_5Der &os; 5.X Entwicklungszweig, der
auch &os; 5-STABLE genannt wird.RELENG_5_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.5
durchgeführt werden.RELENG_5_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.4
durchgeführt werden.RELENG_5_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.3
durchgeführt werden.RELENG_5_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.2 und
&os; 5.2.1 durchgeführt werden.RELENG_5_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.1 durchgeführt
werden.RELENG_5_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.0 durchgeführt
werden.RELENG_4Der &os; 4.X Entwicklungszweig,
der auch &os; 4-STABLE genannt wird.RELENG_4_11Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.11 durchgeführt
werden.RELENG_4_10Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.10 durchgeführt
werden.RELENG_4_9Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.9 durchgeführt
werden.RELENG_4_8Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.8 durchgeführt
werden.RELENG_4_7Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.7 durchgeführt
werden.RELENG_4_6Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.6 und
FreeBSD 4.6.2 durchgeführt werden.RELENG_4_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.5 durchgeführt
werden.RELENG_4_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.4 durchgeführt
werden.RELENG_4_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.3 durchgeführt
werden.RELENG_3Der FreeBSD-3.X Entwicklungszweig, der auch 3.X-STABLE
genannt wird.RELENG_2_2Der FreeBSD-2.2.X Entwicklungszweig, der auch 2.2-STABLE
genannt wird.Release-TagsDiese Tags geben den Zeitpunkt an, an dem eine bestimme
&os;-Version veröffentlicht wurde. Das Erstellen einer
Release ist in den Dokumenten
Release Engineering
Information und
Release
Process beschrieben. Der
src-Baum benutzt
Tags, deren Namen mit RELENG_ anfangen.
Die Bäume ports
und doc benutzen
Tags, deren Namen mit RELEASE anfangen.
Im Baum www werden
keine Release-Tags verwendet.RELENG_6_2_0_RELEASEFreeBSD 6.2RELENG_6_1_0_RELEASEFreeBSD 6.1RELENG_6_0_0_RELEASEFreeBSD 6.0RELENG_5_5_0_RELEASEFreeBSD 5.5RELENG_5_4_0_RELEASEFreeBSD 5.4RELENG_4_11_0_RELEASEFreeBSD 4.11RELENG_5_3_0_RELEASEFreeBSD 5.3RELENG_4_10_0_RELEASEFreeBSD 4.10RELENG_5_2_1_RELEASEFreeBSD 5.2.1RELENG_5_2_0_RELEASEFreeBSD 5.2RELENG_4_9_0_RELEASEFreeBSD 4.9RELENG_5_1_0_RELEASEFreeBSD 5.1RELENG_4_8_0_RELEASEFreeBSD 4.8RELENG_5_0_0_RELEASEFreeBSD 5.0RELENG_4_7_0_RELEASEFreeBSD 4.7RELENG_4_6_2_RELEASEFreeBSD 4.6.2RELENG_4_6_1_RELEASEFreeBSD 4.6.1RELENG_4_6_0_RELEASEFreeBSD 4.6RELENG_4_5_0_RELEASEFreeBSD 4.5RELENG_4_4_0_RELEASEFreeBSD 4.4RELENG_4_3_0_RELEASEFreeBSD 4.3RELENG_4_2_0_RELEASEFreeBSD 4.2RELENG_4_1_1_RELEASEFreeBSD 4.1.1RELENG_4_1_0_RELEASEFreeBSD 4.1RELENG_4_0_0_RELEASEFreeBSD 4.0RELENG_3_5_0_RELEASEFreeBSD-3.5RELENG_3_4_0_RELEASEFreeBSD-3.4RELENG_3_3_0_RELEASEFreeBSD-3.3RELENG_3_2_0_RELEASEFreeBSD-3.2RELENG_3_1_0_RELEASEFreeBSD-3.1RELENG_3_0_0_RELEASEFreeBSD-3.0RELENG_2_2_8_RELEASEFreeBSD-2.2.8RELENG_2_2_7_RELEASEFreeBSD-2.2.7RELENG_2_2_6_RELEASEFreeBSD-2.2.6RELENG_2_2_5_RELEASEFreeBSD-2.2.5RELENG_2_2_2_RELEASEFreeBSD-2.2.2RELENG_2_2_1_RELEASEFreeBSD-2.2.1RELENG_2_2_0_RELEASEFreeBSD-2.2.0AFS-ServerDie folgende Aufzählung enthält AFS Server für
FreeBSD:SchwedenDie Dateien sind unter dem Pfad
/afs/stacken.kth.se/ftp/pub/FreeBSD/
erreichbar.stacken.kth.se # Stacken Computer Club, KTH, Sweden
130.237.234.43 #hot.stacken.kth.se
130.237.237.230 #fishburger.stacken.kth.se
130.237.234.3 #milko.stacken.kth.seBetreuer ftp@stacken.kth.sersync-Serverrsync wird ähnlich wie
&man.rcp.1; verwendet, besitzt aber mehr Optionen und
verwendet das rsync remote-update Protokoll, das nur
geänderte Dateien überträgt und damit viel schneller
als ein normaler Kopiervorgang ist. rsync
ist sehr nützlich, wenn Sie einen FreeBSD-FTP-Spiegel oder einen
CVS-Spiegel betreiben. Das Programm ist für viele
Betriebssysteme erhältlich, mit FreeBSD können Sie den
Port net/rsync oder das fertige
Paket benutzen. Die folgenden Server stellen FreeBSD über das
rsync Protokoll zur Verfügung:Deutschlandrsync://grappa.unix-ag.uni-kl.de/Verfügbare Sammlungen:freebsd-cvs: Das vollständige
CVS-Repository von &os;.Neben anderen Repositories spiegelt diese Maschine auch die
Repositories der NetBSD- und OpenBSD-Projekte.Großbritannienrsync://rsync.mirror.ac.uk/Verfügbare Sammlungen:ftp.FreeBSD.org: Kompletter Spiegel des
FreeBSD-FTP-Servers.Niederlandersync://ftp.nl.FreeBSD.org/Verfügbare Sammlungen:vol/4/freebsd-core: Kompletter Spiegel des
FreeBSD-FTP-Servers.Taiwanrsync://ftp.tw.FreeBSD.org/rsync://ftp2.tw.FreeBSD.org/rsync://ftp6.tw.FreeBSD.org/Verfügbare Sammlungen:FreeBSD: Kompletter Spiegel des
FreeBSD-FTP-Servers.Tschechische Republikrsync://ftp.cz.FreeBSD.org/Verfügbare Sammlungen:ftp: Unvollständiger Spiegel des
FreeBSD-FTP-Servers.FreeBSD: Vollständiger Spiegel des
FreeBSD-FTP-Servers.USArsync://ftp-master.FreeBSD.org/Dieser Server darf nur von primären Spiegeln benutzt
werden.Verfügbare Sammlungen:FreeBSD: Das Hauptarchiv des FreeBSD
FTP Servers.acl: Die primäre ACL-Liste.rsync://ftp13.FreeBSD.org/Verfügbare Sammlungen:FreeBSD: Kompletter Spiegel des
FreeBSD-FTP-Servers.
diff --git a/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml b/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
index 7e61784cb2..721fe2cd95 100644
--- a/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/network-servers/chapter.sgml
@@ -1,5308 +1,5313 @@
MurrayStokelyÜberarbeitet von JohannKoisÜbersetzt von NetzwerkserverÜbersichtDieses Kapitel beschreibt einige der häufiger verwendeten
Netzwerkdienste auf &unix;-Systemen. Beschrieben werden
Installation und Konfiguration sowie Test und Wartung
verschiedener Netzwerkdienste. Zusätzlich sind im ganzen
Kapitel Beispielkonfigurationsdateien vorhanden, von denen Sie
sicherlich profitieren werden.Nachdem Sie dieses Kapitel gelesen haben, werden SieDen inetd-Daemon konfigurieren
können.Wissen, wie man ein Netzwerkdateisystem einrichtet.Einen Network Information
Server einrichten können, um damit
Benutzerkonten im Netzwerk zu verteilen.Rechner durch Nutzung von DHCP automatisch für ein
Netzwerk konfigurieren können.In der Lage sein, einen Domain Name
Server einzurichten.Den Apache HTTP-Server
konfigurieren können.Wissen, wie man einen File Transfer
Protocol (FTP)-Server einrichtet.Mit Samba einen Datei- und
Druckserver für &windows;-Clients konfigurieren
können.Unter Nutzung des NTP-Protokolls Datum und Uhrzeit
synchronisieren sowie einen Zeitserver installieren
können.Bevor Sie dieses Kapitel lesen, sollten SieDie Grundlagen der /etc/rc-Skripte
verstanden haben.Mit der grundlegenden Netzwerkterminologie vertraut sein.Wissen, wie man zusätzliche Softwarepakete von
Drittherstellern installiert ().ChernLeeBeigetragen von Aktualisiert für &os; 6.1-RELEASE vom &os; Documentation ProjectDer inetdSuper-ServerÜberblick&man.inetd.8; wird manchmal auch als Internet
Super-Server bezeichnet, weil er Verbindungen für
mehrere Dienste verwaltet. Wenn eine Verbindung eintrifft,
bestimmt inetd, welches Programm
für die eingetroffene Verbindung zuständig ist,
aktiviert den entsprechenden Prozess und reicht den Socket an
ihn weiter (der Socket dient dabei als Standardein- und -ausgabe
sowie zur Fehlerbehandlung). Der Einsatz des
inetd-Daemons an Stelle
viele einzelner Daemonen kann auf nicht komplett ausgelasteten
Servern zu einer Verringerung der Systemlast führen.inetd wird vor allem dazu
verwendet, andere Daemonen zu aktivieren, einige Protokolle
werden aber auch direkt verwaltet. Dazu gehören
chargen,
auth, sowie
daytime.Dieser Abschnitt beschreibt die Konfiguration von
inetd durch Kommandozeilenoptionen
sowie die Konfigurationsdatei
/etc/inetd.conf.Einstellungeninetd wird durch das
&man.rc.8;-System initialisiert. Die Option
inetd_enable ist in der Voreinstellung zwar
auf NO gesetzt, sie kann aber in
Abhängigkeit von der vom Benutzer bei der Installation
gewählten Konfiguration von
sysinstall aktiviert werden.
Die Verwendung voninetd_enable="YES"oderinetd_enable="NO"in /etc/rc.conf deaktiviert oder startet
inetd beim Systemstart. Über
den Befehl&prompt.root; /etc/rc.d/inetd rcvarkönnen Sie die aktuelle Konfiguration
abfragen.Weitere Optionen können über die Option
inetd_flags an
inetd übergeben werden.KommandozeilenoptionenWie die meisten anderen Server-Daemonen lässt
sich auch inetd über
verschiedene Optionen steuern. Die vollständige Syntax
für inetd lautet:inetdDie verschiedenen Optionen können über die Option
inetd_flags der Datei
/etc/rc.conf an
inetd übergeben werden. In
der Voreinstellung hat diese Option den Wert
-wW -C 60. Durch das Setzen dieser Werte
wird das TCP-Wrapping für alle
inetd-Dienste aktiviert.
Zusätzlich kann eine einzelne IP-Adresse jeden Dienst
nur maximal 60 Mal pro Minute anfordern.Für Einsteiger ist es erfreulich, dass diese Parameter
in der Regel nicht angepasst werden müssen. Da diese
Parameter aber dennoch von Interesse sein können
(beispielsweise, wenn Sie eine enorme Anzahl von
Verbindungsanfragen erhalten), werden einige dieser
einschränkenden Parameter im Folgenden näher
erläutert. Eine vollständige Auflistung aller
Optionen finden Sie hingegen in &man.inetd.8;.-c maximumLegt die maximale Anzahl von parallen Aufrufen eines
Dienstes fest; in der Voreinstellung gibt es keine
Einschränkung. Diese Einstellung kann für jeden
Dienst durch Setzen des
-Parameters festgelegt werden.-C rateLegt fest, wie oft ein Dienst von einer einzelnen
IP-Adresse in einer Minute aufgerufen werden kann; in der
Voreinstellung gibt es keine Einschränkung. Dieser
Wert kann für jeden Dienst durch Setzen des
Parameters
festgelegt werden.-R rateLegt fest, wie oft ein Dienst in der Minute aktiviert
werden kann; in der Voreinstellung sind dies 256
Aktivierungen pro Minute. Ein Wert von 0 erlaubt
unbegrenzt viele Aktivierungen.-s maximumLegt fest, wie oft ein Dienst in der Minute von einer
einzelnen IP-Adresse aus aktiviert werden kann; in der
Voreinstellung gibt es hier keine Beschränkung. Diese
Einstellung kann für jeden Dienst durch die Angabe
angepasst werden.inetd.confDie Konfiguration von inetd
erfolgt über die Datei
/etc/inetd.conf.Wenn /etc/inetd.conf geändert
wird, kann inetd veranlasst werden,
seine Konfigurationsdatei neu einzulesen.Die inetd-Konfiguration neu
einlesen&prompt.root; /etc/rc.d/inetd reloadJede Zeile der Konfigurationsdatei beschreibt jeweils einen
Daemon. Kommentare beginnen mit einem #. Ein
Eintrag der Datei /etc/inetd.conf hat
folgenden Aufbau:service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
user[:group][/login-class]
server-program
server-program-argumentsEin Eintrag für den IPv4 verwendenden
&man.ftpd.8;-Daemon könnte so aussehen:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lservice-nameDer Dienstname eines bestimmten Daemons. Er muss
einem in /etc/services aufgelisteten
Dienst entsprechen. In dieser Datei wird festgelegt,
welchen Port inetd abhören
muss. Wenn ein neuer Dienst erzeugt wird, muss er zuerst
in die Datei /etc/services
eingetragen werden.socket-typeEntweder stream,
dgram, raw, oder
seqpacket. stream
muss für verbindungsorientierte TCP-Daemonen
verwendet werden, während dgram
das UDP-Protokoll verwaltet.protocolEines der folgenden:ProtokollBedeutungtcp, tcp4TCP (IPv4)udp, udp4UDP (IPv4)tcp6TCP (IPv6)udp6UDP (IPv6)tcp46TCP sowohl unter IPv4 als auch unter IPv6udp46UDP sowohl unter IPv4 als auch unter IPv6{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] gibt an, ob der von
inetd aktivierte Daemon seinen
eigenen Socket verwalten kann oder nicht.
-Sockets müssen die Option
verwenden, während Daemonen mit
Stream-Sockets, die normalerweise auch aus mehreren
Threads bestehen, die Option
verwenden sollten. Die Option
gibt in der Regel mehrere Sockets an einen einzelnen
Daemon weiter, während
für jeden neuen Socket einen Childdaemon erzeugt.Die maximale Anzahl an Child-Daemonen, die
inetd erzeugen kann, wird durch
die Option festgelegt. Wenn
ein bestimmter Daemon 10 Instanzen benötigt, sollte
der Wert /10 hinter die Option
gesetzt werden. Geben Sie
hingegen den Wert /0 an, gibt es
keine Beschränkung.Zusätzlich zu kann
die maximale Anzahl von Verbindungen eines Rechners mit
einem bestimmten Daemon durch zwei weitere Optionen
beschränkt werden. Die Option
legt die maximale Anzahl von Verbindungsversuchen fest,
die von einer bestimmten IP-Adresse aus unternommen werden
können. Ein Wert von zehn würde die maximale
Anzahl von Verbindungsversuchen einer IP-Adresse mit einem
bestimmten Dienst auf zehn Versuche in der Minute
beschränken. Durch die Angabe der Option
können Sie hingegen
festlegen, wieviele Child-Daemonen von einer bestimmten
IP-Adresse aus gestartet werden können. Durch diese
Optionen lassen sich ein absichtlicher oder unabsichtlicher
Ressourcenverbrauch sowie die Auswirkungen eines
Denial of Service (DoS)-Angriffs auf
einen Rechner begrenzen.Sie müssen hier entweder
oder angeben. Die Angabe von
,
und
ist hingegen
optional.Ein multithread-Daemon vom Streamtyp ohne die Optionen
,
oder
sieht so aus:
nowaitDer gleiche Daemon mit einer maximal möglichen
Anzahl von 10 parallelen Daemonen würde so aussehen:
nowait/10Wird zusätzlich die Anzahl der möglichen
Verbindungen pro Minute für jede IP-Adresse auf
20 sowie die mögliche Gesamtzahl von Childdaemonen
auf 10 begrenzt, so sieht der Eintrag so aus:
nowait/10/20All diese Optionen werden vom
&man.fingerd.8;-Daemon bereits in der Voreinstellung
verwendet:finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -sWill man die maximale Anzahl von Child-Daemonen auf
100 beschränken, wobei von jeder IP-Adresse aus
maximal 5 Child-Daemonen gestartet werden dürfen,
verwendet man den folgenden Eintrag:
nowait/100/0/5.userDer Benutzername, unter dem der jeweilige Daemon
laufen soll. Meistens laufen Daemonen als User
root. Aus Sicherheitsgründen
laufen einige Server aber auch als User
daemon, oder als am wenigsten
privilegierter User nobody.server-programDer vollständige Pfad des Daemons, der eine
Verbindung entgegennimmt. Wird der Daemon von
inetd intern bereitgestellt,
sollte die Option verwendet
werden.server-program-argumentsDieser Eintrag legt (gemeinsam mit
und beginnend mit
argv[0]), die Argumente fest, die bei
der Aktivierung an den Daemon übergeben werden.
Wenn die Anweisung auf der Kommandozeile also
mydaemon -d lautet, wäre
mydaemon -d auch der Wert der Option
. Wenn es sich
beim Daemon um einen internen Dienst handelt, sollte
wiederum die Option verwendet
werden.SicherheitAbhängig von der bei der Installation festgelegten
Konfiguration werden viele der von
inetd verwalteten Dienste automatisch
aktiviert! Wenn Sie einen bestimmten Daemon nicht
benötigen, sollten Sie ihn deaktivieren! Dazu kommentieren
Sie den jeweiligen Daemon in /etc/inetd.conf
mit einem # aus, um danach die
inetd-Konfiguration neu
einzulesen. Einige Daemonen, zum Beispiel
fingerd, sollten generell deaktiviert
werden, da sie zu viele Informationen an einen potentiellen
Angreifer liefern.Einige Daemonen haben unsichere Einstellungen, etwa
große oder nichtexistierende Timeouts für
Verbindungsversuche, die es einem Angreifer erlauben, über
lange Zeit langsam Verbindungen zu einem bestimmten Daemon
aufzubauen, um dessen verfügbare Ressourcen zu verbrauchen.
Es ist daher eine gute Idee, diese Daemonen durch die Optionen
,
sowie
zu beschränken, wenn
Sie sehr viele Verbindungsversuche mit Ihrem System
registrieren.TCP-Wrapping ist in der Voreinstellung aktiviert. Lesen Sie
&man.hosts.access.5;, wenn Sie weitere Informationen zum
Setzen von TCP-Beschränkungen für verschiedene von
inetd aktivierte Daemonen
benötigen.VerschiedenesBei daytime,
time,
echo,
discard,
chargen, und
auth handelt es sich um intern
von inetd bereitgestellte Dienste.
Der auth-Dienst bietet
Identifizierungsdienste über das Netzwerk
an und ist bis zu einem bestimmten Grad konfigurierbar,
während die meisten anderen Dienste nur aktiviert
oder deaktiviert werden können.Eine ausführliche Beschreibung finden Sie in
&man.inetd.8;.TomRhodesReorganisiert und erweitert von BillSwingleGeschrieben von NFS – Network File SystemNFSEines der vielen von FreeBSD unterstützten Dateisysteme
ist das Netzwerkdateisystem, das auch als NFS
bekannt ist. NFS
ermöglicht es einem System, Dateien und Verzeichnisse
über ein Netzwerk mit anderen zu teilen. Über
NFS können
Benutzer und Programme auf Daten entfernter Systeme zugreifen, und
zwar genauso, wie wenn es sich um lokale Daten handeln würde.
Einige der wichtigsten Vorteile von NFS
sind:Lokale Arbeitsstationen benötigen weniger
Plattenplatz, da gemeinsam benutzte Daten nur auf einem
einzigen Rechner vorhanden sind. Alle anderen Stationen
greifen über das Netzwerk auf diese Daten zu.Benutzer benötigen nur noch ein zentrales
Heimatverzeichnis auf einem NFS-Server.
Diese Verzeichnisse sind über das Netzwerk auf allen
Stationen verfügbar.Speichergeräte wie Disketten-, CD-ROM- oder
&iomegazip;-Laufwerke können über das Netzwerk von
anderen Arbeitstationen genutzt werden. Dadurch sind für
das gesamte Netzwerk deutlich weniger Speichergeräte
nötig.Wie funktioniert NFS?NFS besteht aus zwei Hauptteilen: Einem
Server und einem oder mehreren Clients. Der Client greift
über das Netzwerk auf die Daten zu, die auf dem Server
gespeichert sind. Damit dies korrekt funktioniert, müssen
einige Prozesse konfiguriert und gestartet werden:Der Server benötigt folgende Daemonen:NFSServerDateiserverUnix-ClientsrpcbindmountdnfsdDaemonBeschreibungnfsdDer NFS-Daemon. Er bearbeitet
Anfragen der NFS-Clients.mountdDer NFS-Mount-Daemon. Er
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
weitergibt.rpcbind Der Portmapper-Daemon. Durch ihn erkennen die
NFS-Clients, welchen Port der
NFS-Server verwendet.Der Client kann ebenfalls einen Daemon aufrufen, und zwar
den nfsiod-Daemon. Der
nfsiod-Daemon bearbeitet Anfragen vom
NFS-Server. Er ist optional und verbessert
die Leistung des Netzwerks. Für eine normale und korrekte
Arbeit ist er allerdings nicht erforderlich. Mehr erfahren
Sie in der Hilfeseite &man.nfsiod.8;.NFS einrichtenNFSeinrichtenNFS lässt sich leicht
einrichten. Die nötigen Prozesse werden durch einige
Änderungen in /etc/rc.conf bei
jedem Systemstart gestartet.Stellen Sie sicher, dass auf dem
NFS-Server folgende Optionen in der Datei
/etc/rc.conf gesetzt sind:rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"mountd läuft automatisch,
wenn der NFS-Server aktiviert ist.Auf dem Client muss in /etc/rc.conf
folgende Option gesetzt sein:nfs_client_enable="YES"/etc/exports legt fest, welche
Dateisysteme NFS exportieren (manchmal auch
als teilen bezeichnet) soll. Jede Zeile in
/etc/exports legt ein Dateisystem sowie
die Arbeitsstationen, die darauf Zugriff haben, fest.
Außerdem ist es möglich, Zugriffsoptionen
festzulegen. Es gibt viele verschiedene Optionen, allerdings
werden hier nur einige von ihnen erwähnt. Wenn Sie
Informationen zu weiteren Optionen benötigen, lesen Sie
&man.exports.5;.Nun folgen einige Beispieleinträge für
/etc/exports:NFSExport von DateisystemenDie folgenden Beispiele geben Ihnen Anhaltspunkte zum
Exportieren von Dateisystemen, obwohl diese Einstellungen
natürlich von Ihrer Arbeitsumgebung und Ihrer
Netzwerkkonfiguration abhängen. Das nächste
Beispiel exportiert das Verzeichnis /cdrom
für drei Rechner, die sich in derselben Domäne wie
der Server befinden oder für die entsprechende
Einträge in /etc/hosts existieren.
Die Option kennzeichnet das
exportierte Dateisystem als schreibgeschützt. Durch dieses
Flag ist das entfernte System nicht in der Lage, das exportierte
Dateisystem zu verändern./cdrom -ro host1 host2 host3Die nächste Zeile exportiert /home
auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung
ist nützlich, wenn Sie über ein privates Netzwerk ohne
DNS-Server verfügen. Optional
könnten interne Rechnernamen auch in
/etc/hosts konfiguriert werden.
Benötigen Sie hierzu weitere Informationen, lesen Sie bitte
&man.hosts.5;. Durch das Flag wird es
möglich, auch Unterverzeichnisse als Mountpunkte
festzulegen. Dies bedeutet aber nicht, dass alle
Unterverzeichnisse eingehängt werden, vielmehr wird es dem
Client ermöglicht, nur diejenigen Verzeichnisse
einzuhängen, die auch benötigt werden./home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4Die nächste Zeile exportiert /a,
damit Clients von verschiedenen Domänen auf das Dateisystem
zugreifen können. Das -Flag
erlaubt es dem Benutzer root des entfernten
Systems, als root auf das exportierte
Dateisystem zu schreiben. Wenn dieses Flag nicht gesetzt ist,
kann selbst root nicht auf das exportierte
Dateisystem schreiben./a -maproot=root host.example.com box.example.orgDamit ein Client auf ein exportiertes Dateisystem zugreifen
kann, muss ihm dies explizit gestattet werden. Stellen Sie also
sicher, dass der Client in /etc/exports
aufgeführt wird.Jede Zeile in /etc/exports entspricht
der Exportinformation für ein Dateisystem auf einen
Rechner. Ein entfernter Rechner kann für jedes Dateisystem
nur einmal festgelegt werden, und kann auch nur einen
Standardeintrag haben. Nehmen wir an, dass
/usr ein einziges Dateisystem ist. Dann
wären folgende Zeilen ungültig:#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
/usr/src client
/usr/ports clientDas Dateisystem /usr wird hier zweimal
auf den selben Rechner (client)
exportiert. Dies ist aber nicht zulässig. Der korrekte
Eintrag sieht daher so aus:/usr/src /usr/ports clientDie Eigenschaften eines auf einen anderen Rechner
exportierten Dateisystems müssen alle in einer Zeile
stehen. Zeilen, in denen kein Rechner festgelegt wird, werden
als einzelner Rechner behandelt. Dies schränkt die
Möglichkeiten zum Export von Dateisystemen ein, für
die meisten Anwender ist dies aber kein Problem.Eine gültige Exportliste, in der
/usr und /exports
lokale Dateisysteme sind, sieht so aus:# Export src and ports to client01 and client02, but only
# client01 has root privileges on it
/usr/src /usr/ports -maproot=root client01
/usr/src /usr/ports client02
# The client machines have root and can mount anywhere
# on /exports. Anyone in the world can mount /exports/obj read-only
/exports -alldirs -maproot=root client01 client02
/exports/obj -roDer Daemon mountd muss
die Datei /etc/exports nach jeder
Änderung neu einlesen, damit die Änderungen
wirksam werden. Dies kann durch das Senden des
HUP-Signals an den mountd-Prozess
erfolgen:&prompt.root; kill -HUP `cat /var/run/mountd.pid`Alternativ können Sie das
mountd-&man.rc.8;-Skript auch mit dem
passenden Parameter aufrufen:&prompt.root; /etc/rc.d/mountd onereloadLesen Sie bitte
des Handbuchs für Informationen zum Einsatz der
rc-Skripte.Eine weitere Möglichkeit, diese Änderungen zu
übernehmen, wäre der Neustart des Systems. Dies ist
allerdings nicht nötig. Wenn Sie die folgenden
Befehle als root ausführen, sollte
alles korrekt gestartet werden.Auf dem NFS-Server:&prompt.root; rpcbind
&prompt.root; nfsd -u -t -n 4
&prompt.root; mountd -rAuf dem NFS-Client:&prompt.root; nfsiod -n 4Nun sollte alles bereit sein, um ein entferntes Dateisystem
einhängen zu können. In unseren Beispielen nennen wir
den Server server, den Client
client. Wenn Sie ein entferntes Dateisystem
nur zeitweise einhängen wollen, oder nur Ihre Konfiguration
testen möchten, führen Sie auf dem Client als
root einen Befehl ähnlich dem
folgenden aus:NFSDateisysteme einhängen&prompt.root; mount server:/home /mntDadurch wird das Verzeichnis /home des
Servers auf dem Client unter /mnt
eingehängt. Wenn alles korrekt konfiguriert wurde, sehen
Sie auf dem Client im Verzeichnis /mnt alle
Dateien des Servers.Wenn Sie ein entferntes Dateisystem nach jedem Systemstart
automatisch einhängen wollen, fügen Sie das
Dateisystem in /etc/fstab ein. Dazu ein
Beispiel:server:/home /mnt nfs rw 0 0Eine Beschreibung aller Optionen enthält
die Hilfeseite &man.fstab.5;.Dateien sperren (Locking)Einige Anwendungen (beispielsweise
mutt) erfordern die Sperrung von
Dateien, damit sie korrekt arbeiten. Verwenden Sie
NFS, so können Sie für die
Sperrung von Dateien rpc.lockd
einsetzen. Um diesen Daemon zu aktivieren, müssen Sie
in /etc/rc.conf (sowohl auf Client- als
auch auf Serverseite) folgende Zeilen aufnehmen (wobei
vorausgesetzt wird, dasss NFS auf beiden
Systemen bereits konfiguriert ist):rpc_lockd_enable="YES"
rpc_statd_enable="YES"Danach starten Sie die Anwendung zur Verwaltung der
Dateisperren durch folgenden Befehl:&prompt.root; /etc/rc.d/nfslocking startBenötigen Sie keine echten Dateisperren zwischen den
NFS-Clients und dem
NFS-Server, können Sie den
NFS-Client durch die Übergabe der
Option an &man.mount.nfs.8; zu einer lokalen
Sperrung von Dateien zwingen. Lesen Sie dazu auch die
Manualpage &man.mount.nfs.8;.Praktische AnwendungenNFS ist in vielen Situationen
nützlich. Einige Anwendungsbereiche finden Sie in der
folgenden Liste:NFSAnwendungsbeispieleMehrere Maschinen können sich ein CD-ROM-Laufwerk
oder andere Medien teilen. Dies ist billiger und
außerdem praktischer, um Programme auf mehreren
Rechnern zu installieren.In größeren Netzwerken ist es praktisch,
einen zentralen NFS-Server einzurichten,
auf dem die Heimatverzeichnisse der Benutzer gespeichert
werden. Diese Heimatverzeichnisse werden über das
Netzwerk exportiert. Dadurch haben die Benutzer immer das
gleiche Heimatverzeichnis zur Verfügung,
unabhängig davon, an welchem Arbeitsplatz sie sich
anmelden.Verschiedene Rechner können auf ein gemeinsames
Verzeichnis /usr/ports/distfiles
zugreifen. Wenn Sie nun einen Port auf mehreren Rechnern
installieren wollen, greifen Sie einfach auf dieses
Verzeichnis zu, ohne die Quelldateien auf jede Maschine
zu kopieren.WylieStilwellBeigetragen von ChernLeeÜberarbeitet von AMDamdAutomatic Mounter Daemon&man.amd.8; (Automatic Mounter Daemon) hängt ein
entferntes Dateisystem automatisch ein,
wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem
zugegriffen wird. Dateisysteme, die über einen gewissen
Zeitraum inaktiv sind, werden von amd
automatisch abgehängt.
amd ist eine einfache
Alternative zum dauerhaften Einhängen von Dateisystemen
in /etc/fstab.In der Voreinstellung stellt amd
die Verzeichnisse /host und
/net als NFS-Server bereit. Wenn auf eine
Datei in diesen Verzeichnissen zugegriffen wird, sucht
amd den entsprechenden Mountpunkt
und hängt das Dateisystem automatisch ein.
/net wird zum Einhängen von
exportierten Dateisystemen von einer IP-Adresse verwendet,
während /host zum Einhängen
von exportierten Dateisystemen eines durch seinen Namen
festgelegten Rechners dient.Ein Zugriff auf eine Datei in
/host/foobar/usr würde
amd veranlassen,
das von foobar exportierte Dateisystem
/usr einzuhängen.Ein exportiertes Dateisystem mit
amd in den Verzeichnisbaum
einhängenSie können sich die verfügbaren Mountpunkte
eines entfernten Rechners mit showmount
ansehen. Wollen Sie sich die Mountpunkte des Rechners
foobar ansehen, so verwenden Sie:&prompt.user; showmount -e foobar
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; cd /host/foobar/usrWie Sie an diesem Beispiel erkennen können, zeigt
showmount/usr
als exportiertes Dateisystem an. Wenn man in das Verzeichnis
/host/foobar/usr wechselt, versucht
amd den Rechnernamen
foobar aufzulösen und den gewünschten
Export in den Verzeichnisbaum einzuhängen.amd kann durch das Einfügen
der folgenden Zeile in /etc/rc.conf
automatisch gestartet werden:amd_enable="YES"Mit der Option amd_flags kann
amd angepasst werden.
Die Voreinstellung für amd_flags sieht
so aus:amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"/etc/amd.map legt die Standardoptionen
fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum
eingehängt werden. /etc/amd.conf
hingegen legt einige der erweiterten Optionen von
amd fest.Weitere Informationen finden Sie in den Hilfeseiten
&man.amd.8; und &man.amd.conf.5;.JohnLindBeigetragen von Integrationsprobleme mit anderen SystemenBestimmte ISA-Ethernetadapter haben Beschränkungen, die
zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
führen können. Es handelt sich dabei nicht um ein
FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon
ebenfalls betroffen.Das Problem tritt fast ausschließlich dann auf, wenn
(FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
wie Systemen von Silicon Graphics, Inc. oder
Sun Microsystems, Inc. Das Einhängen via NFS
funktioniert problemlos, auch einige Dateioperationen
können erfolgreich sein. Plötzlich aber wird der
Server nicht mehr auf den Client reagieren, obwohl Anfragen von
anderen Rechnern weiterhin bearbeitet werden. Dieses
Problem betrifft stets den Client, egal ob es sich beim Client
um das FreeBSD-System oder den Hochleistungsrechner handelt.
Auf vielen Systemen gibt es keine Möglichkeit mehr, den
Client ordnungsgemäß zu beenden. Die einzige
Lösung ist es oft, den Rechner neu zu starten, da dieses
NFS-Problem nicht mehr behoben werden kann.Die korrekte Lösung für dieses
Problem ist es, sich eine schnellere Ethernetkarte für
FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und
meist zufriedenstellende Lösung, um dieses Problem zu
umgehen. Wenn es sich beim FreeBSD-System um den
Server handelt, verwenden Sie beim
Einhängen in den Verzeichnisbaum auf der Clientseite
zusätzlich die Option . Wenn es
sich beim FreeBSD-System um den Client
handelt, dann hängen Sie das NFS-Dateisystem mit der
zusätzlichen Option ein.
Diese Optionen können auf der Clientseite auch durch
das vierte Feld der Einträge in
/etc/fstab festgelegt werden, damit die
Dateisysteme automatisch eingehängt werden. Um die
Dateisysteme manuell einzuhängen, verwendet man bei
&man.mount.8; zusätzlich die Option
.Es gibt ein anderes Problem, das oft mit diesem verwechselt
wird. Dieses andere Problem tritt auf, wenn sich über NFS
verbundene Server und Clients in verschiedenen Netzwerken
befinden. Wenn dies der Fall ist, stellen Sie
sicher, dass Ihre Router die
nötigen UDP-Informationen weiterleiten,
oder Sie werden nirgends hingelangen, egal was Sie machen.In den folgenden Beispielen ist fastws der
Name des Hochleistungsrechners (bzw. dessen Schnittstelle),
freebox hingegen ist der Name des
FreeBSD-Systems, das über eine Netzkarte mit geringer
Leistung verfügt. /sharedfs ist das
exportierte NFS -Dateisystem (lesen Sie dazu auch
&man.exports.5;). Bei /project handelt es
sich um den Mountpunkt, an dem das exportierte Dateisystem auf
der Clientseite eingehängt wird. In allen Fällen
können zusätzliche Optionen, wie z.B.
, oder
wünschenswert sein.FreeBSD als Client (eingetragen in
/etc/fstab auf freebox):
fastws:/sharedfs /project nfs rw,-r=1024 0 0Manuelles Einhängen auf
freebox:&prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project&os; als Server (eingetragen in
/etc/fstab auf fastws):
freebox:/sharedfs /project nfs rw,-w=1024 0 0Manuelles Einhängen auf fastws:&prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /projectNahezu alle 16-bit Ethernetadapter erlauben Operationen
ohne obengenannte Einschränkungen auf die Lese- oder
Schreibgröße.Für alle technisch Interessierten wird nun beschrieben,
was passiert, wenn dieser Fehler auftritt, und warum er
irreversibel ist. NFS arbeitet üblicherweise mit einer
Blockgröße von 8 kByte (obwohl
es kleinere Fragmente zulassen würde). Da die maximale
Rahmengröße von Ethernet 1500 Bytes
beträgt, wird der NFS-Block in einzelne
Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine
Einheit handelt, die auch als Einheit empfangen, verarbeitet
und bestätigt werden muss. Der
Hochleistungsrechner verschickt die Pakete, aus denen der
NFS-Block besteht, so eng hintereinander, wie es der Standard
erlaubt. Auf der anderen Seite (auf der sich die langsamere
Netzkarte befindet), überschreiben die späteren
Pakete ihre Vorgänger, bevor diese vom System verarbeitet
werden (Überlauf!). Dies hat zur Folge, dass der NFS-Block
nicht mehr rekonstruiert und bestätigt werden kann. Als
Folge davon glaubt der Hochleistungsrechner, dass der andere
Rechner nicht erreichbar ist (Timeout!) und versucht die
Sendung zu wiederholen. Allerdings wird wiederum der komplette
NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt,
und zwar immer wieder (oder bis zum Systemneustart).Indem wir die Einheitengröße unter der maximalen
Größe der Ethernetpakete halten, können wir
sicherstellen, dass jedes vollständig erhaltene
Ethernetpaket individuell angesprochen werden kann und vermeiden
die Blockierung des Systems.Überläufe können zwar nach wie vor auftreten,
wenn ein Hochleistungsrechner Daten auf ein PC-System
transferiert. Durch die besseren (und schnelleren) Netzkarten
treten solche Überläufe allerdings nicht mehr
zwingend auf, wenn
NFS-Einheiten übertragen werden. Tritt nun
ein Überlauf auf, wird die betroffene Einheit erneut
verschickt, und es besteht eine gute Chance, dass sie nun
erhalten, verarbeitet und bestätigt werden kann.BillSwingleBeigetragen von EricOgrenErweitert von UdoErdelhoffNIS/YP – Network Information ServiceWas ist NIS?NISSolarisHP-UXAIXLinuxNetBSDOpenBSDNIS
wurde von Sun Microsystems entwickelt, um &unix;-Systeme
(ursprünglich &sunos;) zentral verwalten zu können.
Mittlerweile hat es sich zu einem Industriestandard entwickelt,
der von allen wichtigen &unix;-Systemen (&solaris;, HP-UX,
&aix;, Linux, NetBSD, OpenBSD, FreeBSD und anderen)
unterstützt wird.yellow pagesNISNIS war
ursprünglich als Yellow Pages bekannt,
aus markenrechtlichen Gründen wurde der Name aber
geändert. Die alte Bezeichnung (sowie die Abkürzung YP)
wird aber nach wie vor häufig verwendet.NISDomänenBei NIS handelt es sich um ein RPC-basiertes
Client/Server-System. Eine Gruppe von Rechnern greift dabei
innerhalb einer NIS-Domäne auf gemeinsame
Konfigurationsdateien zu. Ein Systemadministrator wird dadurch
in die Lage versetzt, NIS-Clients mit minimalem Aufwand
einzurichten, sowie Änderungen an der Systemkonfiguration
von einem zentralen Ort aus durchzuführen.Windows NTDie Funktion entspricht dem Domänensystem von
&windowsnt;; auch wenn sich die interne Umsetzung unterscheidet,
sind die Basisfunktionen vergleichbar.Wichtige Prozesse und BegriffeEs gibt verschiedene Begriffe und Anwenderprozesse, auf die
Sie stoßen werden, wenn Sie NIS unter FreeBSD einrichten,
egal ob Sie einen Server oder einen Client konfigurieren:rpcbindBegriffBeschreibungNIS-DomänennameEin NIS-Masterserver sowie alle Clients
(inklusive der Slaveserver) haben einen
NIS-Domänennamen. Dieser hat (ähnlich den
&windowsnt;-Domänennamen) nichts mit DNS zu tun.
rpcbindMuss laufen, damit RPC (Remote Procedure Call, ein
von NIS verwendetes Netzwerkprotokoll) funktioniert.
NIS-Server sowie Clients funktionieren ohne
rpcbind nicht.ypbindBindet einen NIS-Client an seinen
NIS-Server. Der Client bezieht den
NIS-Domänennamen vom System und stellt über
das RPC-Protokoll eine Verbindung zum NIS-Server her.
ypbind ist der zentrale
Bestandteil der Client-Server-Kommunikation in einer
NIS-Umgebung. Wird >ypbind
auf einem Client beendet, ist dieser nicht mehr in der
Lage, auf den NIS-Server zuzugreifen.ypservSollte nur auf dem NIS-Server laufen, da es sich um
den Serverprozess selbst handelt. Wenn &man.ypserv.8;
nicht mehr läuft, kann der Server nicht mehr auf
NIS-Anforderungen reagieren (wenn ein Slaveserver
existiert, kann dieser als Ersatz fungieren). Einige
NIS-Systeme (allerdings nicht das von FreeBSD) versuchen
allerdings erst gar nicht, sich mit einem anderen Server
zu verbinden, wenn der bisher verwendete Server nicht
mehr reagiert. Die einzige Lösung dieses Problems
besteht dann darin, den Serverprozess (oder gar den
Server selbst) oder den
ypbind-Prozess auf dem Client
neu zu starten.rpc.yppasswddEin weiterer Prozess, der nur auf dem
NIS-Masterserver laufen sollte. Es handelt sich um einen
Daemonprozess, der es NIS-Clients ermöglicht, sich
auf dem NIS-Masterserver anzumelden, um ihr Passwort zu
ändern.Wie funktioniert NIS?In einer NIS-Umgebung gibt es drei Rechnerarten:
Masterserver, Slaveserver und Clients. Server dienen als
zentraler Speicherort für Rechnerkonfigurationen.
Masterserver speichern die maßgebliche Kopie dieser
Informationen, während Slaveserver diese Informationen
aus Redundanzgründen spiegeln. Die Clients beziehen
ihre Informationen immer vom Server.Auf diese Art und Weise können Informationen aus
verschiedenen Dateien von mehreren Rechnern gemeinsam
verwendet werden. master.passwd,
group, und hosts
werden oft gemeinsam über NIS verwendet. Immer, wenn
ein Prozess auf einem Client auf Informationen zugreifen will,
die normalerweise in lokalen Dateien vorhanden wären,
wird stattdessen eine Anfrage an den NIS-Server gestellt, an
den der Client gebunden ist.Arten von NIS-RechnernNISMasterserverEin NIS-Masterserver verwaltet,
ähnlich einem &windowsnt;-Domänencontroller, die
von allen NIS-Clients gemeinsam verwendeten Dateien.
passwd, group,
sowie verschiedene andere von den Clients verwendete
Dateien existieren auf dem Masterserver.Ein Rechner kann auch für mehrere
NIS-Domänen als Masterserver fungieren. Dieser
Abschnitt konzentriert sich im Folgenden allerdings auf
eine relativ kleine NIS-Umgebung.NISSlaveserverNIS-Slaveserver. Ähnlich
einem &windowsnt;-Backupdomänencontroller, verwalten
NIS-Slaveserver Kopien der Daten des NIS-Masterservers.
NIS-Slaveserver bieten die Redundanz, die für
kritische Umgebungen benötigt wird. Zusätzlich
entlasten Slaveserver den Masterserver: NIS-Clients
verbinden sich immer mit dem NIS-Server, der zuerst
reagiert. Dieser Server kann auch ein Slaveserver sein.
NISClientNIS-Clients. NIS-Clients
identifizieren sich gegenüber dem NIS-Server
(ähnlich den &windowsnt;-Workstations), um sich am
Server anzumelden.NIS/YP konfigurierenDieser Abschnitt beschreibt an Hand eines Beispiels die
Einrichtung einer NIS-Umgebung.PlanungNehmen wir an, Sie seien der Administrator eines kleinen
Universitätsnetzes. Dieses Netz besteht aus
fünfzehn FreeBSD-Rechnern, für die derzeit keine
zentrale Verwaltung existiert, jeder Rechner hat also eine
eigene Version von /etc/passwd und
/etc/master.passwd. Diese Dateien werden
manuell synchron gehalten; legen Sie einen neuen Benutzer an,
so muss dies auf allen fünfzehn Rechnern manuell
erledigt werden (unter Verwendung von
adduser). Da diese Lösung sehr
ineffizient ist, soll das Netzwerk in Zukunft NIS verwenden,
wobei zwei der Rechner als Server dienen sollen.In Zukunft soll das Netz also wie folgt aussehen:RechnernameIP-AdresseRechneraufgabeellington10.0.0.2NIS-Mastercoltrane10.0.0.3NIS-Slavebasie10.0.0.4Workstation der Fakultätbird10.0.0.5Clientrechnercli[1-11]10.0.0.[6-17]Verschiedene andere ClientsWenn Sie NIS das erste Mal einrichten, ist es ratsam, sich
zuerst über die Vorgangsweise Gedanken zu machen.
Unabhängig von der Größe Ihres Netzwerks
müssen Sie stets einige Entscheidungen treffen.Einen NIS-Domänennamen wählenNISDomänennameDies muss nicht der Domainname sein. Es
handelt sich vielmehr um den NIS-Domainnamen.
Wenn ein Client Informationen anfordert, ist in dieser
Anforderung der Name der NIS-Domäne enthalten.
Dadurch weiß jeder Server im Netzwerk, auf welche
Anforderung er antworten muss. Stellen Sie sich den
NIS-Domänennamen als den Namen einer Gruppe von
Rechnern vor, die etwas gemeinsam haben.Manchmal wird der Name der Internetdomäne auch
für die NIS-Domäne verwendet. Dies ist allerdings
nicht empfehlenswert, da dies bei der Behebung von Problemen
verwirrend sein kann. Der Name der NIS-Domäne sollte
innerhalb Ihres Netzwerks einzigartig sein. Hilfreich ist
es, wenn der Name die Gruppe der in ihr zusammengefassten
Rechner beschreibt. Die Kunstabteilung von Acme Inc.
hätte daher die NIS-Domäne
acme-art. Für unser Beispiel verwenden
wir den NIS-Domänennamen
test-domain.SunOSEs gibt jedoch auch Betriebssysteme (vor allem &sunos;),
die als NIS-Domänennamen den Name der
Internetdomäne verwenden. Wenn dies für einen
oder mehrere Rechner Ihres Netzwerks zutrifft,
müssen Sie den Namen der
Internetdomäne als Ihren NIS-Domänennamen
verwenden.Anforderungen an den ServerWenn Sie einen NIS-Server einrichten wollen, müssen
Sie einige Dinge beachten. Eine unangenehme Eigenschaft
von NIS ist die Abhängigkeit der Clients vom Server.
Wenn sich der Client nicht über den Server mit seiner
NIS-Domäne verbinden kann, wird der Rechner oft
unbenutzbar, da das Fehlen von Benutzer- und
Gruppeninformationen zum Einfrieren des Clients führt.
Daher sollten Sie für den Server einen Rechner
auswählen, der nicht regelmäßig neu
gestartet werden muss und der nicht für Testversuche
verwendet wird. Idealerweise handelt es sich um einen
alleinstehenden Rechner, dessen einzige Aufgabe es ist, als
NIS-Server zu dienen. Wenn Sie ein Netzwerk haben, das
nicht zu stark ausgelastet ist, ist es auch möglich,
den NIS-Server als weiteren Dienst auf einem anderen Rechner
laufen zu lassen. Denken Sie aber daran, dass ein Ausfall
des NIS-Servers alle NIS-Clients
betrifft.NIS-ServerDie verbindlichen Kopien aller NIS-Informationen befinden
sich auf einem einzigen Rechner, dem NIS-Masterserver. Die
Datenbanken, in denen die Informationen gespeichert sind,
bezeichnet man als NIS-Maps. Unter FreeBSD werden diese
Maps unter /var/yp/[domainname]
gespeichert, wobei [domainname] der
Name der NIS-Domäne ist. Ein einzelner NIS-Server
kann gleichzeitig mehrere NIS-Domänen verwalten, daher
können auch mehrere Verzeichnisse vorhanden sein. Jede
Domäne verfügt über ein eigenes Verzeichnis
sowie einen eigenen, von anderen Domänen
unabhängigen Satz von NIS-Maps.NIS-Master- und Slaveserver verwenden den
ypserv-Daemon, um NIS-Anfragen zu
bearbeiten. ypserv empfängt
eingehende Anfragen der NIS-Clients, ermittelt aus der
angeforderten Domäne und Map einen Pfad zur
entsprechenden Datenbank, und sendet die angeforderten
Daten von der Datenbank zum Client.Einen NIS-Masterserver einrichtenNISServerkonfigurationAbhängig von Ihren Anforderungen ist die
Einrichtung eines NIS-Masterservers relativ einfach, da
NIS von FreeBSD bereits in der Standardkonfiguration
unterstützt wird. Sie müssen nur folgende
Zeilen in /etc/rc.conf einfügen:
nisdomainname="test-domain"Diese Zeile setzt den NIS-Domänennamen auf
test-domain, wenn Sie das Netzwerk
initialisieren (beispielsweise nach einem Systemstart).
nis_server_enable="YES"
Dadurch werden die NIS-Serverprozesse gestartet.nis_yppasswdd_enable="YES"
Durch diese Zeile wird der
rpc.yppasswdd-Daemon aktiviert, der,
wie bereits erwähnt, die Änderung von
NIS-Passwörtern von einem Client aus
ermöglicht.In Abhängigkeit von Ihrer NIS-Konfiguration
können weitere Einträge erforderlich sein.
Weitere Informationen finden Sie im Abschnitt
NIS-Server, die
auch als NIS-Clients arbeiten.Nun müssen Sie nur noch
/etc/netstart als Superuser
ausführen, um alles entsprechend Ihren Vorgaben in
/etc/rc.conf einzurichten.Die NIS-Maps initialisierenNISmapsNIS-Maps sind Datenbanken, die
sich im Verzeichnis /var/yp befinden.
Sie werden am NIS-Masterserver aus den Konfigurationsdateien
unter /etc erzeugt. Einzige Ausnahme:
/etc/master.passwd. Dies ist auch
sinnvoll, da Sie die Passwörter für Ihr
root- oder andere
Administratorkonten nicht an alle Server der NIS-Domäne
verteilen wollen. Bevor Sie also die NIS-Maps des
Masterservers einrichten, sollten Sie Folgendes tun:&prompt.root; cp /etc/master.passwd /var/yp/master.passwd
&prompt.root; cd /var/yp
&prompt.root; vi master.passwdEntfernen Sie alle Systemkonten
(wie bin, tty,
kmem oder games),
sowie alle Konten, die Sie nicht an die NIS-Clients
weitergeben wollen (beispielsweise root
und alle Konten mit der UID 0 (=Superuser).Stellen Sie sicher, dass
/var/yp/master.passwd weder von der
Gruppe noch von der Welt gelesen werden kann (Zugriffsmodus
600)! Ist dies nicht der Fall, ändern Sie dies mit
chmod.Tru64 UNIXNun können Sie die NIS-Maps initialisieren.
FreeBSD verwendet dafür das Skript
ypinit (lesen Sie dazu auch
&man.ypinit.8;). Dieses Skript ist auf fast allen
UNIX-Betriebssystemen verfügbar. Bei
Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings
ypsetup. Da wir Maps für einen
NIS-Masterserver erzeugen, verwenden wir
ypinit mit der Option
. Nachdem Sie die beschriebenen
Aktionen durchgeführt haben, erzeugen Sie nun die
NIS-Maps:ellington&prompt.root; ypinit -m test-domain
Server Type: MASTER Domain: test-domain
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
At this point, we have to construct a list of this domains YP servers.
rod.darktech.org is already known as master server.
Please continue to add any slave servers, one per line. When you are
done with the list, type a <control D>.
master server : ellington
next host to add: coltrane
next host to add: ^D
The current list of NIS servers looks like this:
ellington
coltrane
Is this correct? [y/n: y] y
[..output from map generation..]
NIS Map update completed.
ellington has been setup as an YP master server without any errors.Dadurch erzeugt ypinit/var/yp/Makefile aus der Datei
/var/yp/Makefile.dist.
Durch diese Datei wird festgelegt, dass Sie in einer
NIS-Umgebung mit nur einem Server arbeiten und dass alle
Clients unter FreeBSD laufen. Da
test-domain aber auch über einen
Slaveserver verfügt, müssen Sie
/var/yp/Makefile entsprechend anpassen:
ellington&prompt.root; vi /var/yp/MakefileSie sollten die ZeileNOPUSH = "True"auskommentieren (falls dies nicht bereits der Fall ist).Einen NIS-Slaveserver einrichtenNISSlaveserverEin NIS-Slaveserver ist noch einfacher einzurichten als
ein Masterserver. Melden Sie sich am Slaveserver an und
ändern Sie /etc/rc.conf analog
zum Masterserver. Der einzige Unterschied besteht in der
Verwendung der Option , wenn Sie
ypinit aufrufen. Die Option
erfordert den Namen des
NIS-Masterservers, daher sieht unsere Ein- und Ausgabe wie
folgt aus:coltrane&prompt.root; ypinit -s ellington test-domain
Server Type: SLAVE Domain: test-domain Master: ellington
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] n
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
There will be no further questions. The remainder of the procedure
should take a few minutes, to copy the databases from ellington.
Transferring netgroup...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byuser...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byhost...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring group.bygid...
ypxfr: Exiting: Map successfully transferred
Transferring group.byname...
ypxfr: Exiting: Map successfully transferred
Transferring services.byname...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.byname...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.byname...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring netid.byname...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring ypservers...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byname...
ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Don't forget to update map ypservers on ellington.Sie sollten nun über das Verzeichnis
/var/yp/test-domain verfügen.
Die Kopien der NIS-Masterserver-Maps sollten sich in diesem
Verzeichnis befinden. Allerdings müssen Sie diese
auch aktuell halten. Die folgenden Einträge in
/etc/crontab erledigen diese Aufgabe:
20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuidDiese zwei Zeilen zwingen den Slaveserver, seine Maps
mit denen des Masterservers zu synchronisieren. Diese
Einträge sind nicht zwingend, da der Masterserver
versucht, alle Änderungen seiner NIS-Maps an seine
Slaveserver weiterzugeben. Da Passwortinformationen aber
für vom Server abhängige Systeme vital sind, ist
es eine gute Idee, diese Aktualisierungen zu erzwingen.
Besonders wichtig ist dies in stark ausgelasteten Netzen,
in denen Map-Aktualisierungen unvollständig sein
könnten.Führen Sie nun /etc/netstart
auch auf dem Slaveserver aus, um den NIS-Server erneut zu
starten.NIS-ClientsEin NIS-Client bindet sich unter
Verwendung des ypbind-Daemons an einen
NIS-Server. ypbind prüft die
Standarddomäne des Systems (die durch
domainname gesetzt wird), und beginnt
RPCs über das lokale Netzwerk zu verteilen (broadcast).
Diese Anforderungen legen den Namen der Domäne fest,
für die ypbind eine Bindung erzeugen
will. Wenn der Server der entsprechenden Domäne eine
solche Anforderung erhält, schickt er eine Antwort an
ypbind. ybind speichert
daraufhin die Adresse des Servers. Wenn mehrere Server
verfügbar sind (beispielsweise ein Master- und mehrere
Slaveserver), verwendet ypbind die erste
erhaltene Adresse. Ab diesem Zeitpunkt richtet der Client alle
Anfragen an genau diesen Server. ypbindpingt den Server gelegentlich an, um
sicherzustellen, dass der Server funktioniert. Antwortet der
Server innerhalb eines bestimmten Zeitraums nicht (Timeout),
markiert ypbind die Domäne als
ungebunden und beginnt erneut, RPCs über das Netzwerk zu
verteilen, um einen anderen Server zu finden.Einen NIS-Client konfigurierenNISClient konfigurierenEinen FreeBSD-Rechner als NIS-Client einzurichten, ist
recht einfach.Fügen Sie folgende Zeilen in
/etc/rc.conf ein, um den
NIS-Domänennamen festzulegen, und um
ypbind bei der Initialisierung des
Netzwerks zu starten:nisdomainname="test-domain"
nis_client_enable="YES"Um alle Passworteinträge des NIS-Servers zu
importieren, löschen Sie alle Benutzerkonten in
/etc/master.passwd und fügen
mit vipw folgende Zeile am Ende der
Datei ein:+:::::::::Diese Zeile legt für alle gültigen
Benutzerkonten der NIS-Server-Maps einen Zugang an.
Es gibt verschiedene Wege, Ihren NIS-Client durch
Änderung dieser Zeile zu konfigurieren. Lesen
Sie dazu auch den Abschnitt über
Netzgruppen weiter
unten. Weitere detaillierte Informationen finden Sie
im Buch Managing NFS and NIS von
O'Reilly.Sie sollten zumindest ein lokales Benutzerkonto,
das nicht über NIS importiert wird, in Ihrer
/etc/master.passwd behalten.
Dieser Benutzer sollte außerdem ein Mitglied der
Gruppe wheel sein. Wenn es
mit NIS Probleme gibt, können Sie diesen Zugang
verwenden, um sich anzumelden,
root zu werden und das Problem
zu beheben.Um alle möglichen Gruppeneinträge vom
NIS-Server zu importieren, fügen sie folgende Zeile
in /etc/group ein:+:*::Nachdem Sie diese Schritte erledigt haben, sollten Sie
mit ypcat passwd die
passwd-Map des NIS-Servers anzeigen
können.Sicherheit unter NISNISSicherheitIm Allgemeinen kann jeder entfernte Anwender einen RPC an
&man.ypserv.8; schicken, um den Inhalt Ihrer NIS-Maps abzurufen,
falls er Ihren NIS-Domänennamen kennt. Um solche
unautorisierten Transaktionen zu verhindern, unterstützt
&man.ypserv.8; securenets, durch die man den
Zugriff auf bestimmte Rechner beschränken kann.
&man.ypserv.8; versucht, beim Systemstart die Informationen
über securenets aus der Datei
/var/yp/securenets zu laden.Die Datei securenets kann auch
in einem anderen Verzeichnis stehen, das mit der Option
angegeben wird. Diese Datei
enthält Einträge, die aus einer Netzwerkadresse und
einer Netzmaske bestehen, die durch Leerzeichen getrennt
werden. Kommentarzeilen beginnen mit #.
/var/yp/securnets könnte
beispielsweise so aussehen:# allow connections from local host -- mandatory
127.0.0.1 255.255.255.255
# allow connections from any host
# on the 192.168.128.0 network
192.168.128.0 255.255.255.0
# allow connections from any host
# between 10.0.0.0 to 10.0.15.255
# this includes the machines in the testlab
10.0.0.0 255.255.240.0Wenn &man.ypserv.8; eine Anforderung von einer zu diesen
Regeln passenden Adresse erhält, wird die Anforderung
bearbeitet. Gibt es keine passende Regel, wird die
Anforderung ignoriert und eine Warnmeldung aufgezeichnet. Wenn
/var/yp/securenets nicht vorhanden ist,
erlaubt ypserv Verbindungen von jedem Rechner
aus.ypserv unterstützt auch das
TCP-Wrapper-Paket von Wietse Venema.
Mit diesem Paket kann der Administrator für
Zugriffskontrollen die Konfigurationsdateien von
TCP-Wrapper anstelle von
/var/yp/securenets verwenden.Während beide Kontrollmechanismen einige Sicherheit
gewähren, beispielsweise durch privilegierte Ports, sind
sie gegenüber IP spoofing-Attacken
verwundbar. Jeder NIS-Verkehr sollte daher von Ihrer Firewall
blockiert werden.Server, die /var/yp/securenets
verwenden, können Schwierigkeiten bei der Anmeldung von
Clients haben, die ein veraltetes TCP/IP-Subsystem
besitzen. Einige dieser TCP/IP-Subsysteme setzen alle
Rechnerbits auf Null, wenn Sie einen
Broadcast durchführen und/oder
können die Subnetzmaske nicht auslesen, wenn sie die
Broadcast-Adresse berechnen. Einige Probleme können
durch Änderungen der Clientkonfiguration behoben werden.
Andere hingegen lassen sich nur durch das Entfernen des
betreffenden Rechners aus dem Netzwerk oder den Verzicht auf
/var/yp/securenets umgehen.Die Verwendung von /var/yp/securenets
auf einem Server mit einem solch veralteten
TCP/IP-Subsystem ist eine sehr schlechte Idee, die zu
einem Verlust der NIS-Funktionalität für große
Teile Ihres Netzwerks führen kann.TCP-WrapperDie Verwendung der TCP-Wrapper
verlangsamt die Reaktion Ihres NIS-Servers. Diese
zusätzliche Reaktionszeit kann in Clientprogrammen zu
Timeouts führen. Dies vor allem in Netzwerken, die
stark ausgelastet sind, oder nur über langsame NIS-Server
verfügen. Wenn ein oder mehrere Ihrer Clientsysteme
dieses Problem aufweisen, sollten Sie die betreffenden Clients
in NIS-Slaveserver umwandeln, und diese an sich selbst binden.
Bestimmte Benutzer an der Anmeldung hindernNISBenutzer blockierenIn unserem Labor gibt es den Rechner basie,
der nur für Mitarbeiter der Fakultät bestimmt ist.
Wir wollen diesen Rechner nicht aus der NIS-Domäne
entfernen, obwohl passwd des
NIS-Masterservers Benutzerkonten sowohl für
Fakultätsmitarbeiter als auch für Studenten
enthält. Was können wir also tun?Es gibt eine Möglichkeit, bestimmte Benutzer an der
Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
diese in der NIS-Datenbank vorhanden sind. Dazu müssen
Sie lediglich an diesem Rechner den Eintrag
-Benutzername an
das Ende von /etc/master.passwd setzen,
wobei Benutzername der zu
blockierende Benutzername ist. Diese Änderung sollte
bevorzugt durch vipw erledigt werden, da
vipw Ihre Änderungen an
/etc/master.passwd auf Plausibilität
überprüft und nach erfolgter Änderung die
Passwortdatenbank automatisch aktualisiert. Um also den
Benutzer bill an der Anmeldung am Rechner
basie zu hindern, gehen wir wie folgt vor:
basie&prompt.root; vipw[add -bill to the end, exit]
vipw: rebuilding the database...
vipw: done
basie&prompt.root; cat /etc/master.passwd
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
+:::::::::
-bill
basie&prompt.root;UdoErdelhoffBeigetragen von Netzgruppen verwendenNetzgruppenDie im letzten Abschnitt beschriebene Methode eignet sich
besonders, wenn Sie spezielle Regeln für wenige
Benutzer oder wenige Rechner benötigen. In großen
Netzwerken werden Sie allerdings
mit Sicherheit vergessen, einige Benutzer
von der Anmeldung an bestimmten Rechnern auszuschließen.
Oder Sie werden gezwungen sein, jeden Rechner einzeln zu
konfigurieren. Dadurch verlieren Sie aber den Hauptvorteil von
NIS, die zentrale Verwaltung.Die Lösung für dieses Problem sind
Netzgruppen. Ihre Aufgabe und Bedeutung
ist vergleichbar mit normalen, von UNIX-Dateisystemen
verwendeten Gruppen. Die Hauptunterschiede sind das Fehlen
einer numerischen ID sowie die Möglichkeit, Netzgruppen
zu definieren, die sowohl Benutzer als auch andere Netzgruppen
enthalten.Netzgruppen wurden entwickelt, um große, komplexe
Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten.
Sie sind also von Vorteil, wenn Sie von dieser Situation
betroffen sind. Andererseits ist es dadurch beinahe
unmöglich, Netzgruppen mit einfachen Beispielen zu
erklären. Das hier verwendete Beispiel veranschaulicht
dieses Problem.Nehmen wir an, dass Ihre erfolgreiche Einführung von
NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat. Ihre
nächste Aufgabe besteht nun darin, Ihre NIS-Domäne
um zusätzliche Rechner zu erweitern. Die folgenden
Tabellen enthalten die neuen Benutzer und Rechner inklusive
einer kurzen Beschreibung.Benutzername(n)Beschreibungalpha,
betaBeschäftigte der IT-Abteilungcharlie,
deltaDie neuen Lehrlinge der IT-Abteilungecho,
foxtrott,
golf, ...Normale Mitarbeiterable,
baker, ...Externe MitarbeiterRechnername(n)Beschreibungwar, death,
famine, pollutionIhre wichtigsten Server. Nur IT-Fachleute
dürfen sich an diesen Rechnern anmelden.pride, greed,
envy, wrath,
lust, slothWeniger wichtige Server. Alle Mitarbeiter der
IT-Abteilung dürfen sich auf diesen Rechnern
anmelden.one, two,
three, four, ...Gewöhnliche Arbeitsrechner. Nur die
wirklichen Mitarbeiter dürfen
diese Rechner verwenden.trashcanEin sehr alter Rechner ohne kritische Daten. Sogar
externe Mitarbeiter dürfen diesen Rechner
verwenden.Wollten Sie diese Einschränkungen umsetzen, indem Sie
jeden Benutzer einzeln blockieren, müssten Sie auf jedem
System für jeden Benutzer eine entsprechende Zeile in
passwd einfügen. Wenn Sie nur einen
Eintrag vergessen, haben Sie ein Problem. Es mag noch angehen,
dies während der ersten Installation zu erledigen, im
täglichen Betrieb werden Sie allerdings
mit Sicherheit einmal vergessen, die
entsprechenden Einträge anzulegen. Vergessen Sie nicht:
Murphy war Optimist.Die Verwendung von Netzgruppen hat in dieser Situation
mehrere Vorteile. Sie müssen nicht jeden Benutzer einzeln
verwalten; weisen Sie stattdessen den Benutzer einer Netzgruppe
zu und erlauben oder verbieten Sie allen Mitglieder dieser
Gruppe die Anmeldung an einem Server. Wenn Sie einen neuen
Rechner hinzufügen, müssen Sie
Zugangsbeschränkungen nur für die Netzgruppen
festlegen. Legen Sie einen neuen Benutzer an, müssen Sie
ihn nur einer oder mehrere Netzgruppen zuweisen. Diese
Veränderungen sind voneinander unabhängig; Anweisungen
der Form für diese Kombination aus Benutzer und
Rechner mache Folgendes ... sind nicht mehr nötig.
Wenn Sie die Einrichtung von NIS sorgfältig geplant haben,
müssen Sie nur noch eine zentrale Konfigurationsdatei
bearbeiten, um den Zugriff auf bestimmte Rechner zu erlauben
oder zu verbieten.Der erste Schritt ist die Initialisierung der NIS-Maps
der Netzgruppe. &man.ypinit.8; kann dies unter FreeBSD nicht
automatisch durchführen. Sind die Maps aber erst einmal
erzeugt, werden sie jedoch von NIS problemlos unterstützt.
Um eine leere Map zu erzeugen, geben Sie Folgendes ein:ellington&prompt.root; vi /var/yp/netgroupDanach legen Sie die Einträge an. Für unser
Beispiel benötigen wir mindestens vier Netzgruppen:
IT-Beschäftige, IT-Lehrlinge, normale Beschäftigte
sowie Externe.IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
USERS (,echo,test-domain) (,foxtrott,test-domain) \
(,golf,test-domain)
INTERNS (,able,test-domain) (,baker,test-domain)Bei IT_EMP, IT_APP
usw. handelt es sich um Netzgruppennamen. In den Klammern
werden diesen Netzgruppen jeweils ein oder mehrere
Benutzerkonten hinzugefügt. Die drei Felder in der
Klammer haben folgende Bedeutung:Der Name des Rechners, auf dem die folgenden Werte
gültig sind. Legen Sie keinen Rechnernamen fest, ist
der Eintrag auf allen Rechnern gültig. Dadurch
gehen Sie vielen Problemen aus dem Weg.Der Name des Benutzerkontos, der zu dieser Netzgruppe
gehört.Die NIS-Domäne für das Benutzerkonto. Sie
können Benutzerkonten von anderen NIS-Domänen in
Ihre Netzgruppe importieren, wenn Sie mehrere
NIS-Domänen verwalten.Jedes Feld kann Wildcards enthalten. Die Einzelheiten
entnehmen Sie bitte &man.netgroup.5;.NetzgruppenNetzgruppennamen sollten nicht länger als 8 Zeichen
sein, vor allem dann, wenn Sie Rechner mit verschiedenen
Betriebssystemen in Ihrer NIS-Domäne haben. Es wird
zwischen Groß- und Kleinschreibung unterschieden.
Die Verwendung von Großbuchstaben für
Netzgruppennamen ermöglicht eine leichte Unterscheidung
zwischen Benutzern, Rechnern und Netzgruppen.Einige NIS-Clients (dies gilt nicht für FreeBSD)
können keine Netzgruppen mit einer großen Anzahl
von Einträgen verwalten. Einige ältere Versionen
von &sunos; haben beispielsweise Probleme, wenn Netzgruppen
mehr als fünfzehn Einträge
enthalten. Sie können dieses Problem umgehen, indem Sie
mehrere Subnetzgruppen mit weniger als fünfzehn Benutzern
anlegen und diese Subnetzgruppen wiederum in einer Netzgruppe
zusammenfassen:BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe31,domain) (,joe32,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3Sie können diesen Vorgang wiederholen, wenn Sie mehr
als 255 Benutzer in einer einzigen Netzgruppe benötigen.
Das Aktivieren und Verteilen Ihre neuen NIS-Map ist
einfach:ellington&prompt.root; cd /var/yp
ellington&prompt.root; makeDadurch werden die NIS-Maps netgroup,
netgroup.byhost und
netgroup.byuser erzeugt. Prüfen Sie
die Verfügbarkeit Ihrer neuen NIS-Maps mit &man.ypcat.1;.
ellington&prompt.user; ypcat -k netgroup
ellington&prompt.user; ypcat -k netgroup.byhost
ellington&prompt.user; ypcat -k netgroup.byuserDie Ausgabe des ersten Befehls gibt den Inhalt von
/var/yp/netgroup wieder. Der zweite Befehl
erzeugt nur dann eine Ausgabe, wenn Sie rechnerspezifische
Netzgruppen erzeugt haben. Der dritte Befehl gibt die
Netzgruppen nach Benutzern sortiert aus.Die Einrichtung der Clients ist einfach. Sie müssen
lediglich auf dem Server war
&man.vipw.8; aufrufen und die Zeile+:::::::::durch+@IT_EMP:::::::::ersetzen.Ab sofort werden nur noch die Daten der in der Netzgruppe
IT_EMP vorhandenen Benutzer in die
Passwortdatenbank von war importiert.
Nur diese Benutzer dürfen sich am Server anmelden.Unglücklicherweise gilt diese Einschränkung auch
für die ~-Funktion der Shell und
für alle Routinen, die auf Benutzernamen und numerische
Benutzer-IDs zugreifen. Oder anders formuliert,
cd ~user ist nicht
möglich, ls -l zeigt die numerische
Benutzer-ID statt dem Benutzernamen und
find . -user joe -print erzeugt die
Fehlermeldung No such user. Um dieses
Problem zu beheben, müssen Sie alle Benutzereinträge
importieren, ohne ihnen jedoch zu erlauben, sich an
Ihrem Server anzumelden.Dazu fügen Sie eine weitere Zeile in
/etc/master.passwd ein. Diese Zeile sollte
ähnlich der folgenden aussehen:+:::::::::/sbin/nologin, was in etwa
Importiere alle Einträge, aber ersetze die Shell in
den importierten Einträgen durch
/sbin/nologin entspricht. Sie
können jedes Feld dieses Eintrages ersetzen, indem Sie
einen Standardwert in /etc/master.passwd
eintragen.Stellen Sie sicher, dass die Zeile
+:::::::::/sbin/nologinnach der Zeile
+@IT_EMP::::::::: eingetragen ist. Sonst
haben alle via NIS importierten Benutzerkonten
/sbin/nologin als Loginshell.Danach müssen Sie nur mehr eine einzige NIS-Map
ändern, wenn ein neuer Mitarbeiter berücksichtigt
werden muss. Für weniger wichtige Server gehen Sie analog
vor, indem Sie den alten Eintrag +:::::::::
in den lokalen Versionen von
/etc/master.passwd durch folgende
Einträge ersetzen:+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologinDie entsprechenden Zeilen für normale Arbeitsplätze
lauten:+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologinAb jetzt wäre alles wunderbar, allerdings ändert
sich kurz darauf die Firmenpolitik: Die IT-Abteilung beginnt
damit, externe Mitarbeiter zu beschäftigen. Externe
dürfen sich an normalen Arbeitsplätzen sowie an den
weniger wichtigen Servern anmelden. Die IT-Lehrlinge
dürfen sich nun auch an den Hauptservern anmelden. Sie
legen also die neue Netzgruppe IT_INTERN an,
weisen Ihr die neuen IT-Externen als Benutzer zu und beginnen
damit, die Konfiguration auf jedem einzelnen Rechner zu
ändern ... Halt. Sie haben gerade die alte Regel
Fehler in der zentralisierten Planung führen zu
globaler Verwirrung. bestätigt.Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen
zu bilden, lassen sich solche Situationen leicht vermeiden.
Eine Möglichkeit ist die Erzeugung rollenbasierter
Netzgruppen. Sie könnten eine Netzgruppe
BIGSRV erzeugen, um den Zugang zu
den wichtigsten Servern zu beschränken, eine weitere
Gruppe SMALLSRV für die weniger
wichtigen Server und eine dritte Netzgruppe
USERBOX für die normalen
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
Die Einträge der Netzgruppen in der NIS-Map sollten
ähnlich den folgenden aussehen:BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERSDiese Methode funktioniert besonders gut, wenn Sie
Rechner in Gruppen mit identischen Beschränkungen einteilen
können. Unglücklicherweise ist dies die Ausnahme und
nicht die Regel. Meistens werden Sie die Möglichkeit zur
rechnerspezischen Zugangsbeschränkung benötigen.
Rechnerspezifische Netzgruppen sind die zweite
Möglichkeit, um mit den oben beschriebenen Änderungen
umzugehen. In diesem Szenario enthält
/etc/master.passwd auf jedem Rechner zwei
mit + beginnende Zeilen. Die erste Zeile
legt die Netzgruppe mit den Benutzern fest, die sich auf diesem
Rechner anmelden dürfen. Die zweite Zeile weist allen
anderen Benutzern /sbin/nologin als Shell
zu. Verwenden Sie auch hier (analog zu den Netzgruppen)
Großbuchstaben für die Rechnernamen. Die Zeilen
sollten also ähnlich den folgenden aussehen:+@BOXNAME:::::::::
+:::::::::/sbin/nologinWenn Sie dies für alle Rechner erledigt haben, werden
Sie die lokalen Versionen von
/etc/master.passwd nie mehr verändern
müssen. Alle weiteren Änderungen geschehen über
die NIS-Maps. Nachfolgend ein Beispiel für eine
mögliche Netzgruppen-Map, die durch einige Besonderheiten
erweitert wurde:# Define groups of users first
IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
DEPT2 (,golf,test-domain) (,hotel,test-domain)
DEPT3 (,india,test-domain) (,juliet,test-domain)
ITINTERN (,kilo,test-domain) (,lima,test-domain)
D_INTERNS (,able,test-domain) (,baker,test-domain)
#
# Now, define some groups based on roles
USERS DEPT1 DEPT2 DEPT3
BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS
#
# And a groups for a special tasks
# Allow echo and golf to access our anti-virus-machine
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
#
# machine-based netgroups
# Our main servers
WAR BIGSRV
FAMINE BIGSRV
# User india needs access to this server
POLLUTION BIGSRV (,india,test-domain)
#
# This one is really important and needs more access restrictions
DEATH IT_EMP
#
# The anti-virus-machine mentioned above
ONE SECURITY
#
# Restrict a machine to a single user
TWO (,hotel,test-domain)
# [...more groups to follow]
Wenn Sie eine Datenbank verwenden, um Ihre Benutzerkonten zu
verwalten, sollten Sie den ersten Teil der NIS-Map mit Ihren
Datenbanktools erstellen können. Auf diese Weise haben
neue Benutzer automatisch Zugriff auf die Rechner.Eine letzte Warnung: Es ist nicht immer ratsam,
rechnerbasierte Netzgruppen zu verwenden. Wenn Sie Dutzende
oder gar Hunderte identische Rechner einrichten müssen,
sollten Sie rollenbasierte Netzgruppen verwenden, um die
Grösse der NISs-Maps in Grenzen zu halten.Weitere wichtige PunkteNachdem Sie Ihre NIS-Umgebung eingerichtet haben,
müssen Sie einige Dinge anders als bisher erledigen.Jedes Mal, wenn Sie einen neuen Benutzer anlegen wollen,
tun Sie dies ausschließlich am
NIS-Masterserver. Außerdem
müssen Sie anschließend die
NIS-Maps neu erzeugen. Wenn Sie diesen Punkt vergessen,
kann sich der neue Benutzer nur am
NIS-Masterserver anmelden. Wenn Sie also den neuen Benutzer
jsmith anlegen, gehen Sie
folgerndermassen vor:&prompt.root; pw useradd jsmith
&prompt.root; cd /var/yp
&prompt.root; make test-domainStatt pw useradd jsmith könnten
Sie auch adduser jsmith verwenden.Tragen Sie die Administratorkonten nicht
in die NIS-Maps ein. Administratorkonten und
Passwörter dürfen nicht auf Rechnern verbreitet
werden, auf denen sich Benutzer anmelden können, die
auf diese Konten keine Zugriff haben sollen.Sichern Sie die NIS-Master- und Slaveserver
und minimieren Sie die Ausfallzeiten. Wenn
diese Rechner gehackt oder einfach nur ausgeschaltet werden,
haben viele Leute keinen Netzwerkzugriff mehr.Dies ist die größte Schwäche
jeder zentralen Verwaltung. Wenn Sie Ihre NIS-Server nicht
schützen, werden Sie viele verärgerte Anwender
haben.Kompatibilität zu NIS v1NISKompatibilität zu NIS v1ypserv unterstützt NIS v1
unter FreeBSD nur eingeschränkt. Die NIS-Implementierung
von FreeBSD verwendet nur NIS v2, andere Implementierungen
unterstützen aus Gründen der
Abwärtskompatibilität mit älteren Systemen auch
NIS v1. Die mit diesen Systemen gelieferten
ypbind-Daemonen versuchen, sich an
einen NIS-v1-Server zu binden (Dies selbst dann, wenn sie ihn
nie benötigen. Außerdem versuchen Sie auch dann,
einen v1-Server zu erreichen, wenn Sie zuvor eine Antwort von
einem v2-Server erhalten.). Während normale Clientaufrufe
unter FreeBSD unterstützt werden, sind Anforderungen zum
Transfer von v1-Maps nicht möglich. Daher kann FreeBSD
nicht als Client oder Server verwendet werden, wenn ein
NIS-Server vorhanden ist, der nur NIS v1 unterstützt.
Glücklicherweise sollte es heute keine Server mehr geben,
die nur NIS v1 unterstützen.NIS-Server, die auch als NIS-Clients arbeitenWenn Sie ypserv in einer
Multi-Serverdomäne verwenden, in der NIS-Server
gleichzeitig als NIS-Clients arbeiten, ist es eine gute Idee,
diese Server zu zwingen, sich an sich selbst zu binden. Damit
wird verhindert, dass Bindeanforderungen gesendet werden und
sich die Server gegenseitig binden. Sonst könnten seltsame
Fehler auftreten, wenn ein Server ausfällt, auf den andere
Server angewiesen sind. Letztlich werden alle Clients einen
Timeout melden, und versuchen, sich an andere Server zu binden.
Die dadurch entstehende Verzögerung kann beträchtlich
sein. Außerdem kann der Fehler erneut auftreten, da sich
die Server wiederum aneinander binden könnten.Sie können einen Rechner durch die Verwendung von
ypbind sowie der Option
zwingen, sich an einen bestimmten Server zu binden. Um diesen
Vorgang zu automatisieren, können Sie folgende Zeilen in
/etc/rc.conf einfügen:nis_client_enable="YES" # run client stuff as well
nis_client_flags="-S NIS domain,server"Lesen Sie &man.ypbind.8;, wenn Sie weitere Informationen
benötigen.PasswortformateNISPasswortformateUnterschiedliche Passwortformate sind das Hauptproblem,
das beim Einrichten eines NIS-Servers auftreten kann.
Wenn der NIS-Server mit DES verschlüsselte Passwörter
verwendet, werden nur Clients unterstützt, die ebenfalls
DES benutzen. Wenn sich auf Ihrem Netzwerk beispielsweise
&solaris; NIS-Clients befinden, müssen die Passwörter
mit DES verschlüsselt werden.Welches Format die Server und Clients verwenden,
steht in /etc/login.conf. Wenn ein
System Passwörter mit DES verschlüsselt,
enthält die default-Klasse einen
Eintrag wie den folgenden:default:\
:passwd_format=des:\
:copyright=/etc/COPYRIGHT:\
[weitere Einträge]Mögliche Werte für
passwd_format sind unter anderem
blf und md5 (mit
Blowfish und MD5 verschlüsselte Passwörter).Wenn die Datei /etc/login.conf
geändert wird, muss die Login-Capability Datenbank
neu erstellt werden. Geben Sie dazu als
root den folgenden Befehl ein:&prompt.root; cap_mkdb /etc/login.confDas Format der schon in
/etc/master.passwd befindlichen
Passwörter wird erst aktualisiert, wenn ein Benutzer
sein Passwort ändert, nachdem
die Datenbank neu erstellt wurde.Damit die Passwörter auch im gewählten
Format abgespeichert werden, muss mit
crypt_default in der Datei
/etc/auth.conf die richtige
Priorität der Formate eingestellt werden. Das
gewählte Format sollte als Erstes in der Liste
stehen. Sollen die Passwörter mit DES verschlüsselt
werden, verwenden Sie den folgenden Eintrag:crypt_default = des blf md5Wenn Sie alle &os; NIS-Server und NIS-Clients entsprechend
den obigen Schritten eingestellt haben, wird im ganzen
Netzwerk dasselbe Passwortformat verwendet. Falls Sie
Probleme mit der Authentifizierung eines NIS-Clients
haben, kontrollieren Sie die verwendeten Passwortformate.
In einer heterogenen Umgebung werden Sie DES benutzen
müssen, da dies der meist unterstützte Standard
ist.GregSutterGeschrieben von Automatische Netzwerkkonfiguration mit DHCPWas ist DHCP?Dynamic Host Configuration ProtocolDHCPInternet Software Consortium (ISC)Über DHCP, das Dynamic Host Configuration Protocol,
kann sich ein System mit einem Netzwerk verbinden und die
für die Kommunikation mit diesem Netzwerk nötigen
Informationen beziehen. &os;-Versionen vor 6.0 verwenden
die DHCP-Client-Implementierung (&man.dhclient.8;) von ISC
(Internet Software Consortium). Ab 6.0 wird der von
OpenBSD 3.7 stammende dhclient
zum Einsatz kommen. Die Informationen in diesem Abschnitt
beziehen sich daher sowohl auf den dhclient
von ISC als auch auf den von OpenBSD. Als DHCP-Server wird
in beiden Fällen der DHCP-Server der ISC-Distribution
verwendet.ÜbersichtDieser Abschnitt beschreibt sowohl die Clientseite des
ISC- als auch des OpenBSD-Clients sowie die
Serverseite des DHCP-Systems von ISC. Das Clientprogramm
dhclient ist in FreeBSD integriert, das
Serverprogramm kann über den Port
net/isc-dhcp3-server
installiert werden. Weiter Informationen finden Sie in
&man.dhclient.8;, &man.dhcp-options.5; sowie
&man.dhclient.conf.5;.Wie funktioniert DHCP?UDPDer DHCP-Client dhclient beginnt von
einem Clientrechner aus über den UDP-Port 68
Konfigurationsinformationen anzufordern. Der Server antwortet
auf dem UDP-Port 67, indem er dem Client eine IP-Adresse
zuweist und ihm weitere wichtige Informationen über das
Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese
Informationen werden als
DHCP-Lease bezeichnet und
sind nur für eine bestimmte Zeit, die vom Administrator des
DHCP-Servers vorgegeben wird, gültig. Dadurch fallen
verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk
verbunden sind, automatisch an den Server zurück.DHCP-Clients können sehr viele Informationen von einem
DHCP-Server erhalten. Eine ausführliche Liste finden Sie
in &man.dhcp-options.5;.Integration in FreeBSDIn Abhängigkeit von der eingesetzten &os;-Version wird
entweder der ISC-DHCP-Client oder der DHCP-Client von OpenBSD
in FreeBSD integriert. Sowohl während der Installation als
auch im Basissystem steht der DHCP-Client zur Verfügung.
In Netzen mit DHCP-Servern wird dadurch die Konfiguration von
Systemen erheblich vereinfacht. dhclient
ist seit der Version 3.2 in &os; enthalten.sysinstallDHCP wird von sysinstall
unterstützt. Wenn Sie eine Netzwerkkarte mit
sysinstall konfigurieren, lautet
die zweite Frage Do you want to try DHCP configuration
of the interface?. Wenn Sie diese Frage bejahen, wird
dhclient aufgerufen, und die Netzkarte wird
automatisch eingerichtet.Um DHCP beim Systemstart zu aktivieren, müssen Sie zwei
Dinge erledigen:DHCPAnforderungenStellen Sie sicher, dass bpf in
Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile
device bpf
in Ihre Kernelkonfigurationsdatei ein und erzeugen einen
neuen Kernel. Weitere Informationen zur Kernelkonfiguration
finden Sie in des Handbuchs.
Das Gerät bpf ist im
GENERIC-Kernel bereits enthalten.
Für die Nutzung von DHCP muss also kein angepasster
Kernel erzeugt werden.Wenn Sie um die Sicherheit Ihres Systems besorgt
sind, sollten Sie wissen, dass
bpf auch zur Ausführung
von Paketsniffern erforderlich ist (obwohl diese dennoch
als root ausgeführt werden
müssen). bpfmuss vorhanden sein, damit DHCP
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
Sie bpf aus Ihrem Kernel
entfernen, wenn Sie DHCP nicht verwenden.Fügen Sie folgende Zeile in
/etc/rc.conf ein:ifconfig_fxp0="DHCP"Ersetzen Sie fxp0 durch den
Eintrag für die Netzkarte, die Sie dynamisch
einrichten wollen. Lesen Sie dazu auch
.Wenn Sie dhclient an einem anderen
Ort installiert haben, oder zusätzliche Flags an
dhclient übergeben wollen,
fügen Sie auch folgende (entsprechend angepasste)
Zeilen ein:dhcp_program="/sbin/dhclient"
dhcp_flags=""DHCPServerDer DHCP-Server dhcpd ist als
Teil des Ports
net/isc-dhcp3-server
verfügbar. Dieser Port enthält die komplette
ISC-DHCP-Distribution, inklusive der Dokumentation.DateienDHCPKonfigurationsdateien/etc/dhclient.confdhclient benötigt die
Konfigurationsdatei /etc/dhclient.conf.
Diese Datei enthält normalerweise nur Kommentare, da
die Vorgabewerte zumeist ausreichend sind. Lesen Sie dazu
auch &man.dhclient.conf.5;./sbin/dhclientdhclient ist statisch gelinkt und
befindet sich in /sbin. Weitere
Informationen finden Sie in &man.dhclient.8;./sbin/dhclient-scriptBei dhclient-script handelt es sich
um das FreeBSD-spezifische Konfigurationsskript des
DHCP-Clients. Es wird in &man.dhclient-script.8;
beschrieben und kann meist unverändert übernommen
werden./var/db/dhclient.leasesDer DHCP-Client verfügt über eine Datenbank,
die alle derzeit gültigen Leases enthält und als
Logdatei erzeugt wird. Weitere Informationen finden Sie in
&man.dhclient.8;.Weitere InformationenDas DHCP-Protokoll wird vollständig im
RFC 2131
beschrieben. Eine weitere, lehrreiche Informationsquelle
existiert unter
.Einen DHCP-Server installieren und einrichtenÜbersichtDieser Abschnitt beschreibt die Einrichtung eines
FreeBSD-Systems als DHCP-Server. Dazu wird die
DHCP-Implementation von ISC (Internet Software Consortium)
verwendet.Der DHCP-Server ist nicht im Basissystem von FreeBSD
enthalten, daher müssen Sie als Erstes den Port
net/isc-dhcp3-server
installieren. Lesen Sie , wenn Sie
weitere Informationen zur Ports-Sammlung benötigen.
Den DHCP-Server installierenDHCPinstallierenStellen Sie sicher, dass &man.bpf.4; in Ihren Kernel
kompiliert ist. Dazu fügen Sie die Zeile
device bpf
Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen
Kernel. Die Kernelkonfiguration wird in
beschrieben.Das Gerät bpf ist im
GENERIC-Kernel bereits enthalten.
Für die Nutzung von DHCP muss also kein angepasster
Kernel erzeugt werden.Wenn Sie um die Sicherheit Ihres Systems besorgt
sind, sollten Sie wissen, dass
bpf auch zur Ausführung
von Paketsniffern erforderlich ist (obwohl diese dennoch
als root ausgeführt werden
müssen). bpfmuss vorhanden sein, damit DHCP
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
Sie bpf aus Ihrem Kernel
entfernen, wenn Sie DHCP nicht verwenden.Danach müssen Sie die vom Port
net/isc-dhcp3-server
erzeugte Vorlage für dhcpd.conf
anpassen. Die bei der Installation erzeugte Datei
/usr/local/etc/dhcpd.conf.sample
sollten Sie nach
/usr/local/etc/dhcpd.conf kopieren,
bevor Sie Veränderungen vornehmen.Den DHCP-Server einrichtenDHCPdhcpd.confdhcpd.conf besteht aus Festlegungen
zu Subnetzen und Rechnern und lässt sich am besten an
einem Beispiel erklären:option domain-name "example.com";
option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
}
host mailhost {
hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}Diese Option beschreibt die Domäne, die den
Clients als Standardsuchdomäne zugewiesen wird.
Weitere Informationen finden Sie in man.resolv.conf.5;.
Diese Option legt eine, durch Kommata getrennte
Liste von DNS-Servern fest, die von den Clients
verwendet werden sollen.Die den Clients zugewiesene Netzmaske.Ein Client kann eine Lease einer bestimmten Dauer
anfordern. Geschieht dies nicht, weist der Server eine
Lease mit einer vorgegebenen Ablaufdauer (in Sekunden)
zu.Die maximale Zeitdauer, für die der Server
Konfigurationsinformationen vergibt. Sollte ein Client
eine längere Zeitspanne anfordern, wird dennoch
nur der Wert max-lease-time in
Sekunden zugewiesen.Diese Option legt fest, ob der DHCP-Server eine
DNS-Aktualisierung versuchen soll, wenn
Konfigurationsdateien vergeben oder zurückgezogen
werden. In der ISC-Implementation
muss diese Option gesetzt sein.
Dadurch werden die IP-Adressen festgelegt, die den
Clients zugewiesen werden können. IP-Adressen
zwischen diesen Grenzen sowie die einschließenden
Adressen werden den Clients zugewiesen.Legt das Standard-Gateway fest, das den Clients
zugewiesen wird.Die (Hardware-)MAC-Adresse eines Rechners (durch die
der DHCP-Server den Client erkennt, der eine Anforderung
an ihn stellt).Einem Rechner soll immer die gleiche IP-Adresse
zugewiesen werden. Beachten Sie, dass hier auch ein
Rechnername gültig ist, da der DHCP-Server den
Rechnernamen auflöst, bevor er die
Konfigurationsinformationen zuweist.Nachdem Sie dhcpd.conf fertig
konfiguriert haben, sollten Sie den DHCP-Server aktivieren,
indem Sie folgende Zeilen in
/etc/rc.conf aufnehmen:dhcpd_enable="YES"
dhcpd_ifaces="dc0"Dabei müssen Sie den Geräteeintrag
dc0 durch die Gerätedatei (mehrere
Gerätedateien müssen durch Leerzeichen getrennt
werden) ersetzen, die Ihr DHCP-Server auf Anfragen von
DHCP-Clients hin überwachen soll.Danach können Sie den Server durch Eingabe des
folgenden Befehls starten:&prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh startSollten Sie die Konfiguration Ihres Servers einmal
verändern müssen, reicht es nicht aus, ein
SIGHUP-Signal an
dhcpd zu senden, weil damit die
Konfiguration nicht erneut geladen wird
(im Gegensatz zu den meisten Daemonen). Sie müssen
den Prozess vielmehr mit dem Signal
SIGTERM stoppen, um ihn
anschließend neu zu starten.DateienServerKonfigurationsdateien/usr/local/sbin/dhcpddhcpd ist statisch
gelinkt und befindet sich in
/usr/local/sbin. Lesen Sie auch die
mit dem Port installierte Hilfeseite &man.dhcpd.8;, wenn
Sie weitere Informationen zu
dhcpd benötigen./usr/local/etc/dhcpd.confdhcpd benötigt die
Konfigurationsdatei
/usr/local/etc/dhcpd.conf, damit
der Server den Clients seine Dienste anbieten kann.
Diese Datei muss alle Informationen enthalten, die an
die Clients weitergegeben werden soll. Außerdem
sind hier Informationen zur Konfiguration des Servers
enthalten. Die mit dem Port installierte Hilfeseite
&man.dhcpd.conf.5; enthält weitere Informationen.
/var/db/dhcpd.leasesDer DHCP-Server hat eine Datenbank, die alle
vergebenen Leases enthält. Diese wird als Logdatei
erzeugt. Weitere Informationen finden Sie in der vom
Port installierten Hilfeseite &man.dhcpd.leases.5;./usr/local/sbin/dhcrelaydhcrelay wird in
komplexen Umgebungen verwendet, in denen ein DHCP-Server
eine Anfrage eines Clients an einen DHCP-Server in einem
separaten Netzwerk weiterleitet. Wenn Sie diese
Funktion benötigen, müssen Sie den Port
net/isc-dhcp3-relay
installieren. Weitere Informationen zu diesem Thema
finden Sie in &man.dhcrelay.8;.ChernLeeBeigetragen von TomRhodesDanielGerzoDNS – Domain Name ServiceÜberblickBINDDNS ist das für die Umwandlung von Rechnernamen in
IP-Adressen zuständige Protokoll. &os; verwendet dazu
BIND (Berkeley Internet Name Domain), die am häufigsten
verwendete Implementierung von DNS).
Eine Anfrage nach www.FreeBSD.org gibt die
IP-Adresse des &os;-Webservers, eine Anfrage
nach ftp.FreeBSD.org die
IP-Adresse des entsprechenden
FTP-Servers zurück. Der umgekehrte Weg
ist ebenso möglich, eine IP-Adresse
kann also auch in ihren Rechnernamen aufgelöst werden. Um
eine DNS-Abfrage durchzuführen, muss auf
dem jeweiligen Rechner kein Nameserver installiert sein.&os; verwendet derzeit in der Voreinstellung
BIND9 als
DNS-Serversoftware. Unsere Installation
bietet Ihnen eine erhöhte Sicherheit, ein neues
Dateisystemlayout sowie eine automatisierte
&man.chroot.8;-Konfiguration.DNSIm Internet wird DNS durch ein komplexes
System von autoritativen Root-Nameservern,
Top Level Domain-Servern (TLD) sowie anderen
kleineren Nameservern verwaltet, die individuelle Rechnerinformationen
speichern und untereinander abgleichen.Derzeit wird BIND vom Internet Software Consortium
() verwaltet.BegriffsbestimmungenUm dieses Dokument besser verstehen zu können,
müssen einige DNS-spezifische
Begriffe genauer definiert werden.ResolverReverse-DNSRoot-ZoneBegriffBedeutungForward-DNSRechnernamen in IP-Adressen
umwandeln.Origin (Ursprung)Die in einer bestimmten Zonendatei beschriebene
Domäne.named, BIND,
NameserverGebräuchliche Namen für das unter &os;
verwendete BIND-Nameserverpaket.ResolverEin Systemprozess, durch den ein Rechner
Zoneninformationen von einem Nameserver anfordert.Reverse-DNSDas Gegenteil von Forward-DNS;
die Umwandlung von IP-Adressen in
RechnernamenRoot-ZoneDer Beginn der Internet-Zonenhierarchie. Alle
Zonen befinden sich innerhalb der Root-Zone. Dies ist
analog zu einem Dateisystem, in dem sich alle Dateien
und Verzeichnisse innerhalb des Wurzelverzeichnisses
befinden.ZoneEine individuelle Domäne, Unterdomäne,
oder ein Teil von DNS, der von der
gleichen Autorität verwaltet wird.ZonenBeispieleEs folgen nun einige Zonenbeispiele:. ist die Root-Zone.org. ist eine Top level Domain
(TLD) innerhalb der Root-Zone.example.org.
ist eine Zone innerhalb der
org.-TLD.1.168.192.in-addr.arpa. ist die Zone mit
allen IP-Adressen des 192.168.1.*-IP-Adressraums.Wie man an diesen Beispielen erkennen kann, befindet sich
der spezifischere Teil eines Rechnernamens auf der linken Seite
der Adresse. example.org.
beschreibt einen Rechner also genauer als org.,
während org. genauer als die Root-Zone
ist. Jeder Teil des Rechnernamens hat Ähnlichkeiten mit
einem Dateisystem, in dem etwa /dev dem
Wurzelverzeichnis untergeordnet ist.Gründe für die Verwendung eines
NameserversEs gibt zwei Arten von Nameservern: Autoritative Nameserver
sowie zwischenspeichernde (cachende) Nameserver.Ein autoritativer Nameserver ist notwendig, wennSie anderen verbindliche
DNS-Auskünfte erteilen wollen.eine Domain, beispielsweise
example.org, registriert
wird, und den zu dieser Domain gehörenden Rechnern
IP-Adressen zugewiesen werden
müssen.ein IP-Adressblock
reverse-DNS-Einträge benötigt,
um IP-Adressen in Rechnernamen
auflösen zu können.ein Backup-Nameserver (auch Slaveserver genannt) oder
ein zweiter Nameserver auf Anfragen antworten soll.Ein cachender Nameserver ist notwendig, weilein lokaler DNS-Server Daten zwischenspeichern und daher
schneller auf Anfragen reagieren kann als ein entfernter
Server.Wird nach www.FreeBSD.org
gesucht, leitet der Resolver diese Anfrage an den Nameserver des
ISPs weiter und nimmt danach das Ergebnis der
Abfrage entgegen. Existiert ein lokaler, zwischenspeichernder
DNS-Server, muss dieser die Anfrage nur einmal
nach außen weitergeben. Für alle weiteren Anfragen
ist dies nicht mehr nötig, da diese Information nun lokal
gespeichert ist.Wie funktioniert DNS?Unter &os; wird der BIND-Daemon als
named bezeichnet.DateiBeschreibungnamedDer BIND-Daemon.&man.rndc.8;Das Steuerprogramm für
named./etc/namedbDas Verzeichnis, in dem sich die Zoneninformationen
für BIND befinden./etc/namedb/named.confDie Konfigurationsdatei für
named.Je nachdem, wie eine Zone auf dem Server konfiguriert wurde,
finden sich die zur Zone gehörendenden Dateien in den
Unterverzeichnissen master, slave, oder dynamic des Verzeichnisses
/etc/namedb. Diese
Dateien enthalten die DNS-Informationen,
die der Nameserver für die Beantwortung von Anfragen
benötigt.BIND startenBINDStartDa BIND automatisch installiert wird, ist die Konfiguration
relativ einfach.In der Voreinstellung wird ein in einer &man.chroot.8;-Umgebung
betriebener named-Server eingerichtet.
Um den Server manuell zu starten, verwenden Sie den folgenden
Befehl:&prompt.root; /etc/rc.d/named forcestartUm den named-Daemon beim
Systemstart automatisch zu starten, fügen Sie folgende
Zeile in /etc/rc.conf ein:named_enable="YES"/etc/namedb/named.conf bietet zahlreiche
Konfigurationsoptionen, die in diesem Dokument nicht alle
beschrieben werden können. Wollen Sie die Startoptionen
von named unter &os; anpassen, sollten
Sie sich die
named_*-Flags in der
Datei /etc/defaults/rc.conf sowie die
Manualpage zu &man.rc.conf.5; näher ansehen. Zusätzliche
Informationen bietet Ihnen auch der Abschnitt des Handbuchs.KonfigurationsdateienBINDKonfigurationsdateienDie Konfigurationsdateien von
named finden sich unter
/etc/namedb und müssen
in der Regel an Ihre Bedürfnisse angepasst werden. Es sei
denn, Sie benötigen nur einen einfachen Resolver. Ein
Großteil der Konfigurationsarbeiten erfolgt dabei in
diesem Verzeichnis.make-localhost verwendenUm eine Master-Zone für den lokalen Rechner zu
erstellen, wechseln Sie in das Verzeichnis
/etc/namedb und
führen dort den folgenden Befehl aus:&prompt.root; sh make-localhostWenn es keine Probleme gab, sollte nun eine neue Datei
im Unterverzeichnis master vorhanden sein. Diese
heißt entweder localhost.rev
(für den lokalen Domain-Namen) oder
localhost-v6.rev (wenn Sie
IPv6 einsetzen). Als
Standardkonfigurationsdatei wird dabei
named.conf verwendet./etc/namedb/named.conf// $FreeBSD$
//
// Refer to the named.conf(5) and named(8) man pages, and the documentation
// in /usr/share/doc/bind9 for more details.
//
// If you are going to set up an authoritative server, make sure you
// understand the hairy details of how DNS works. Even with
// simple mistakes, you can break connectivity for affected parties,
// or cause huge amounts of useless Internet traffic.
options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
// If named is being used only as a local resolver, this is a safe default.
// For named to be accessible to the network, comment this option, specify
// the proper IP address, or delete this option.
listen-on { 127.0.0.1; };
// If you have IPv6 enabled on this system, uncomment this option for
// use as a local resolver. To give access to the network, specify
// an IPv6 address, or the keyword "any".
// listen-on-v6 { ::1; };
// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
// forward only;
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the
Internet.
/*
forwarders {
127.0.0.1;
};
*/Um vom Cache Ihres Internetproviders zu profitieren,
können hier forwarders aktiviert
werden. Normalerweise sucht ein Nameserver das Internet
rekursiv ab, bis er die gesuchte Antwort findet. Durch
diese Option wird stets der Nameserver Ihres
Internetproviders zuerst abgefragt, um von dessen
Cache zu profitieren. Wenn es sich um einen schnellen,
viel benutzten Nameserver handelt, kann dies zu einer
Geschwindigkeitssteigerung führen.127.0.0.1 funktioniert
hier nicht. Ändern Sie diese
Adresse in einen Nameserver Ihres Einwahlproviders. /*
* If there is a firewall between you and name servers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND versions 8 and later
* use a pseudo-random unprivileged UDP port by default.
*/
// query-source address * port 53;
};
// If you enable a local name server, don't forget to enter 127.0.0.1
// first in your /etc/resolv.conf so this server will be queried.
// Also, make sure to enable it in /etc/rc.conf.
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "master/localhost.rev";
};
// RFC 3152
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
type master;
file "master/localhost-v6.rev";
};
// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example slave zone config entries. It can be convenient to become
// a slave at least for the zone your own domain is in. Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to set up a primary zone, make sure you fully
// understand how DNS and BIND works. There are sometimes
// non-obvious pitfalls. Setting up a slave zone is simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
/* An example master zone
zone "example.net" {
type master;
file "master/example.net";
};
*/
/* An example dynamic zone
key "exampleorgkey" {
algorithm hmac-md5;
secret "sf87HJqjkqh8ac87a02lla==";
};
zone "example.org" {
type master;
allow-update {
key "exampleorgkey";
};
file "dynamic/example.org";
};
*/
/* Examples of forward and reverse slave zones
zone "example.com" {
type slave;
file "slave/example.com";
masters {
192.168.1.1;
};
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "slave/1.168.192.in-addr.arpa";
masters {
192.168.1.1;
};
};
*/ Hierbei handelt es sich um Slave-Einträge für
eine Reverse- und Forward-DNS-Zone, die in der Datei
named.conf definiert sind.Für jede neue Zone muss ein zusätzlicher Eintrag
in named.conf erstellt werden.Ein einfacher Eintrag für eine Zone
example.org könnte
beispielsweise so aussehen:zone "example.org" {
type master;
file "master/example.org";
}; Die Option legt fest, dass es sich
um eine Master-Zone handelt, deren Zoneninformationen sich in
der Datei /etc/namedb/master/example.org
befinden. Diese Datei wird durch die Option
festgelegt.zone "example.org" {
type slave;
file "slave/example.org";
}; Hier handelt es sich um einen Slaveserver, der seine
Informationen vom Masterserver der betreffenden Zone bezieht
und diese in der angegebenen Datei speichert. Wenn der
Masterserver nicht erreichbar ist, verfügt der
Slaveserver über die transferierten Zoneninformationen
und kann diese an andere Rechner weitergeben.ZonendateienBINDZonendateiDie in der Datei
/etc/namedb/master/example.org definierte
Zonendatei für
example.org könnte
etwa so aussehen:
$TTL 3600 ; 1 hour
example.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
; DNS Servers
IN NS ns1.example.org.
IN NS ns2.example.org.
; MX Records
IN MX 10 mx.example.org.
IN MX 20 mail.example.org.
IN A 192.168.1.1
; Machine Names
localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5
; Aliases
www IN CNAME @Beachten Sie, dass jeder mit einem .
endende Rechnername ein exakter Rechnername ist, während
sich alles ohne einen abschließenden .
auf den Ursprung bezieht. www steht daher
für
www.Ursprung.
In unserer fiktiven Zonendatei ist
example.org. der Ursprung, daher steht
www für
www.example.org.Eine Zonendatei hat folgenden Aufbau:recordname IN recordtype valueDNSEinträgeDie am häufigsten verwendeten DNS-Einträge sind:SOAStart der ZonenautoritätNSEin autoritativer NameserverAEine RechneradresseCNAMEDer kanonische Name eines AliasMXMail ExchangerPTREin (bei Reverse-DNS verwendeter) Domain Name
Pointerexample.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 dayexample.org.Der Name der Domäne und damit der
Ursprung dieser Zonendatei.ns1.example.org.Der primäre/autoritative Nameserver
dieser Zone.admin.example.org.Die für diese Zone verantwortliche
Person. Das Zeichen @ wird dabei
ersetzt (admin@example.org wird also zu
admin.example.org).2006051501Die Seriennummer der Datei. Sie muss
stets inkrementiert werden, wenn die Zonendatei
geändert wird. Viele Administratoren bevorzugen
ein JJJJMMTTRR-Format, um die
Seriennummer festzulegen.
2006051501 steht also für
den 15.05.2006, die beiden letzten Stellen für die
erste Modifikation der Zonendatei an diesem Tag. Die
Seriennummer ist von großer Bedeutung, da
Slaveserver daran eine aktualisierte Zonendatei erkennen
können.
IN NS ns1.example.org.Ein NS-Eintrag. Jeder Nameserver, der für eine Zone
verantwortlich ist, muss über einen solchen Eintrag
verfügen.
localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5Der Eintrag A bezieht sich auf
Rechnernamen. ns1.example.org
würde also zu 192.168.1.2
aufgelöst werden.
IN A 192.168.1.1Diese Zeile weist die IP-Adresse
192.168.1.1 dem aktuellen
Ursprung, in unserem Fall also
example.org, zu.
www IN CNAME @Der Eintrag für den kanonischen Namen wird dazu
verwendet, Aliase für einen Rechner zu vergeben. Im
Beispiel ist www ein Alias für den
Master-Rechner localhost.example.org oder
192.168.1.1). Durch die Option
CNAME können Aliasnamen vergeben werden. Ein Rechnername
kann aber auch abwechselnd verschiedenen Rechnern zugewiesen
werden.MX-Eintrag
IN MX 10 mail.example.org.Die Option MX legt fest, welcher Mailserver für
eintreffende Mails der Zone verantwortlich ist.
mail.example.org ist der
Rechnername des Mailservers, der eine Priorität von 10
hat.Es können auch mehrere Mailserver mit verschiedener
Priorität (10, 20, ...) vorhanden sein. Ein Mailserver,
der eine Mail an example.org
verschicken will, verwendet zuerst den MX mit der höchsten
Priorität (das heißt den mit der niedrigsten
Prioritätsnummer), danach den mit der
nächsthöheren Priorität. Und dies solange,
bis die E-Mail zugestellt werden kann.Für (bei Reverse-DNS verwendete)
in-addr.arpa-Zonendateien wird das gleiche
Format verwendet. Der einzige Unterschied besteht in der
Verwendung der Option PTR an Stelle der Optionen A und
CNAME.
$TTL 3600
1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
3600 ) ; Minimum
IN NS ns1.example.org.
IN NS ns2.example.org.
1 IN PTR example.org.
2 IN PTR ns1.example.org.
3 IN PTR ns2.example.org.
4 IN PTR mx.example.org.
5 IN PTR mail.example.org.Durch diese Datei werden den Rechnernamen der fiktiven
Domäne IP-Adressen zugewiesen.Zwischenspeichernde (cachende) NameserverBINDZwischenspeichernde NameserverEin cachender Nameserver ist für keine Zonen
verantwortlich. Er stellt lediglich eigene Anfragen und
speichert deren Ergebnisse ab. Um einen solchen Nameserver
einzurichten, gehen Sie wie gewohnt vor, allerdings definieren
Sie keine Zonen.SicherheitObwohl BIND die am meisten verwendete (und kontrollierte)
Implementierung von DNS darstellt, werden dennoch manchmal neue
Sicherheitsprobleme entdeckt.Zwar startet &os; named
automatisch in einer &man.chroot.8;-Umgebung, es gibt aber
noch weitere Sicherheitsmechanismen, mit denen Sie potentielle
DNS-Serviceattacken erschweren
können.Es ist daher eine gute Idee, die Sicherheitshinweise von
CERT zu lesen sowie
die Mailingliste &a.security-notifications; zu abonnieren, um
sich über Sicherheitsprobleme im Zusammenhang mit dem
Internet und FreeBSD zu informieren.Tritt ein Problem auf, kann es nie schaden, die
Quellen zu aktualisieren und named
neu zu kompilieren.Weitere InformationsquellenHilfeseiten zu BIND/named:
&man.rndc.8;, &man.named.8;, &man.named.conf.5;Offizielle ISC-Seite
zu BINDOffizielles Forum zu
ISC- BIND
BIND FAQsO'Reilly
DNS and BIND 5th EditionRFC1034
- Domain Names - Concepts and FacilitiesRFC1035
- Domain Names - Implementation and SpecificationMurrayStokelyBeigetragen von Der Apache HTTP-ServerWebserverkonfigurierenApacheÜberblickEinige der weltgrößten Internetauftritte laufen
unter &os;. Die Mehrzahl der Webserver im Internet nutzt
den Apache HTTP-Server. Die
Installationspakete für den
Apache sollten auf Ihrem
Installationsmedium vorhanden sein. Wenn Sie den
Apache noch nicht installiert haben,
können Sie dies jederzeit über den Port
www/apache13 oder
- www/apache20 nachholen.
+ www/apache22 nachholen.
Nachdem der Apache erfolgreich
installiert wurde, muss er noch konfiguriert werden.Dieser Abschnitt beschreibt die Version 1.3.X des
Apache HTTP-Servers, da diese Version
unter &os; am häufigsten verwendet wird.
Apache 2.X bringt zwar viele
Verbesserungen mit sich, wird hier aber nicht beschrieben.
Sollten Sie an Apache 2.X
interessiert sein, informieren Sie sich bitte auf
.KonfigurationApacheKonfigurationsdateiDer Apache HTTP-Server wird unter
&os; primär über die Datei
/usr/local/etc/apache/httpd.conf
konfiguriert. Bei dieser Datei handelt es sich um eine typische
&unix;-Konfigurationsdatei, in der Kommentarzeilen mit einem
#-Zeichen beginnen. Eine komplette
Beschreibung aller Optionen würde den Rahmen dieses
Handbuchs sprengen, daher beschreiben wir hier nur die am
häufigsten verwendeten Optionen.ServerRoot "/usr/local"Legt das Standardwurzelverzeichnis für die
Apache-Installation fest.
Binärdateien werden in die Verzeichnisse
bin und
sbin unterhalb des
Serverwurzelverzeichnisses installiert, während sich
Konfigurationsdateien im Verzeichnis
etc/apache
befinden.ServerAdmin you@your.addressDie E-Mail-Adresse, an die Mitteilungen über
Serverprobleme geschickt werden sollen. Diese Adresse
erscheint auf vom Server erzeugten Seiten, beispielsweise
auf Fehlerseiten.ServerName www.example.comÜber die Option ServerName
können Sie einen Rechnernamen festlegen, den Ihr
Server an die Clients sendet, wenn sich dieser von
tatsächlichen Rechnernamen unterscheidet (sie
könnten etwa www statt des richtigen
Rechnernamens verwenden).DocumentRoot "/usr/local/www/data"DocumentRoot: Das Verzeichnis, in
dem Sie Ihre Dokumente ablegen. In der Voreinstellung
befinden sich alle Seiten in diesem Verzeichnis, durch
symbolische Links oder Aliase lassen sich aber auch andere
Orte festlegen.Es ist empfehlenswert, eine Sicherungskopie Ihrer
Konfigurationsdatei anzulegen, bevor Sie Änderungen
durchführen. Nachdem Sie die Konfiguration beendet
haben, können Sie den
Apache starten.Den Apache betreibenApacheStarten oder BeendenDer Apache wird, im Gegensatz zu
vielen anderen Netzwerkservern, nicht vom
inetd-Super-Server verwaltet, sondern
wird als eigenständiger Server betrieben, um die
Leistung für eintreffende HTTP-Anfragen von den Clients
(also von Internetbrowsern) zu verbessern. Gestartet, beendet
oder neu gestartet wird der Server über einen
Shellskript-Wrapper. Um den Apache
erstmals zu starten, geben Sie einfach Folgendes ein:&prompt.root; /usr/local/sbin/apachectl startWenn Sie den Server beenden wollen, geben Sie Folgendes ein:&prompt.root; /usr/local/sbin/apachectl stopWenn Sie die Konfigurationsdatei verändern, müssen
Sie den Server neu starten:&prompt.root; /usr/local/sbin/apachectl restartUm den Apache ohne den Abbruch
bestehender Verbindungen neu zu starten, geben Sie Folgendes
ein:&prompt.root; /usr/local/sbin/apachectl gracefulDiese und weitere Optionen werden in
&man.apachectl.8; beschrieben.Um den Apache beim Systemstart
zu starten, fügen Sie folgende Zeile in
/etc/rc.conf ein:apache_enable="YES"
+ Um Apache 2.2 zu starten,
+ fügen Sie hingegen folgende Zeile ein:
+
+ apache22_enable="YES"
+
Wenn Sie während des Systemstarts weitere Parameter an
den
Apache-httpd-Daemon
übergeben wollen, können Sie diese durch eine
zusätzliche Zeile in rc.conf
angeben:apache_flags=""Nachdem der Webserver gestartet ist, können Sie sich
Ihre Internetseite ansehen, indem Sie in Ihren Browser die
Adresse http://localhost/ eingeben. Die
vordefinierte Standardstartseite ist
/usr/local/www/data/index.html.Virtual HostingDer Apache unterstützt zwei
Formen des Virtual Hostings. Die
erste Möglichkeit bezeichnet man als namenbasiertes
virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients
dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es
möglich, mehrere Domains unter der gleichen IP-Adresse zu
betreiben.Damit der Apache namenbasierte
virtuelle Domains verwalten kann, fügen Sie die folgende
Zeile in httpd.conf ein:NameVirtualHost *Wenn Ihr Webserver
www.domain.tld heißt und Sie die
virtuelle Domain
www.someotherdomain.tld einrichten
wollen, ergänzen Sie httpd.conf um
folgende Einträge:<VirtualHost *>
ServerName www.domain.tld
DocumentRoot /www/domain.tld
</VirtualHost>
<VirtualHost *>
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
</VirtualHost>Ersetzen Sie dabei die Adressen sowie den Pfad zu den
Dokumenten durch Ihre eigenen Einstellungen.Ausführliche Informationen zum Einrichten von
virtuellen Domains finden Sie in der offiziellen
Apache-Dokumentation unter
.Häufig verwendete Apache-ModuleApacheModuleEs gibt viele verschiedene
Apache-Module, die den Server
um zusätzliche Funktionen erweitern. Die
FreeBSD-Ports-Sammlung ermöglicht es Ihnen, den
Apache gemeinsam mit einigen der
beliebtesten Zusatzmodule zu installieren.mod_sslWebserverVerschlüsselungSSLVerschlüsselungDas Modul mod_ssl verwendet die
OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure
Sockets Layer (SSL v2/v3) sowie Transport Layer Security
(TLS v1) starke Verschlüsselung zu ermöglichen.
Durch dieses Modul können Sie ein signiertes Zertifikat
von einer Zertifizierungsstelle anfordern, damit Sie einen
sicheren Webserver unter &os; betreiben können.Wenn Sie den Apache 1.3.X noch
nicht installiert haben, können Sie über den
Port www/apache13-modssl eine
Apache-Version installieren, in die
mod_ssl als Modul einkompiliert
wurde. Bevorzugen Sie den
Apache 2.X, installieren Sie
stattdessen den Port
- www/apache20, bei dem die
+ www/apache22, bei dem die
SSL-Unterstützung bereits in der Voreinstellung aktiviert
ist.Dynamische Webseiten mit Perl & PHPIn den vergangenen Jahren haben immer mehr Unternehmen
das Internet als Mittel für die Steigerung ihrer
Einnahmen sowie für die Erhöhung ihrer Reichweite
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
Internetinhalten. Neben einigen Unternehmen, darunter
µsoft;, die dafür proprietäre Produkte
entwickelt haben, hat auch die Open Source Community auf
diesen Umstand reagiert und unter anderem mit
mod_perl und
mod_php Möglichkeiten zur
Generierung dynamischer Internetseiten geschaffen.mod_perlmod_perlPerlDie Kombination Apache/Perl
vereinigt die Vorteile der Programmiersprache Perl und des
Apache HTTP-Servers. Durch
das Modul mod_perl ist es
möglich, vollständig in Perl geschriebene
Apache-Module zu erzeugen.
Da der Perl-Interpreter in den Server eingebettet wird,
müssen Sie weder einen externen Interpreter noch
Perl zusätzlich aufrufen.mod_perl ist in verschiedenen
Versionen erhältlich. Bevor Sie
mod_perl einsetzen,denken Sie
bitte daran, dass mod_perl 1.0
nur mit Apache 1.3 und
mod_perl 2.0 nur mit
- Apache 2 zusammenarbeitet.
+ Apache 2.X zusammenarbeitet.
mod_perl 1.0 kann über
den Port www/mod_perl,
eine statisch kompilierte Version hingegen über den
Port www/apache13-modperl
installiert werden. Für die Installation von
mod_perl 2.0 schließlich
verwenden Sie den Port www/mod_perl2.TomRhodesGeschrieben von mod_phpmod_phpPHPBei PHP, dem Hypertext Preprocessor,
handelt es sich um eine vielseitig verwendbare Skriptsprache,
die besonders für die Internetprogrammierung geeignet
ist. PHP kann in HTML eingebettet werden
und ähnelt von der Syntax her Sprachen wie C, &java; und
Perl. Das Hauptanliegen von PHP ist es, Internetprogrammierern
die rasche Erstellung von dynamisch erzeugten Internetseiten zu
ermöglichen.Damit Ihr System PHP5 unterstützt,
müssen Sie als Erstes den Apache
Webserver über den Port
lang/php5
installieren.Wenn Sie den Port lang/php5
das erste Mal installieren, werden die verfügbaren Optionen
(OPTIONS) automatisch angezeigt. Erscheint das
Konfigurationsmenü bei Ihnen nicht, so liegt dies daran,
dass Sie den Port lang/php5
schon einmal auf Ihrem System installiert hatten. Es ist aber
jederzeit möglich, dieses Menü aus dem
Ports-Verzeichnis heraus über folgenden Befehl erneut
aufzurufen:&prompt.root; make configIn diesem Konfigurationsmenü müssen Sie die
Option APACHE auswählen, damit
mod_php5 als ein vom
Apache-Webserver ladbares Modul
gebaut wird.Viele Seiten verwenden nach wie vor (beispielsweise wegen
der benötigten Kompatibilität zu bereits
vorhandenen Web-Applikationen) PHP4.
Ist dies bei Ihnen der Fall, so müssen Sie statt
mod_php5mod_php4 über den Port
lang/php4 installieren.
Der Port lang/php4
unterstützt viele der Konfigurations- und
Laufzeitoptionen von lang/php5.Dieser Port installiert und konfiguriert die Module, die
für die Unterstützung von dynamischen
PHP-Anwendungen benötigt werden.
Stellen Sie danach sicher, dass Ihre
/usr/local/etc/apache/httpd.conf die
folgenden Abschnitte enthält:LoadModule php5_module libexec/apache/libphp5.soAddModule mod_php5.c
<IfModule mod_php5.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>Nachdem dies erledigt ist, rufen Sie
apachectl auf, um das
PHP-Modul zu laden:&prompt.root; apachectl gracefulBei künftigen Upgrades von PHP
wird make config nicht mehr benötigt,
da die von Ihnen ursprünglich ausgewählten
Optionen (OPTIONS) vom
&os;-Ports-Framework automatisch gespeichert werden.Die PHP-Unterstützung von &os; ist
stark modular aufgebaut, daher verfügt eine
Basisinstallation nur über wenige Funktionen. Eine
Erweiterung um zusätzliche Funktionen ist allerdings sehr
einfach über den Port lang/php5-extensions möglich.
Der Port bietet Ihnen ein Auswahlmenü, über das Sie
verschiedene PHP-Erweiterungen installieren
können. Alternativ können Sie einzelne Erweiterungen
aber weiterhin direkt über den jeweiligen Port
installieren.Um beispielsweise die Unterstützung des
Datenbankservers MySQL in
PHP5 zu aktivieren, installieren Sie
den Port databases/php5-mysql.Nachdem Sie eine Erweiterung installiert haben,
müssen Sie den
Apache-Server neu starten, damit
die Erweiterung auch erkannt wird:&prompt.root; apachectl gracefulAb nun wird MySQL von
PHP unterstützt.MurrayStokelyBeigetragen von FTP – File Transfer ProtocolFTP-ServerÜberblickDas File Transfer Protocol (FTP) ermöglicht
auf einfache Art und Weise den Dateiaustausch mit einem
FTP-Server.
Der
FTP-Server
ftpd ist bei &os; bereits im
Basisystem enthalten. Daher sind Konfiguration und Betrieb
eines
FTP-Servers
unter FreeBSD relativ einfach.KonfigurationDer wichtigste Punkt ist hier die Entscheidung darüber,
welche Benutzer auf Ihren FTP-Server zugreifen dürfen.
Ein FreeBSD-System verfügt über diverse
Systembenutzerkonten, um einzelnen Daemonen den Zugriff auf
das System zu ermöglichen. Anonyme Benutzer sollten sich
allerdings nicht über diese Benutzerkonten anmelden
dürfen. Die Datei /etc/ftpusers
enthält alle Benutzer, die vom FTP-Zugriff ausgeschlossen
sind. In der Voreinstellung gilt dies auch die gerade
erwähnten Systembenutzerkonten. Sie können über
diese Datei weitere Benutzer vom FTP-Zugriff
ausschließen.Sie können den Zugriff für einige Benutzer
einschränken, ohne FTP komplett zu verbieten. Dazu
passen Sie /etc/ftpchroot entsprechend an.
Diese Datei enthält Benutzer und Gruppen sowie die für
sie geltenden FTP-Einschränkungen und wird in
&man.ftpchroot.5; ausführlich beschrieben.FTPanonymousWenn Sie einen anonymen FTP-Zugriff auf Ihren Server
ermöglichen wollen, müssen Sie den Benutzer
ftp auf Ihrem &os;-System anlegen.
Danach können sich Benutzer mit dem Benutzernamen
ftp oder anonymous
auf Ihrem FTP-Server anmelden. Das Passwort ist dabei
beliebig (allerdings wird dazu in der Regel eine E-Mail-Adresse
verwendet). Meldet sich ein anonymer Benutzer an, aktiviert
der FTP-Server &man.chroot.2;, um den Zugriff auf das
Heimatverzeichnis des Benutzers ftp
zu beschränken.Es gibt zwei Textdateien, deren Inhalt Sie bei der Anmeldung
an Ihrem FTP-Server anzeigen lassen können. Der Inhalt von
/etc/ftpwelcome wird angezeigt, bevor der
Login-Prompt erscheint. Nach einer erfolgreichen Anmeldung wird
der Inhalt von /etc/ftpmotd angezeigt.
Beachten Sie aber, dass es dabei um einen Pfad relativ zur
Umgebung des anzumeldenden Benutzers handelt. Bei einer
anonymen Anmeldung würde also die Datei
~ftp/etc/ftpmotd angezeigt.Nachdem Sie den FTP-Server konfiguriert haben, müssen
Sie Ihn in /etc/inetd.conf aktivieren.
Dazu müssen Sie lediglich das Kommentarsymbol
# am Beginn der bereits vorhandenen
ftpd-Zeile entfernen:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -lNachdem Sie diese Änderung durchgeführt haben,
müssen Sie, wie in
beschrieben, die inetd-Konfiguration
neu einlesen.Danach können Sie sich auf Ihrem FTP-Server anmelden:&prompt.user; ftp localhostWartungsyslogLogdateienFTPDer ftpd-Daemon verwendet
&man.syslog.3;, um Protokolldateien zu erstellen. In der
Voreinstellung werden alle FTP betreffenden Nachrichten
in die Datei /var/log/xferlog
geschrieben. Dies lässt sich aber durch das Einfügen
der folgenden Zeile in /etc/syslog.conf
ändern:ftp.info /var/log/xferlogFTPanonymousBeachten Sie, dass mit dem Betrieb eines anonymen
FTP-Servers verschiedene Sicherheitsrisiken verbunden sind.
Problematisch ist hier vor allem die Erlaubnis zum anonymen
Upload von Dateien. Dadurch könnte Ihr Server zur
Verbreitung von illegaler oder nicht lizensierter Software
oder noch Schlimmeren missbraucht werden. Wollen Sie
anonyme Uploads dennoch erlauben, sollten Sie die
Zugriffsrechte so setzen, dass solche Dateien erst nach Ihrer
Zustimmung von anderen Benutzern heruntergeladen werden
können.MurrayStokelyBeigetragen von Mit Samba einen Datei- und Druckserver für
µsoft.windows;-Clients einrichtenSamba-ServerMicrosoft WindowsDateiserverWindows-ClientsDruckserverWindows-ClientsÜberblickSamba ist ein beliebtes
Open Source-Softwarepaket, das es Ihnen ermöglicht,
einen Datei- und Druckserver für
µsoft.windows;-Clients einzurichten. Clients können
sich dadurch mit einem FreeBSD-System verbinden und dessen
Speicherplatz oder dessen Drucker verwenden. Dies genauso, als
wenn es sich um lokale Drucker oder Festplatten handeln
würde.Samba sollte als Softwarepaket
auf Ihren Installationsmedien vorhanden sein. Wenn Sie
Samba noch nicht installiert haben,
können Sie dies jederzeit über den Port oder das
Paket net/samba3
nachholen.KonfigurationDie Standardkonfigurationsdatei von
Samba heißt
/usr/local/share/examples/smb.conf.default.
Diese Datei muss nach /usr/local/etc/smb.conf
kopiert und angepasst werden, bevor
Samba verwendet werden kann.Die Datei smb.conf enthält
Laufzeitinformationen für
Samba, beispielsweise
Druckerdefinitionen oder
filesystem shares, also Bereiche
des Dateisystems, die Sie mit &windows;-Clients teilen wollen.
Die Konfiguration der Datei smb.conf
erfolgt webbasiert über das im
Samba-Paket enthaltene Programm
swat.Das Samba Web Administration Tool (SWAT) verwendenDas
Samba Web Administration Tool
(SWAT) wird als Daemon von inetd
aktiviert. Daher müssen Sie den Kommentar vor der
folgenden Zeile in /etc/inetd.conf
entfernen, bevor Sie swat zur
Konfiguration von Samba verwenden
können:swat stream tcp nowait/400 root /usr/local/sbin/swat swatWie bereits in
beschrieben, müssen Sie die
inetd-Konfiguration neu einlesen,
nachdem Sie diese Änderung durchgeführt haben.Nachdem swat in der Datei
inetd.conf aktiviert wurde, rufen Sie
in Ihrem Internetbrowser die Adresse
auf und melden sich
mit dem root-Benutzerkonto an.Nachdem Sie sich erfolgreich angemeldet haben, wird die
Hauptkonfigurationseite von Samba
geladen. Sie können nun die Dokumentation lesen, oder
durch einen Klick auf die
Globals-Karteikarte mit der Konfiguration
beginnen. Die Einstellungen, die Sie hier vornehmen
können, entsprechen denen des Abschnitts
[global] von
/usr/local/etc/smb.conf.Globale EinstellungenUnabhängig davon, ob Sie
swat verwenden, oder
/usr/local/etc/smb.conf direkt
editieren, sollten Sie zuerst folgende Einstellungen
anpassen:workgroupDer NT-Domänenname oder der Arbeitsgruppenname der
Rechner, die auf den Server Zugriff haben sollen.netbios nameNetBIOSLegt den NetBIOS-Namen fest, unter dem der
Samba-Server bekannt ist.
In der Regel handelt es sich dabei um den ersten
Teil des DNS-Namens des Servers.server stringLegt die Beschreibung fest, die angezeigt werden
soll, wenn mit net view oder
über andere Netzwerkprogramme Informationen
über den Server angefordert werden.Samba absichernZwei der wichtigsten Einstellungen in
/usr/local/etc/smb.conf betreffen
das zu verwendende Sicherheitsmodell sowie das
Backend-Passwortformat für die Benutzer der
Samba-Clients. Folgende Optionen sind dafür
verantwortlich:securityDie häufigsten Optionen sind
security = share und
security = user. Wenn Ihre Clients
Benutzernamen verwenden, die den Benutzernamen auf Ihrem
&os;-Rechner entsprechen, dann sollten Sie die
Einstellung user level
verwenden. Dies ist auch die Standardeinstellung.
Allerdings ist es dazu erforderlich, dass sich die
Clients auf Ihrem Rechner anmelden, bevor sie auf
gemeinsame Ressourcen zugreifen können.In der Einstellung
share level müssen
sich Clients nicht unter Verwendung eines gültigen
Logins auf Ihrem Rechner anmelden, bevor sie auf
gemeinsame Ressourcen zugreifen können. In
früheren Samba-Versionen
war dies die Standardeinstellung.passdb backendNIS+LDAPSQL databaseSamba erlaubt
verschiedene Backend-Authentifizierungsmodelle. Sie
können Clients durch LDAP, NIS+, eine SQL-Datenbank
oder eine Passwortdatei authentifizieren. In der
Voreinstellung wird smbpasswd
verwendet. Diese Methode wird im folgenden Abschnitt
näher beschrieben.Wenn Sie smbpasswd verwenden, müssen
Sie die Datei /usr/local/private/smbpasswd
erzeugen, damit Samba in der Lage
ist, Clients zu authentifizieren. Wenn Sie auf Ihrem
&unix;-Rechner vorhandenen Benutzern den Zugriff von einem
&windows;-Client aus ermöglichen wollen, verwenden Sie den
folgenden Befehl:&prompt.root; smbpasswd -a usernameAusführliche Informationen zur Konfiguration
von Samba finden Sie im
Official Samba HOWTO. Sie sollten aber bereits
nach dem Lesen dieses Abschnitts in der Lage sein,
Samba zu starten.Samba startenDer Port net/samba3
legt ein neues Startskript an, mit dem
Samba gesteuert (also etwa
gestartet oder beendet) werden kann. Um dieses Skript
zu aktivieren, fügen Sie folgende Zeile in
/etc/rc.conf ein:samba_enable="YES"Alternativ können Sie auch die folgenden
beiden Einträge verwenden:nmbd_enable="YES"smbd_enable="YES"Durch diese Einträge
Samba beim Systemstart
automatisch aktiviert.Danach können Sie Samba
jederzeit durch folgenden Befehl starten:&prompt.root; /usr/local/etc/rc.d/samba start
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.Weitere Informationen zu den rc-Startskripten finden
Sie im des Handbuchs.Samba verwendet drei Daemonen.
Beachten Sie, dass sowohl nmbd als
auch smbd durch das Skript
samba gestartet werden. Wenn Sie die
winbind name resolution services
in smb.conf aktiviert haben, wird
zusätzlich der winbindd-Daemon
gestartet.Sie können Samba jederzeit
durch den folgenden Befehl beenden:&prompt.root; /usr/local/etc/rc.d/samba stopSamba ist ein komplexes
Softwarepaket mit umfassenden Funktionen, die eine weitreichende
Integration von µsoft.windows;-Netzwerken ermöglichen.
Für eine Beschreibung dieser Zusatzfunktionen sollten Sie
sich auf umsehen.TomHukinsBeigetragen von Die Uhrzeit mit NTP synchronisierenNTPÜberblickDa die interne Uhrzeit eines Computers nie ganz exakt ist,
wurde mit NTP
(Network Time Protocol) eine
Möglichkeit geschaffen, die exakte Uhrzeit zu ermitteln
und festzulegen.Viele Internetdienste sind von einer exakten Uhrzeit
abhängig. Ein Webserver könnte beispielsweise die
Anforderung erhalten, eine Datei zu versenden, wenn sich diese
in einer bestimmten Zeitspanne geändert hat. In einem
lokalen Netzwerk ist es unbedingt notwendig, dass Rechner, die
Dateien von einem gemeinsamen Dateiserver beziehen, ihre
Uhrzeit synchronisieren, damit die Zeitstempel der Dateien
konstistent bleiben. Dienste wie &man.cron.8; führen
Befehle zu einem bestimmten Zeitpunkt aus. Ist die Uhrzeit
nicht korrekt, kann dies zu Problemen führen.NTPntpd&os; verwendet den &man.ntpd.8;-
NTP-Server,
um die genaue Uhrzeit von anderen
NTP-Servern
abzufragen, die eigene Systemzeit zu setzen, oder um diese
anderen Rechnern anzubieten.Einen passenden NTP-Server auswählenNTPServerwahlUm die Uhrzeit zu synchronisieren, müssen Sie sich mit
einem
NTP-Server
verbinden. Ihr Netzwerkadministrator oder Ihr Internetprovider
haben vielleicht schon einen NTP-Server eingerichtet. Lesen Sie
deren Dokumentation, um dies zu überprüfen. Es gibt
im Internet eine
Liste mit frei zugänglichen NTP-Servern, aus der
Sie sich einen in Ihrer Nähe gelegenen Server
auswählen können. Beachten Sie aber auf jeden Fall
die Nutzungsbedingungen des entsprechenden Servers, und fragen
Sie um Erlaubnis, wenn dies nötig ist.Die Auswahl von mehreren NTP-Servern kann sinnvoll sein,
wenn ein Server ausfällt oder falsche Zeiten liefert.
&man.ntpd.8; verwendet die Antworten anderer Server, um
zuverlässige Server zu bestimmen, die dann bevorzugt
abgefragt werden.NTP unter &os; einrichtenNTPKonfigurationNTP aktivierenntpdateWenn Sie Ihre Uhrzeit nur beim Systemstart
synchronisieren wollen, können Sie &man.ntpdate.8;
verwenden. Für Desktoprechner, die regelmäßig
neu gestartet werden und keine ständige Synchronisation
benötigen, ist dies akzeptabel. In allen anderen
Fällen sollten Sie jedoch &man.ntpd.8; verwenden.Die Ausführung von &man.ntpdate.8; während des
Systemstarts ist aber auch für Rechner, die &man.ntpd.8;
verwenden, sinnvoll. &man.ntpd.8; passt die Systemzeit nur
bei größeren Abweichungen an, während
&man.ntpdate.8; die Zeit immer synchronisiert, egal wie
groß die Differenz zwischen Systemzeit und korrekter
Zeit ist.Um &man.ntpdate.8; beim Systemstart zu aktivieren,
fügen Sie den Eintrag
ntpdate_enable="YES" in
/etc/rc.conf ein. Außerdem müssen
Sie alle Server, mit denen Sie sich synchronisieren wollen,
sowie alle an &man.ntpdate.8; zu übergebenden Optionen
in den ntpdate_flags angeben.NTPntp.confNTP einrichtenDie Konfiguration von NTP erfolgt über die Datei
/etc/ntp.conf, und wird in der
Hilfeseite &man.ntp.conf.5; beschrieben. Dazu ein
einfaches Beispiel:server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.driftDie Option server legt die zu
verwendenden Server fest, wobei jeder Server in einer eigenen
Zeile steht. Wenn ein Server mit der Option
prefer versehen ist, wie dies hier bei
ntplocal.example.com der Fall
ist, wird dieser Server bevorzugt verwendet. Eine Antwort von
einem bevorzugten Server wird nur dann verworfen, wenn sie
signifikant von denen anderer Server abweicht, ansonsten wird
sie ohne Abfrage weiterer Server verwendet. Die Option
prefer wird gewöhnlich nur für
sehr zuverlässige und genaue Server verwendet, die
über spezielle Hardware zur Zeitüberwachung
verfügen.Die Option driftfile legt fest, in
welcher Datei die Abweichungen der Systemuhr protokolliert
werden. &man.ntpd.8; verwendet diese Datei, um die Systemzeit
automatisch anzupassen, selbst wenn kurzzeitig kein NTP-Server
zur Synchronisation verfügbar ist.Weiterhin legt die Option driftfile fest,
wo Informationen über frühere Antworten des von
Ihnen verwendeten NTP-Servers gespeichert werden sollen.
Diese Datei enthält NTP-interne Informationen, sie sollte
daher von anderen Prozessen nicht verändert werden.Den Zugang zu Ihrem NTP-Server beschränkenIn der Voreinstellung ist Ihr NTP-Server für alle
Rechner im Internet erreichbar. Über die Option
restrict in der Datei
/etc/ntp.conf können Sie den
Zugang zu Ihrem Server beschränken.Wenn Sie alle Rechner vom Zugriff auf Ihren NTP-Server
ausschließen wollen, fügen Sie folgende Zeile in
/etc/ntp.conf ein:restrict default ignoreDurch diesen Eintrag verhindern Sie den Zugriff Ihres
Servers auf alle auf Ihrem System konfigurierten Server.
Müssen Sie Ihren NTP-Server mit einem externen
NTP-Server synchronisieren, müssen Sie dies daher
dezidiert zulassen. Lesen Sie in diesem Fall die
Manualpage &man.ntp.conf.5;.Wenn Sie nur Rechnern Ihres eigenen Netzwerks die
Synchronisation mit Ihrem NTP-Server erlauben, gleichzeitig
aber verhindern wollen, dass diese den NTP-Server
konfigurieren oder als Server für andere Rechner dienen
können, fügen Sie folgende Zeile ein:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrapBei 192.168.1.0 handelt es
sich um einen Rechner Ihres Netzwerks.
255.255.255.0 ist die
Netzmaske Ihres Netzwerks./etc/ntp.conf kann verschiedene
restrict-Optionen enthalten.
Weiteres erfahren Sie im Abschnitt
Access Control Support der
Hilfeseite &man.ntp.conf.5;.Den NTP-Server startenDamit der NTP-Server beim Systemstart automatisch gestartet
wird, fügen Sie den Eintrag
ntpd_enable="YES" in
/etc/rc.conf ein. Wenn Sie weitere
Argumente an &man.ntpd.8; übergeben wollen, passen Sie
die Option ntpd_flags in der Datei
/etc/rc.conf entsprechend an.Um den NTP-Server ohne einen Systemneustart zu starten,
rufen Sie ntpd mit den unter
ntpd_flags in
/etc/rc.conf festgelegten Parametern auf.
Hierzu ein Beispiel:&prompt.root; ntpd -p /var/run/ntpd.pidntpd mit einer Einwahlverbindung verwenden&man.ntpd.8; benötigt keine ständige
Internetverbindung. Wenn Sie sich ins Internet einwählen,
ist es sinnvoll, zu verhindern, dass NTP-Verkehr eine Verbindung
aufbauen oder aufrechterhalten kann. Wenn Sie user-PPP
verwenden, können Sie dies in den
filter-Direktiven von
/etc/ppp/ppp.conf festlegen. Sehen Sie
sich dazu das folgende Beispiel ein:set filter dial 0 deny udp src eq 123
# Prevent NTP traffic from initiating dial out
set filter dial 1 permit 0 0
set filter alive 0 deny udp src eq 123
# Prevent incoming NTP traffic from keeping the connection open
set filter alive 1 deny udp dst eq 123
# Prevent outgoing NTP traffic from keeping the connection open
set filter alive 2 permit 0/0 0/0Weitere Informationen finden Sie im Abschnitt
PACKET FILTERING von &man.ppp.8; sowie in den
Beispielen unter /usr/share/examples/ppp/.Einige Internetprovider blockieren Ports mit niedrigen
Nummern. In solchen Fällen funktioniert NTP leider
nicht, da Antworten eines NTP-Servers Ihren Rechner nicht
erreichen werden.Weitere InformationenWeiterführende Dokumentation (im HTML-Format)
zum NTP-Server finden Sie unter
/usr/share/doc/ntp/.
diff --git a/de_DE.ISO8859-1/books/porters-handbook/book.sgml b/de_DE.ISO8859-1/books/porters-handbook/book.sgml
index 38c7c90783..da51e54aa5 100644
--- a/de_DE.ISO8859-1/books/porters-handbook/book.sgml
+++ b/de_DE.ISO8859-1/books/porters-handbook/book.sgml
@@ -1,14023 +1,14060 @@
%books.ent;
]>
Das FreeBSD Porter-HandbuchThe FreeBSD German Documentation ProjectApril 200020002001200220032004200520062007The FreeBSD German
Documentation Project
&bookinfo.trademarks;
&bookinfo.legalnotice;
EinführungDie Ports-Sammlung von FreeBSD ist der gebräuchlichste
Weg, um Anwendungen ("Ports") unter FreeBSD zu installieren.
Wie alles andere in FreeBSD auch, ist sie hauptsächlich
das Ergebnis der Arbeit von Freiwilligen. Es ist wichtig,
diesen Aspekt beim Lesen im Hinterkopf zu behalten.In FreeBSD kann jeder einen neuen Port einsenden oder sich
dazu bereit erklären, einen bereits vorhandenen Port zu
pflegen, sofern der Port derzeit keinen Maintainer
hat – dazu sind keine besonderen Rechte
nötig.Einen neuen Port erstellenSie sind also daran interessiert, einen neuen Port zu
erstellen oder einen vorhandenen zu aktualisieren?
Großartig!Die folgenden Kapitel beinhalten einige Richtlinien, um
einen neuen Port für FreeBSD zu erstellen. Wenn Sie
einen vorhandenen Port auf den neuesten Stand bringen
wollen, sollten Sie mit
fortfahren.Wenn Ihnen dieses Dokument nicht detailliert genug ist,
sollten Sie einen Blick in
/usr/ports/Mk/bsd.port.mk werfen. Das
Makefile jedes Ports bindet diese Datei ein. Auch wenn Sie
nicht täglich mit Makefiles arbeiten, sollten Sie gut
damit zurecht kommen, da die Datei gut dokumentiert ist und
Sie eine Menge Wissen daraus erlangen können.
Zusätzlich können Sie speziellere Fragen an die
&a.ports;-Mailingliste stellen.Nur ein Bruchteil der Variablen
(VAR), die von
Ihnen gesetzt werden können, finden hier
Erwähnung. Die meisten von ihnen (wenn nicht sogar
alle) sind am Anfang von
/usr/ports/Mk/bsd.port.mk
erläutert. Beachten Sie bitte, dass diese Datei eine
nicht standardkonforme Tabulator-Einstellung
verwendet. Emacs und
Vim sollten diese Einstellung
jedoch automatisch beim Öffnen der Datei setzen. Sowohl
&man.vi.1; als auch &man.ex.1; können mit dem Befehl
:set tabstop=4 dazu gebracht werden, die
Datei richtig anzuzeigen, wenn sie geöffnet wird.Port erstellen auf die SchnelleDieser Abschnitt beschreibt, wie Sie schnell einen Port
erstellen können. In vielen Fällen ist dies
allerdings nicht ausreichend, dann werden Sie in diesem Buch
weiterlesen müssen.Als Erstes besorgen Sie sich das Original-Tarball
(komprimiertes Archiv) und legen es im
DISTDIR ab, welches
standardmäßig
/usr/ports/distfiles ist.Im Folgenden wird angenommen, dass die Software
unverändert kompiliert werden konnte, dass also keinerlei
Änderungen nötig waren, um den Port auf Ihrem
FreeBSD-Rechner zum Laufen zu bringen. Falls Sie
Änderungen vornehmen mussten, werden Sie auch den
nächsten Abschnitt beachten müssen.Das Makefile schreibenEin minimales Makefile sieht in etwa
so aus:# New ports collection makefile for: oneko
# Date created: 5 December 1994
# Whom: asami
#
# $FreeBSD$
#
PORTNAME= oneko
PORTVERSION= 1.1b
CATEGORIES= games
MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/
MAINTAINER= asami@FreeBSD.org
COMMENT= A cat chasing a mouse all over the screen
MAN1= oneko.1
MANCOMPRESSED= yes
USE_IMAKE= yes
.include <bsd.port.mk>Versuchen Sie es zu verstehen. Machen Sie sich keine
Gedanken um die
$FreeBSD$-Zeile, diese wird
automatisch vom CVS eingefügt, wenn der Port in den
Haupt-Ports-Tree importiert wird. Ein detailliertes Beispiel
finden Sie im Abschnitt
sample Makefile.Die Beschreibungsdateien erstellenEs gibt zwei Beschreibungsdateien, die für jeden Port
benötigt werden, ob sie tatsächlich im Paket
enthalten sind oder nicht. Dies sind
pkg-descr und
pkg-plist. Der pkg-
Präfix unterscheidet sie von anderen Dateien.pkg-descrDiese enthält eine längere Beschreibung des
Ports. Einer oder mehrere Absätze, die kurz und
prägnant erklären, was der Port macht, sind
ausreichend.pkg-descr enthält
keine Anleitung oder detaillierte
Beschreibung wie der Port benutzt oder kompiliert wird!
Bitte seien Sie vorsichtig, wenn Sie aus dem
README oder der Manualpage kopieren
; Diese sind oft keine prägnanten
Beschreibungen des Ports oder sie sind in einem
ungünstigen Format (Manualpages haben z.B.
bündige Zwischenräume). Wenn es für die
portierte Software eine offizielle Webseite gibt, sollten
Sie diese hier angeben. Fügen Sie hierzu
eine der Webseiten mit dem
Präfix WWW: ein, damit
automatische Werkzeuge korrekt arbeiten.Das folgende Beispiel zeigt wie Ihre
pkg-descr aussehen sollte:This is a port of oneko, in which a cat chases a poor mouse all over
the screen.
:
(etc.)
WWW: http://www.oneko.org/pkg-plistDiese Datei enthält eine Liste aller Dateien, die
von diesem Port installiert werden. Sie wird auch die
Packliste genannt, da das Paket durch die
hier aufgeführten Dateien erstellt wird. Die
Pfadangaben sind relativ zum Installationspräfix
(für gewöhnlich /usr/local
oder /usr/X11R6). Wenn Sie die
MANn-Variablen
verwenden (was Sie auch machen sollten), führen Sie hier
keine Manualpages auf. Wenn der Port während der
Installation Verzeichnisse erstellt, stellen Sie sicher
entsprechende @dirrm-Zeilen
einzufügen, um die Verzeichnisse zu entfernen, wenn das
Paket gelöscht wird.Hier ist ein kleines Beispiel:bin/oneko
lib/X11/app-defaults/Oneko
lib/X11/oneko/cat1.xpm
lib/X11/oneko/cat2.xpm
lib/X11/oneko/mouse.xpm
@dirrm lib/X11/onekoFür weitere Details zur Packliste lesen Sie in der
&man.pkg.create.1; Manualpage nach.Es wird empfohlen alle Dateinamen in dieser Datei
alphabetisch sortiert zu halten. Das erlaubt Ihnen die
Änderungen bei einem Upgrade Ihres Ports deutlich
einfacher zu Überprüfen.Eine Packlist von Hand zu erzeugen kann eine sehr
mühsame Aufgabe sein. Wenn der Port eine große
Anzahl Dateien installiert, kann es Zeit sparen,
eine Packliste automatisch
zu erstellen.Es gibt nur einen Fall, in dem
pkg-plist weggelassen werden kann.
Wenn der Port nur eine handvoll Dateien und Verzeichnisse
installiert, können diese in den Variablen
PLIST_FILES und
PLIST_DIRS im
Makefile aufgelistet werden. Zum
Beispiel könnten wir im obigen Beispiel ohne
pkg-plist für den
oneko-Port auskommen, indem wir die
folgenden Zeilen ins Makefile
einfügen:PLIST_FILES= bin/oneko \
lib/X11/app-defaults/Oneko \
lib/X11/oneko/cat1.xpm \
lib/X11/oneko/cat2.xpm \
lib/X11/oneko/mouse.xpm
PLIST_DIRS= lib/X11/onekoNatürlich sollte PLIST_DIRS
ungesetzt bleiben, wenn der Port keine eigenen Verzeichnisse
installiert.Der Preis für diese Art die Dateien eines Ports
anzugeben ist, dass man keine Befehlsfolgen wie in
&man.pkg.create.1; nutzen kann. Deshalb ist es nur
für einfache Ports geeignet und macht diese noch
einfacher. Gleichzeitig bringt es den Vorteil die Anzahl
der Dateien in der Ports-Sammlung zu reduzieren. Deshalb
ziehen Sie bitte diese Vorgehensweise in Erwägung,
bevor Sie pkg-plist benutzen.Später werden wir uns ansehen, wie
pkg-plist und
PLIST_FILES benutzt werden können,
um anspruchsvollere Aufgaben zu
erfüllen.Die Checksummendatei erzeugenGeben Sie einfach make makesum ein.
Die Regeln von Make sorgen dafür, dass die Datei
distinfo automatisch erstellt
wird.Wenn sich die Checksumme einer heruntergeladenen Datei
regelmäßig ändert und Sie sicher sind, dass
Sie der Quelle trauen können (weil sie z.B. von einer
Hersteller-CD oder täglich erstellter Dokumentation
stammt), sollten Sie diese Dateien in der Variable
IGNOREFILES angeben. Dann wird die
Checksumme für diese Datei bei
make makesum nicht berechnet, sondern auf
IGNORE gesetzt.Den Port testenSie sollten sicherstellen, dass die Port-Regeln genau das
einhalten, was Sie von ihnen erwarten, auch beim Erzeugen eines
Pakets aus dem Port. Dies sind die wichtigen Punkte, die Sie
überprüfen sollten.pkg-plist enthält nichts,
das nicht von Ihrem Port installiert wurde.pkg-plist enthält alles,
was von Ihrem Port installiert wurde.Ihr Port kann mit Hilfe von
make reinstall mehrmals installiert
werden.Ihr Port
räumt bei der
Deinstallation hinter sich auf.Empfohlene Testreihenfolgemake installmake packagemake deinstallpkg_add Paket-Namemake deinstallmake reinstallmake packageStellen Sie bitte sicher, dass während
make package und
make deinstall keine Warnungen ausgegeben
werden. Nach Schritt 3 überprüfen Sie bitte, ob alle
neuen Verzeichnisse korrekt entfernt wurden. Und versuchen Sie
die Software nach Schritt 4 zu benutzen, um sicherzustellen,
dass sie korrekt funktioniert, wenn diese aus einem Paket
installiert wird.Der gründlichste Weg diese Schritte zu automatisieren
ist eine Tinderbox zu installieren.
Diese verwaltet Jails, in denen Sie alle
oben genannten Schritte durchführen können, ohne den
Zustand Ihres laufenden Systems zu verändern. Mehr
Informationen hierzu entält
ports/ports-mgmt/tinderboxIhren Port mit portlint
überprüfenBitte verwenden Sie portlint, um
festzustellen, ob Ihr Port unseren Richtlinien entspricht.
Das Programm
ports-mgmt/portlint ist
Teil der Ports-Sammlung. Stellen Sie vor allem sicher, dass
das Makefile in der
richtigen Form und das
Paket passend benannt
ist.Den Port einreichenAls Erstes sorgen Sie bitte dafür, dass Sie den
Abschnitt DOs and DON'Ts
gelesen haben.Nun, da Sie mit Ihrem Port zufrieden sind, müssen Sie
ihn nur noch in den Haupt-Ports-Tree von FreeBSD einbringen,
damit alle daran teilhaben können. Wir benötigen
nicht Ihr work-Verzeichnis oder Ihr
pkgname.tgz-Paket – diese
können Sie nun löschen. Als Nächstes fügen
Sie bitte einfach die Ausgabe von
shar `find port_dir` in einen Fehlerbericht
(PR - Problem Report) und senden diesen mittels
&man.send-pr.1; (unter
Bug Reports and General Commentary finden Sie weitere
Informationen über &man.send-pr.1;). Ordnen Sie den
Fehlerbericht bitte in die Kategorie Ports
mit der Klasse Change-Request ein
(Markieren Sie den Bericht nicht als
vertraulich
(confidential)!). Fügen Sie bitte eine
kurze Beschreibung des Programms, das Sie portiert haben, in
das Beschreibungs-Feld des Problemberichts und
das Shar (Shell-Archiv) in das Fix-Feld
ein.Sie können uns die Arbeit um einiges vereinfachen,
wenn Sie eine gute Beschreibung in der Zusammenfassung des
Problemberichtes verwenden. Wir bevorzugen etwas wie
Neuer Port:
<Kategorie>/<Portname><Kurzbeschreibung des
Ports> für neue Ports und Update
Port: <Kategorie>/<Portname>
<Kurzbeschreibung des Updates> für
Portupdates. Wenn Sie sich an dieses Schema halten, ist die
Chance, dass sich jemand bald Ihren Bericht ansieht,
deutlich besser.Noch einmal: Bitte fügen Sie nicht das
distfile der Originalquelle, das
work-Verzeichnis oder das Paket, das Sie mit
make package erstellt haben, ein.
Haben Sie bitte etwas Geduld, nachdem Sie den Port
eingereicht haben. Manchmal kann es einige Monate dauern,
bevor ein Port in FreeBSD eingefügt wird, obwohl es
wahrscheinlich nur ein paar Tage dauert. Sie können sich
die
Liste der Ports, die darauf warten in FreeBSD committet zu
werden, ansehen.Nachdem wir einen Blick auf Ihren Port geworfen haben,
werden wir, wenn nötig, bei Ihnen nachfragen und ihn in
die Ports-Sammlung übernehmen. Ihr Name taucht dann auch
in der Liste der Additional
FreeBSD Contributors und in anderen Dateien auf.
Ist das nicht toll?! :-)Einen Port in aller Ruhe erstellenOk, das war nicht ganz einfach und der Port hat einige
Veränderungen erfordert, um funktionieren zu können.
In diesem Abschnitt werden wir Schritt für Schritt
erklären, wie man den funktionierenden Port den Vorgaben
der Ports entsprechend anpasst.Die FunktionsweiseBeginnen wir mit der Abfolge der Ereignisse, die
eintreten, wenn der Nutzer das erste make
in Ihrem Portsverzeichnis ausführt. Sie empfinden es
für das Verständnis vielleicht hilfreich
bsd.port.mk in einem anderen Fenster
offen zu haben, während Sie diesen Abschnitt
lesen.Aber machen Sie sich keine Sorgen, falls Sie nicht
wirklich verstehen, was bsd.port.mk
macht, die Wenigsten begreifen dies...
:>Das Target fetch wird
aufgerufen. Es ist dafür verantwortlich
sicherzustellen, dass der Tarball lokal im
DISTDIR verfügbar ist. Falls
fetch die benötigten Dateien
in DISTDIR nicht finden kann,
durchsucht es die URL MASTER_SITES,
welche im Makefile gesetzt ist, ebenso wie unsere
Haupt-FTP-Seite unter
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/
, wo wir genehmigte Distfiles als Backup
aufbewahren. Danach wird versucht, so eine direkte
Internetverbindung besteht, dass genannte Distfile mit
FETCH herunterzuladen. Falls dies
gelingt, wird die Datei in DISTDIR
für weitere Nutzung abgelegt und fährt
fort.Das Target extract wird
aufgerufen. Es sucht nach den Distfiles Ihres Ports
(normalerweise ein gzip-komprimierter Tarball) in
DISTDIR und entpackt diese in ein
temporäres Unterverzeichnis, welches von
WRKDIR festgelegt wird (standardmäßig
work).Das Target patch wird
aufgerufen. Zuerst werden alle in
PATCHFILES festgelegten Patches
eingespielt. Anschließend werden, falls Patches der
Form
patch-* in
PATCHDIR (standardmäßig das
files-Unterverzeichnis) gefunden
werden, diese in alphabetischer Reihenfolge
eingespielt.Das Target configure wird
aufgerufen. Dieses kann viele verschiedene Dinge
machen.Existiert scripts/configure,
so wird es aufgerufen.Falls HAS_CONFIGURE oder
GNU_CONFIGURE gesetzt sind, wird
WRKSRC/configure
ausgeführt.Falls USE_IMAKE gesetzt ist,
wird XMKMF
(standardmäßig xmkmf -a)
ausgeführt.Das Target build wird
aufgerufen. Es ist für das Wechseln in das private
Arbeitsverzeichnis (WRKSRC) und das
Bauen des Ports zuständig. Ist
USE_GMAKE gesetzt, so wird GNU
make verwendet, sonst das
System-make.Die oben genannten Schritte sind die Standardaktionen.
Zusätzlich können Sie pre-
irgendwas oder
post-irgendwas als Targets definieren oder Skripten mit diesen
Namen in das scripts-Unterverzeichnis
legen. Sie werden dann vor bzw. nach den Standardaktionen
aufgerufen.Angenommen Sie haben das Target post-extract
in Ihrem Makefile
definiert und eine Datei pre-build im
scripts Unterverzeichnis, so wird das
Target post-extract nach dem normalen
Entpacken aufgerufen und das Skript
pre-build
ausgeführt, bevor die vordefinierten Bau-Regeln
abgearbeitet sind. Es wird empfohlen, dass Sie
Makefile-Targets verwenden, falls die
Aktionen es erlauben, da es so für jemanden einfacher
sein wird herauszufinden, was für eine
nicht-standardmäßige Aktion der Port
benötigt.Die Standardaktionen werden aus den Targets
bsd.port.mkdo-irgendwas übernommen. Zum Beispiel sind die Befehle
zum Entpacken eines Ports im Target
do-extract zu finden. Falls Sie mit
einem vorgegebenen Target nicht zufrieden sind, können
Sie es verändern, indem Sie das Target
do-irgendwas in Ihrem Makefile neu
definieren.Die Haupt-Targets (z.B.
extract,
configure usw.) machen nicht mehr
als sicherzustellen, dass bis hierhin alle Abschnitte
abgeschlossen sind, um danach die eigentlichen Targets oder
Skripte aufzurufen. Und es ist nicht beabsichtigt, dass
diese geändert werden. Falls Sie das Entpacken
verändern wollen, verändern Sie
do-extract, aber niemals die Art,
wie extract arbeitet!Jetzt, da Sie verstehen, was geschieht, wenn der Benutzer
make eingibt, lassen Sie uns durch die
empfohlenen Schritte gehen, um den perfekten Port zu
erstellen.Den originalen Quelltext besorgenNormalerweise liegt der original Quelltext als gepackte
Datei (foo.tar.gz
oder
foo.tar.Z)
vor. Kopieren Sie diese nach DISTDIR.
Nutzen Sie, soweit möglich, immer die Quellen aus dem
Hauptzweig.Es ist notwendig die Variable
MASTER_SITES anzupassen, um anzugeben, wo
sich der originale Quelltext befindet. In
bsd.sites.mk finden sich hilfreiche
Definitionen für die gebräuchlichsten Seiten. Bitte
nutzen Sie diese Seiten und die zugehörigen Definitionen,
soweit dies möglich ist. Damit wird vermieden, immer und
immer wieder dieselben Informationen zu wiederholen. Da die
Hauptseiten regelmäßig angepasst werden
müssen, vereinfacht dieses Vorgehen die Pflege der
Dateien für jeden Beteiligten.Falls keine zuverlässige und gut erreichbare
FTP/HTTP-Seite zu finden ist, oder nur Seiten auffindbar sind,
die keinen Standards entsprechen, sollte eine Kopie des
Quelltextes auf einer zuverlässigen Seite abgelegt
werden. Dies könnte z.B. die eigene Internetseite
sein.Ist kein geeigneter Ort zum Ablegen des Quelltextes
auffindbar, ist es möglich diesen intern
auf ftp.FreeBSD.org abzulegen; dies sollte
jedoch als letzte Möglichkeit angesehen werden. Das
Distfile muss in diesem Fall in ~/public_distfiles/
eines freefall-Accounts abgelegt
werden. Bitten Sie den Committer Ihres Ports dies zu erledigen.
Er wird außerdem MASTER_SITES nach
MASTER_SITE_LOCAL und
MASTER_SITE_SUBDIR auf den
freefall-Benutzernamen angepasst.Sollte sich das Distfile des Ports regelmäßig
ohne Versionsanpassungen des Autors ändern, sollte
überlegt werden, das Disfile auf der eigenen
Internetseite abzulegen und diese in der Liste der
MASTER_SITES an die erste Stelle zu setzen.
Falls möglich, sollte der Autor des Ports gebeten werden,
dies zu erledigen; hierüber wird die Kontrolle des Quelltextes
verbessert. Wird eine eigene Version des Quelltextes auf
eigenen Internetseiten verfügbar gemacht, verhindert dies
Warnungen von checksum mismatch und
reduziert den Arbeitsaufwand der Maintainer der FTP-Seiten.
Auch wenn nur eine Quelle für den Quelltext des Ports zur
Verfügung steht, ist es empfohlen, ein Backup auf einer
weiteren Seite abzulegen und diese als zweiten Eintrag in
MASTER_SITES aufzunehmen.Sind für den Port zusätzlich aus dem Internet
verfügbare Patches erforderlich, sollten diese ebenfalls
in DISTDIR abgelegt werden. Sollten diese
Patches von anderer Quelle als der Hauptseite des Ports
stammen, ist das kein Grund zur Sorge. Es gibt Wege diesem
Umstand gerecht zu werden (beachten Sie die unten stehende
Beschreibung zu PATCHFILES
).Den Port bearbeitenEntpacken Sie eine Kopie des Tarballs in ein privates
Verzeichnis und nehmen Sie alle Änderungen
vor, die nötig sind, um den Port unter einer aktuellen
FreeBSD-Version kompilieren zu können.
Protokollieren Sie sorgfältig alle
Schritte, die Sie vornehmen, da Sie den Prozess in Kürze
automatisieren werden. Alles, auch das Entfernen,
Hinzufügen oder Bearbeiten von Dateien, sollte von einem
automatisierten Skript oder einer Patch-Datei machbar sein,
wenn Ihr Port fertig ist.Falls Ihr Port bedeutende Interaktionen/Veränderungen
durch den Benutzer benötigt, um ihn zu Kompilieren oder
zu Installieren, sollten Sie einen Blick auf Larry Walls
klassische Configure-Skripte werfen
oder vielleicht etwas Ähnliches selbst erstellen. Das
Ziel der Ports-Sammlung ist es, jeden Port so
plug-and-play-fähig wie möglich
für den Endbenutzer zu machen, während ein Minimum
an Speicherplatz gebraucht wird.Solange nicht anders angegeben wird von Patch-Dateien,
Skripten und anderen Dateien, die Sie erstellt und der FreeBSD
Ports-Sammlung hinzugefügt haben, angenommen, dass Sie
unter den standardmäßigen BSD-Copyright-Bedingungen
stehen.Fehlerbehebung (Patches)Bei der Vorbereitung eines Ports können die Dateien,
die hinzugefügt oder verändert wurden, mittels
&man.diff.1; abgefangen werden, um Sie später an
&man.patch.1; zu übergeben. Jeder Patch, der dem
Quelltext übergeben werden soll, sollte in einer Datei
patch-*
abgelegt werden, wobei * dem
Pfadnamen der zu korrigierenden Datei entspricht, wie er auch
in patch-Imakefile oder im
patch-src-config.h erscheint. Diese
Dateien sollten in PATCHDIR (normalerweise
files) abgelegt sein, von wo sie
automatisch übernommen werden. Alle Patches müssen
sich relativ zur WRKSRC-Variable
(normalerweise dem Verzeichnis, in dem sich der Quelltext des
Ports entpackt und wo auch der Bau stattfindet)
befinden.Um Korrekturen und Updates zu vereinfachen, sollte es
vermieden werden, mehr als einen Patch für eine Datei zu
nutzen (z.B. patch-file und
patch-file2, welche beide
WRKSRC/foobar.c
verändern).Für die Benennung der Patches sollten nur die Zeichen
[-+._a-zA-Z0-9] genutzt werden. Bitte
verwenden Sie keine weiteren Zeichen als die angegebenen. Die
Namensvergabe sollte nicht patch-aa oder
patch-ab etc. entsprechen, erwähnen
Sie immer den Pfad und Dateinamen.RCS-Zeichenketten sollten vermieden werden, da CVS diese
verstümmeln würde, sobald wir diese Dateien in die
Ports-Sammlung einpflegen. Wenn wir die Dateien wieder abrufen
wären diese verändert und der Patch würde
fehlschlagen. RCS-Zeichenketten sind in Dollar-Zeichen
($) eingefügte Zeichen und
beginnen üblicherweise mit $Id
oder $RCS.Die Option rekursiv () zu nutzen
&man.diff.1;, um Patches zu erstellen, ist zulässig,
jedoch sollte der Patch anschließend geprüft
werden, um Unnötiges aus dem Patch zu entfernen. Im
Einzelnen bedeutet dies, dass Diffs zwischen zwei
Backup-Dateien, Makefiles oder wenn der
Port Imake oder GNU
configure usw. nutzt, überflüssig
sind und entfernt werden sollten. Falls es es notwendig war,
configure.in zu bearbeiten und es soll
autoconf zum Neuerstellen von
configure genutzt werden, sollten die Diffs
aus configure nicht genutzt werden (diese
werden oft einige tausend Zeilen
groß!); – hier sollte
USE_AUTOTOOLS=autoconf:261 definiert und
das Diff aus configure.in genutzt
werden.
+ Zusätzlich sollte man unnötige
+ Markup-Änderungen in Patches/Änderungen möglichst
+ vermeiden. In der Open Source-Welt teilen sich Projekte
+ häufig große Teile des Quellcodes. Allerdings
+ verwenden die einzelnen Projekte oft unterschiedliche
+ Programmierstile und Vorgaben für Einrückungen. Wenn
+ man also einen funktionierenden Teil einer Funktion aus einem
+ Projekt verwendet, um ein ähnliches Problem in einem anderen
+ Projekt zu lösen, sollte man besonders vorsichtig sein, weil
+ sich ansonsten die CVS-Änderungseinträge mit
+ überflüssigen Einträgen füllen, die nur
+ das Markup des Quellcodes betreffen, ohne dass sich an der
+ Funktion des eigentlichen Quellcode etwas ändert
+ (withspace-only changes). Solche Änderungen
+ vergrößern nicht nur das CVS-Repository, sondern
+ erschweren es auch die Ursache für eventuell auftretende
+ Probleme zu finden.
+
War es notwendig eine Datei zu entfernen, wird dies besser
mittels des post-extract-Targets als
über den Patch selbst realisiert.Ein einfacher Austausch kann direkt über das
Makefile des Ports umgesetzt werden,
indem der in-place-Modus von &man.sed.1; genutzt wird. Dies
ist sehr hilfreich, wenn variable Werte korrigiert werden
sollen. Beispiel:post-patch:
@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README
@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure
Relativ häufig ergibt sich die Situation, in der die
portierte Software die CR/LF-Konventionen für Zeilenenden
nutzt (dies ist bei unter &windows; entwickelter Software
häufig der Fall). Dies kann bei weiteren Patches Probleme
(Compiler-Warnungen, Fehlermeldungen bei der Ausführung
von Skripten wie z.B. /bin/sh^M not found)
und anderes ergeben. Um schnell alle Dateien von CR/LF
nach LF zu konvertieren, kann
USE_DOS2UNIX=yes in das
Makefile des Ports geschrieben werden.
Hierzu kann eine Liste der zu konvertierenden Dateien erstellt
werden:USE_DOS2UNIX= util.c util.hSollen Gruppen von Dateien über verschiedene
Unterverzeichnisse konvertiert werden, kann
DOS2UNIX_REGEX genutzt werden, dessen
Argumente find-kompatible, reguläre
Ausdrücke sind. Mehr zur Formatierung findet sich in
&man.re.format.7;. Diese Option ist beim Konvertieren aller
Dateien mit definierter Endung, z.B. aller Dateien im
Quellcode, wobei binäre Dateien unberührt bleiben,
sinnvoll:USE_DOS2UNIX= yes
DOS2UNIX_REGEX= .*\.(c|cpp|h)KonfigurierenFügen Sie alle zusätzlichen
Veränderungsbefehle Ihrem Skript
configure hinzu und speichern Sie es im
scripts-Unterverzeichnis. Wie vorstehend
schon erwähnt, können Sie dies auch mit den Targets
Makefile und/oder Skripte mit dem Namen
pre-configure oder
post-configure erledigen.Handhabung von BenutzereingabenSollte der Port Eingaben vom Benutzer benötigen,
muss IS_INTERACTIVE im
Makefile des Ports gesetzt werden. Dies
erlaubt overnight builds Ihren Port zu
überspringen, falls der Nutzer die Variable
BATCH setzt (setzt der Nutzer hingegen die
Variable INTERACTIVE, werden
nur Ports gebaut, die Interaktion vom
Nutzer erwarten). Dies erspart den Rechnern, welche
kontinuierlich Ports bauen, eine Menge Zeit (siehe
unten).Zudem ist es empfohlen, falls sinnvolle Vorgaben für
interaktive Optionen gesetzt sind, die
PACKAGE_BUILDING-Variable zu prüfen
und das interaktive Skript abzuschalten. Dies macht es uns
möglich, Pakete für CDROMs und FTP-Server zu
bauen.Die Konfiguration des MakefileDas Konfigurieren des Makefile ist
sehr einfach und wir schlagen vor, dass Sie zunächst
einen Blick auf vorhandene Beispiele werfen. Zusätzlich
gibt es ein
Beispiel eines Makefile
in diesem Handbuch. Schauen Sie es sich an und verfolgen Sie
bitte die Abfolge der Variablen und Abschnitte in dieser
Vorlage. Damit erleichtern Sie es anderen,
Ihren Port zu lesen.Bedenken Sie bitte die folgenden Probleme in der hier
vorgegebenen Abfolge der Unterabschnitte dieses Kapitels, wenn
Sie Ihr neues Makefile erstellen:Der originale QuelltextLiegt der Quelltext in DISTDIR als eine
standardisierte und mit gzip gepackte Datei in der Art
foozolix-1.2.tar.gz? Falls ja,
können Sie zum nächsten Schritt übergehen.
Falls nicht, sollten Sie versuchen, die Variablen
DISTVERSION, DISTNAME,
EXTRACT_CMD,
EXTRACT_BEFORE_ARGS,
EXTRACT_AFTER_ARGS,
EXTRACT_SUFX, oder
DISTFILES zu ändern. Das hängt
davon ab, wie fremdartig das Distributionsfile Ihres Ports ist
(der häufigste Fall ist
EXTRACT_SUFX=.tar.Z, wenn der Tarball durch
ein normales compress und nicht durch
gzip gepackt wurde).Im schlimmsten Fall können Sie einfach Ihre eigene
Vorgabe mittels do-extract erzeugen
und die Standardvorgabe überschreiben; aber dies sollte
in den wenigsten Fällen, wenn überhaupt, notwendig
sein.BezeichnungenDer erste Teil des Makefile
beschreibt die Versionsnummer des Ports und führt ihn in
der richtigen Kategorie auf.PORTNAME und
PORTVERSIONSetzen Sie bitte die Variable
PORTNAME auf den Basisnamen Ihres Ports
und die Variable PORTVERSION auf dessen
Versionsnummer.PORTREVISION und
PORTEPOCHPORTREVISIONDie PORTREVISION-Variable ist ein
streng monoton wachsender Wert, welcher auf 0
zurückgesetzt wird, nachdem
PORTVERSION erhöht wurde (d.h.
jedes Mal, wenn ein offizielles Release erfolgt). Sie wird
an den Namen des Pakets angehängt, wenn sie ungleich
0 ist. Änderungen an PORTREVISION
werden von automatisierten Werkzeugen (z.B.
&man.pkg.version.1;) genutzt, um anzuzeigen, dass ein
neues Paket verfügbar ist.PORTREVISION sollte jedes Mal
erhöht werden, wenn eine Änderung am Port
erfolgt, die beträchtliche Auswirkungen auf den
Inhalt oder Struktur des aus dem Port erzeugten Pakets
zur Folge hat.Beispiele dafür, wann
PORTREVISION erhöht werden
sollte:Hinzufügen von Patches, welche
Sicherheitslücken schließen, Fehler
beseitigen oder neue Funktionalität zum Port
hinzufügen.Änderungen am Makefile
des Ports, welche compile-time-Optionen
hinzufügen oder entfernen.Änderungen bezüglich Packliste oder am
Verhalten während der Installation des Pakets
(d.h. Änderungen an einem Skript, welches
Ausgangsdaten für das Paket erzeugt, wie z.B.
SSH-Hostschlüssel).Versionssprung einer Shared-Library, welche eine
Abhängigkeit dieses Ports ist (In diesem Fall
würde ein Anwender bei der Installation des alten
Pakets scheitern, falls er eine neue Version der
Abhängigkeit bereits installiert hat, weil nach
der alten Bibliothek libfoo.x anstatt nach
libfoo.(x+1)) gesucht wird).Schleichende Änderungen am Distfile, welche
bedeutende funktionale Änderungen verursachen,
d.h. Änderungen des Distfile erfordern eine
Korrektur an distinfo, ohne dass
damit zusammenhängend die
PORTVERSION verändert wird,
obwohl ein diff -ru zwischen der
alten und der neuen Version bedeutende
Veränderungen am Code nachweist.Beispiele für Änderungen, welche keine
Erhöhung von PORTREVISION
erfordern:Stilistische Änderungen am Grundgerüst
des Ports ohne funktionale Änderungen am daraus
resultierenden Paket.Änderungen an der Variable
MASTER_SITES oder andere
funktionale Änderungen, welche das resultierende
Paket nicht verändern.Marginale Patches am Distfile wie die Korrektur
von Tippfehlern, welche nicht wichtig genug sind, um
dem Benutzer die Bürde eines Upgrades
aufzuerlegen.Build fixes, die ein Paket erst kompilierbar
machen, welches ohne diese Änderungen vorher
nicht erzeugt werden konnte (solange die
Änderungen keine funktionale Differenz bringen
auf Plattformen, auf denen dieses Paket schon vorher
gebaut werden konnte). Da
PORTREVISION den Inhalt des Pakets
wiederspiegelt, ist es nicht notwendig
PORTREVISION zu erhöhen, wenn
das Paket vorher nicht erstellt werden konnte.Als Faustregel gilt: Stellen Sie sich die Frage, ob
die durchgeführte Änderung am Port jedem hilft
(entweder aufgrund einer Verbesserung, Beseitigung eines
Fehlers, oder der Annahme, dass das neue Paket
überhaupt erst funktioniert) und wägen Sie es
gegen den Umstand ab, dass jedermann, der seine
Ports-Sammlung regelmässig auf dem neuesten Stand
hält, zu einer Aktualisierung gezwungen wird.
Falls Sie die Frage positiv beantworten sollten,
erhöhen Sie die Variable
PORTREVISION.PORTEPOCHVon Zeit zu Zeit geschieht es, dass irgendjemand
(Drittanbieter von Software oder FreeBSD Ports Committer)
etwas Dummes tut und eine Version einer Software
veröffentlicht, deren Versionsnummer niedriger ist
als die der vorherigen. Ein Beispiel hierfür ist
ein Port, der von foo-20000801 auf foo-1.0 geändert
wird (der Erstere wird fälschlicherweise als neue
Version behandelt, weil 2000801 ein numerisch
größerer Wert ist als 1).In Situationen wie diesen sollte die Variable
PORTEPOCH erhöht werden. Wenn
PORTEPOCH größer als 0 ist,
wird sie an den Namen des Pakets angehängt, wie in
Abschnitt 0 oberhalb bereits beschrieben.
PORTEPOCH darf niemals verringert oder
auf 0 gesetzt werden, weil der Vergleich des Pakets mit
einem früheren Zeitpunkt scheitern würde (d.h.
das Paket würde niemals als veraltet erkannt werden):
Die neue Versionsnummer (1.0,1 im
obigen Beispiel) ist immer noch numerisch kleiner als die
vorherige Version (2000801), aber das Suffix
,1 wird von automatisierten Werkzeugen
gesondert behandelt und wird als größer
erkannt, als das implizit angenommene Suffix
,0 im früheren Paket.Das Entfernen oder Zurücksetzen von
PORTEPOCH führt zu unendlichem
Ärger. Wenn Sie die obigen Ausführungen nicht
vollständig verstanden haben, lesen Sie es bitte
unbedingt nochmals bis Sie es vollständig
verinnerlicht haben, oder fragen Sie vor jeder
Änderung auf den Mailinglisten nach!Es wird erwartet, dass PORTEPOCH
für die weitaus überwiegende Zahl der Ports
nicht verwendet wird und der verantwortungsvolle und
vorausschauende Umgang mit PORTVERSION
macht es meist überflüssig, falls ein
späteres Release die Versionsstruktur ändern
sollte. Vorsicht ist geboten, wenn ein Release einer
Drittanbieter-Software ohne eine offizielle Versionsnummer
veröffentlicht wird, wie z.B. bei
Snapshot-Versionen. Man ist versucht,
das Release mit dem jeweiligen Datum zu bezeichnen,
was unweigerlich zu den oben beschriebenen Problemen
führt, wenn das nächste
offizielle Release erscheint.Wenn z.B. ein Snapshot zum Datum 20000917
veröffentlicht wird und die vorherige Version der
Software war 1.2, dann sollte der Snapshot die
PORTVERSION 1.2.20000917 oder
ähnlich erhalten und nicht 20000917, damit das
nachfolgende Release, angenommen 1.3, immer noch einen
größeren numerischen Wert aufweist.Beispiel für den Gebrauch von
PORTREVISION und
PORTEPOCHDer gtkmumble-Port, Version
0.10, befindet sich in der
Ports-Sammlung:PORTNAME= gtkmumble
PORTVERSION= 0.10PKGNAME wird zu
gtkmumble-0.10.Ein Sicherheitsloch wurde entdeckt, das einen lokalen
Patch von FreeBSD erforderlich macht.
PORTREVISION wird entsprechend
erhöht.PORTNAME= gtkmumble
PORTVERSION= 0.10
PORTREVISION= 1PKGNAME wird zu
gtkmumble-0.10_1Eine neue Version wird vom Software-Drittanbieter
veröffentlicht, bezeichnet mit der Version
0.2 (es stellt sich heraus, dass der
Autor beabsichtigte, dass 0.10
eigentlich 0.1.0 bedeuten sollte,
nicht was kommt nach 0.9
– Hoppla, aber nun ist es zu spät).
Da die neue Unterversion 2 numerisch
kleiner ist als die vorherige Version
10, muss PORTEPOCH
erhöht werden, um sicherzustellen, dass das neue
Paket auch als neuer erkannt wird. Da es
ein neues Release des Drittanbieters ist, wird
PORTREVISION auf 0 zurückgesetzt
(oder aus dem Makefile
entfernt).PORTNAME= gtkmumble
PORTVERSION= 0.2
PORTEPOCH= 1PKGNAME wird zu
gtkmumble-0.2,1Das nächste Release ist 0.3. Da
PORTEPOCH niemals verringert wird,
sind die Versionsvariablen nun wie folgt:PORTNAME= gtkmumble
PORTVERSION= 0.3
PORTEPOCH= 1PKGNAME wird zu
gtkmumble-0.3,1Falls PORTEPOCH mit diesem
Upgrade auf 0 zurückgesetzt
worden wäre, dann würde jemand, der das Paket
gtkmumble-0.10_1 installiert
hätte, das Paket gtkmumble-0.3
nicht als neuer erkennen, da 3 immer
noch numerisch kleiner ist als 10.
Bedenken Sie, dass genau dies der springende Punkt an
PORTEPOCH ist.PKGNAMEPREFIX und
PKGNAMESUFFIXZwei optionale Variablen,
PKGNAMEPREFIX und
PKGNAMESUFFIX, werden verknüpft mit
PORTNAME und
PORTVERSION, um
PKGNAME zu bilden als
${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}
. Stellen Sie bitte unbedingt sicher, dass diese
Variablen den Richtlinien
für einen guten Paketnamen entsprechen.
Insbesondere dürfen Sie
keinesfalls einen Bindestrich
(-) in PORTVERSION
verwenden. Falls das Paket den
language- oder
-compiled.specifics-Teil aufweist
(siehe unten) benutzen Sie PKGNAMEPREFIX
oder PKGNAMESUFFIX respektive. Machen Sie
diese Variablen nicht zum Bestandteil von
PORTNAME!LATEST_LINKIn einigen Fällen können mehrere Versionen
einer Applikation gleichzeitig in der Ports-Sammlung sein.
Das index build- und das package build-System müssen
nun in der Lage sein, diese als unterschiedliche Ports zu
erkennen, obwohl diese Versionen alle die gleichen Variablen
PORTNAME,
PKGNAMEPREFIX und sogar
PKGNAMESUFFIX aufweisen. In solchen
Fällen sollte die optionale Variable
LATEST_LINK auf einen unterschiedlichen
Wert für alle Ports gesetzt werden mit Ausnahme des
Haupt-Ports. Beispiele hierfür sind die
editors/vim5 und
editors/vim-Ports und die
www/apache*-Familie. Beachten Sie
bitte, dass die Frage der Auswahl der
wichtigsten Version
(am populärsten,
am besten Unterstützt,
zuletzt gepatcht usw.) ausserhalb der
Möglichkeiten dieses Handbuches liegt. Wir sagen Ihnen
nur, wie Sie die anderen Ports spezifizieren, nachdem Sie
den Haupt-Port erkoren haben.Namensregeln für PaketeIm Folgenden finden Sie die Regeln für die
Benennung Ihrer Pakete. Diese sollen gewährleisten,
dass das Paketverzeichnis leicht zu durchsuchen ist, da es
bereits abertausende Pakete gibt und die Nutzer sich mit
Schauder abwenden, wenn Ihre Augen überstrapaziert
werden!Der Paketname soll aussehen wie
language_region-name-compiled.specifics-version.numbers.Der Paketname ist definiert als
${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}
. Stellen Sie bitte sicher, dass die Variablen
Ihres Ports diesem Format entsprechen.FreeBSD bemüht sich ausserordentlich, die
Landessprachen seiner Nutzer zu unterstützen.
Die language-Variable soll
eine Abkürzung mit 2 Buchstaben sein der Sprachen
gemäß ISO-639, falls der Port für eine
bestimmte Sprache spezifisch ist.
Beispiele hierfür sind ja
für Japanisch, ru für
Russisch, vi für Vietnamesisch,
zh für Chinesisch,
ko für Koreanisch und
de für Deutsch.Sollte der Port spezifisch sein für eine
gewisse Region innerhalb eines Sprachraumes, dann
fügen Sie bitte auch den Ländercode mit 2
Buchstaben hinzu. Beispiele sind
en_US für nordamerikanisches
Englisch und fr_CH für
schweizerisches Französisch.Der language-Teil muss
in der PKGNAMEPREFIX-Variable gesetzt
werden.Der erste Buchstabe des
name-Teils muss kleingeschrieben
werden (der Rest des Namens kann Großbuchstaben
enthalten. Daher seien Sie bitte umsichtig, wenn Sie den
Namen einer Software konvertieren, welche
Grossbuchstaben enthält).
Es ist Tradition, Perl 5-Module durch
ein vorstehendes p5- und durch
Umwandlung des doppelten Doppelpunktes in Bindestriche
zu bezeichnen. So wird z.B. aus dem
Data::Dumper-Modul der
p5-Data-Dumper-Port.Vergewissern Sie sich, dass der Name des Ports und
seine Versionsnummer klar getrennt sind und in den
Variablen PORTNAME und
PORTVERSION stehen. Der einzige
Grund, um in PORTNAME einen
Versionsteil aufzunehmen ist der, dass die Software
wirklich so bezeichnet wird, wie z.B. die Ports
textproc/libxml2 oder
japanese/kinput2-freewnn.
Ansonsten sollte PORTNAME keine
versionsspezifischen Bestandteile aufweisen. Es ist
vollkommen normal, dass viele Ports den gleichen
PORTNAME aufweisen wie z.B. die
www/apache*-Ports. In diesem Falle
werden unterschiedliche Versionen (und unterschiedliche
Indexeinträge) unterschieden durch die Werte von
PKGNAMEPREFIX,
PKGNAMESUFFIX und
LATEST_LINK.Falls der Port mit verschiedenen, fest kodierten
Vorgaben (üblicherweise Teil des
Verzeichnisnamens in einer Familie von Ports) gebaut
werden kann, dann soll der
-compiled.specifics-Teil die
einkompilierten Vorgaben anzeigen (der Bindestrich ist
optional). Beispiele hierfür sind
Papiergrößen und Font-Einheiten.Der
-compiled.specifics-Teil
muss in der Variablen PKGNAMESUFFIX
gesetzt werden.Die Versionszeichenfolge sollte einen Bindestrich
(-) am Schluss haben und eine von
Punkten getrennte Liste von Integer-Zahlen und
kleingeschriebenen Buchstaben sein.
Es ist nicht zulässig, einen weiteren Bindestrich
innerhalb des Versionsstrings zu verwenden! Die einzige
Ausnahme hiervon ist die Zeichenfolge
pl (bedeutet
patchlevel), welche
nur dann gebraucht werden darf,
wenn die Applikation über keine
Haupt– oder Unterversionsnummern
verfügt. Wenn die Versionsbezeichnung der Software
Zeichenketten wie alpha,
beta, rc oder
pre enthält, dann nehmen Sie bitte
den ersten Buchstaben daraus und setzen ihn unmittelbar
hinter einen Punkt.
Falls die Versionszeichenfolge nach diesem Punkt
fortgesetzt wird, sollen die Zahlen ohne einen Punkt
zwischen den einzelnen Buchstaben folgen.Das Ziel ist es, die Ports anhand der
Versionszeichenfolge zu sortieren. Stellen Sie bitte
unbedingt sicher, dass die Bestandteile der
Versionsnummer immer durch einen Punkt getrennt sind
und falls Datumsangaben verwandt werden diese im Format
yyyy.mm.dd und nicht dd.mm.yyyy oder gar dem nicht Y2K-kompatiblen Format
yy.mm.dd vorliegen.Hier sind einige reale Beispiele, die aufzeigen,
wie man den Namen einer Applikation zu einem
vernünftigen Paketnamen umwandelt:SoftwarenamePKGNAMEPREFIXPORTNAMEPKGNAMESUFFIXPORTVERSIONGrundmule-2.2.2(leer)mule(leer)2.2.2Keine Änderung erforderlichEmiClock-1.0.2(leer)emiclock(leer)1.0.2keine Großbuchstaben für einzelne
Applikationenrdist-1.3alpha(leer)rdist(leer)1.3.aKeine Zeichenketten wie
alpha erlaubtes-0.9-beta1(leer)es(leer)0.9.b1keine Zeichenketten wie beta
erlaubtmailman-2.0rc3(leer)mailman(leer)2.0.r3keine Zeichenketten wie rc
erlaubtv3.3beta021.src(leer)tiff(leer)3.3Was sollte denn das eigentlich sein?tvtwm(leer)tvtwm(leer)pl11Versionsstring zwingend erforderlichpiewm(leer)piewm(leer)1.0Versionsstring zwingend erforderlichxvgr-2.10pl1(leer)xvgr(leer)2.10.1pl nur erlaubt, wenn keine
Versionsnummer vorhandengawk-2.15.6ja-gawk(leer)2.15.6Japanische Sprachversionpsutils-1.13(leer)psutils-letter1.13Papergröße beim Paketbau fix
kodiertpkfonts(leer)pkfonts3001.0Paket für 300 DPI SchriftartenFalls es in der Originalquelle überhaupt keinen
Anhaltspunkt für irgendeine Versionsbezeichnung gibt
und es unwahrscheinlich ist, dass der Autor jemals eine neue
Version veröffentlichen wird, dann setzen Sie bitte die
Version einfach auf 1.0 (wie im obigen
Beispiel piewm). Sie können auch den
Autor fragen oder eine Datumszeichenfolge
(yyyy.mm.dd)
als Version verwenden.KategorisierungCATEGORIESWenn ein Paket erzeugt wird, dann wird es unter
/usr/ports/packages/All abgelegt und
von einem oder mehreren Unterverzeichnissen werden auf
/usr/ports/packages Links erstellt.
Die Namen dieser Unterverzeichnisse werden durch die
Variable CATEGORIES festgelegt.
Dies geschieht, um dem Nutzer zu helfen, eine große
Zahl von Paketen auf einer FTP-Webseite oder einer CD/DVD
zu durchsuchen.
Bitte werfen Sie einen Blick auf die Aktuelle Liste der
Kategorien und suchen Sie die beste Kategorie
für Ihren Port aus.Diese Liste legt auch fest, an welcher Stelle in der
Ports-Sammlung der Port eingefügt wird. Falls Sie
mehrere Kategorien angeben wird angenommen, dass die Dateien
des Ports im Unterverzeichnis mit dem Namen der ersten
angegebenen Kategorie liegen. Schauen Sie bitte unten für weitere
Informationen darüber, wie man die richtige Kategorie
bestimmt.Aktuelle Liste der KategorienHier ist die aktuelle Liste der Kategorien. Die mit
einem Asterisk (*) bezeichneten sind
virtuelle Kategorien, also solche,
welche über kein eigenes Unterverzeichnis in der
Ports-Sammlung verfügen. Sie werden nur als
Sekundärkategorien benutzt und sind nur für
Suchzwecke eingerichtet worden.Für nicht-virtuelle Kategorien finden Sie eine
einzeilige Beschreibung in der Variable
COMMENT im
Makefile des jeweiligen
Unterverzeichnisses.KategorieBeschreibungAnmerkungaccessibilityPorts für behinderte Menschen.afterstep*Ports für den AfterStep
Window Manager.arabicArabische Sprachunterstützung.archiversArchivierungswerkzeuge.astroPorts für Astronomie.audioSound-Unterstützung.benchmarksBenchmarking-Werkzeuge.biologySoftware für Biologie.cadCAD-Werkzeuge.chineseChinesische Sprachunterstützung.commsKommunikationsprogramme.Hauptsächlich Software für serielle
Schnittstellen.convertersZeichensatz-Konverter.databasesDatenbanken.deskutilsDinge, die vor der Erfindung des Computers
auf dem Schreibtisch waren.develEntwicklungs-Werkzeuge.Legen Sie keine Bibliotheken hier ab, nur weil
es Bibliotheken sind, es sei denn, sie gehören
wirklich nirgendwo anders hin.dnsDNS-bezogene Software.editorsallgemeine Editoren.Spezielle Editoren gehören in Ihre
jeweilige Kategorie, (z.B. gehört ein
mathematischer Formeleditor in
math).elisp*Emacs-lisp-Ports.emulatorsEmulatoren für andere Betriebssysteme.
Terminal-Emulatoren gehören
nicht hierher; X-basierende
gehören zu x11 und
text-basierende zu comms oder
misc, abhängig von deren
genauer Funktionalität.financeFinanz-Software und ähnliches.frenchFranzösische Sprachunterstützung.
ftpFTP Client- und Server-Werkzeuge.Falls Ihr Port sowohl FTP als auch HTTP
unterstützt, stellen Sie ihn in
ftp mit der Zweitkategorie
www.gamesSpiele.geography*geografische Software.germanDeutsche Sprachunterstützung.gnome*Ports für GNOMEgraphicsgrafische Werkzeuge.gnustep*Software für GNUstep.hamradio*Software für Amateurfunk.haskell*Software für die
Haskell-Programmiersprache.hebrewHebräische Sprachunterstützung.
hungarianUngarische Sprachunterstützung.ipv6*IPv6-bezogene Software.ircInternet Relay Chat (IRC)-Werkzeuge.japaneseJapanische Sprachunterstützung.javaSoftware für die Java-Programmiersprache.
Die java-Kategorie sollte
nicht die Einzige für einen Port sein mit
Ausnahme der direkt nur mit der Programmiersprache
zusammenhängenden Applikationen. Porter sollten
java nicht als Hauptkategorie
eines Ports wählen.kde*Ports für das K Desktop Environment
(KDE)-Projekt.kld*Kernelmodule.koreanKoreanische Sprachunterstützung.langProgrammiersprachen.linux*Linux-Applikationen und -Werkzeuge.lisp*Software für die Lisp-Programmiersprache.
mailMail-Software.mathNumerische Berechnungen und andere
mathematische Werkzeuge.mboneMBone-Applikationen.miscVerschiedene Werkzeuge.Hauptsächlich Werkzeuge, die nicht
anderswo hingehören. Versuchen Sie, falls
irgend möglich, eine bessere Kategorie
für Ihren Port zu finden als
misc, weil Ports hier leicht
untergehen.multimediaMultimedia-Software.netVerschiedene Netzwerk-Software.net-imInstant Messaging-Software.net-mgmtNetzwerk-Management-Software.net-p2pPeer to peer-Netzwerkprogramme.newsUSENET News-Software.palmSoftware für Palm™.
parallel*Applikationen für paralleles Rechnen.
pear*Ports für das Pear PHP-Framework.perl5*Ports, welche Perl
Version 5 benötigen.plan9*Verschiedene Programme von Plan9.
polishPolnische Sprachunterstützung.ports-mgmtHilfsprogramme für das Installieren und
Entwickeln von FreeBSD Ports und Paketen.portuguesePortugiesische Sprachunterstützung.
printDrucker-Software.Desktop Veröffentlichungs-Werkzeuge (DTP,
Betrachter etc.) gehören auch hierher.python*Software für Python.
ruby*Software für Ruby.
rubygems*Ports für RubyGems-Pakete.
russianRussische Sprachunterstützung.scheme*Software für die
Scheme-Programmiersprache.scienceWissenschaftliche Programme, die in keine
andere Kategorie passen wie z.B.
astro,
biology und
math.securitySecurity-Werkzeuge.shellsShells.spanish*Spanische Sprachunterstützung.sysutilsSystem-Werkzeuge.tcl*Ports, welche Tcl benötigen.tcl80*Ports, welche Tcl 8.0 benötigen.tcl82*Ports, welche Tcl 8.2 benötigen.tcl83*Ports, welche Tcl 8.3 benötigen.tcl84*Ports, welche Tcl 8.4 benötigen.textprocTextverarbeitungsprogramme.Dies beinhaltet nicht DTP-Werkzeuge, diese
gehören in print.
tk*Ports, welche Tk benötigen.tk80*Ports, welche Tk 8.0 benötigen.tk82*Ports, welche Tk 8.2 benötigen.tk83*Ports, welche Tk 8.3 benötigen.tk84*Ports, welche Tk 8.4 benötigen.tkstep80*Ports, welche TkSTEP 8.0 benötigen.
ukrainianUkrainische Sprachunterstützung.vietnameseVietnamesische Sprachunterstützung.
windowmaker*Ports für den WindowMaker Window-Manager.
wwwSoftware für das World Wide Web (WWW).
HTML-Werkzeuge gehören auch hierher.
x11X-Window-System und dergleichen.Diese Kategorie ist nur für Software,
welche direkt X unterstützt.
Fügen Sie keine normalen X-Applikationen hinzu.
Die meisten davon gehören in eine andere
x11-*-Kategorie (siehe unten).
Falls Ihr Port eine X-Applikation
ist, dann definieren Sie bitte
USE_XLIB (impliziert durch
USE_IMAKE) und fügen ihn der
entsprechenden Kategorie hinzu.x11-clocksX11-Uhren.x11-driversX11-Treiber.x11-fmX11-Dateimanager.x11-fontsX11-Schriftarten und Werkzeuge.x11-serversX11-Server.x11-themesX11-Themes.x11-toolkitsX11-Toolkits.x11-wmX11-Window-Manager.xfce*Ports in Zusammenhang mit Xfce.zope*Zope-Unterstützung.
Wählen der richtigen KategorieDa viele der Kategorien sich überlappen,
müssen Sie oft festlegen, welches die primäre
Kategorie Ihres Ports ist. Hierzu gibt es einige Regeln,
welche diese Auswahl bestimmen. Hier ist die Liste der
Regeln mit abnehmender Wichtigkeit:Die erste (primäre) Kategorie muss eine
physische (keine virtuelle, siehe oben) sein. Dies
ist notwendig damit Pakete erstellt werden können.
Die nachfolgenden Kategorien können wahllos
virtuelle oder physische Kategorien sein.Sprachspezifische Kategorien kommen immer zuerst.
Wenn Ihr Port z.B. Japanische X11-Schriftarten
installiert, dann muss Ihre
CATEGORIES-Zeile
japanese x11-fonts
enthalten.Spezifische Kategorien werden vor weniger
spezifischen Kategorien aufgelistet. Ein HTML-Editor
sollte z.B. als www editors
aufgeführt werden und nicht umgekehrt.
Genauso sollten Sie keinen Port unter
net aufführen, wenn er zu
irc, mail,
mbone, news,
security oder
www passt, da
net stillschweigend eingeschlossen
ist in diesen Kategorien.x11 wird nur als sekundäre
Kategorie benutzt, wenn die primäre Kategorie eine
sprachspezifische ist. Keinesfalls sollten Sie
x11 in die Kategorie-Zeile einer
X-Applikation setzen.Emacs modes gehören
in die gleiche Kategorie wie die vom jeweiligen mode
unterstützte Applikation und nicht in
editors. Ein
Emacs mode z.B. für das
Editieren von Quelltext einer bestimmten
Programmiersprache gehört zur Kategorie
lang.Für Ports, die vom Benutzer ladbare Kernelmodule
installieren, sollte die virtuelle Kategorie
kld in die
CATEGORIES-Zeile aufgenommen
werden.misc sollte nicht zusammen mit
irgendeiner anderen nicht-virtuellen Kategorie
auftreten. Falls Sie misc mit einer
anderen Kategorie in CATEGORIES haben
bedeutet dies, dass Sie gefahrlos
misc streichen und die andere
Kategorie alleine verwenden können!Falls Ihr Port wirklich in keine andere Kategorie
passt, verwenden Sie bitte
misc.Falls Sie sich über die Kategorie im Unklaren sind,
hinterlassen Sie bitte einen Kommentar in Ihrem per
&man.send-pr.1; eingereichten Bericht, damit wir diese Frage
vor dem Import diskutieren können. Falls Sie ein
Committer sind, schicken Sie bitte eine Nachricht an
&a.ports;, damit die Frage im Vorhinein erörtert werden
kann. Neue Ports werden zu häufig falsch kategorisiert
und werden sofort wieder verschoben. Das bläht das
Master Source Repository unnötig auf.Eine neue Kategorie vorschlagenDa die Ports-Sammlung über viele Jahre gewachsen
ist, wurden viele neue Kategorien hinzugefügt. Neue
Kategorien können virtuell (ohne
eigenes Unterverzeichnis in der Ports-Sammlung) oder
physisch sein.
Der nachfolgende Text führt einige Punkte auf, welche
bei der Neueinführung einer physischen Kategorie
beachtet werden müssen, damit Sie dies bei einem
eventuellen Vorschlag Ihrerseits berücksichtigen
können.Unsere bestehende Maxime ist die Vermeidung der
Neuanlage von physischen Kategorien, solange nicht eine
große Zahl von Ports zugeordnet werden können
oder falls ihr nicht Ports zugehören würden,
welche eine logisch abgegrenzte Gruppe von limitiertem
öffentlichem Interesse zugehören würden
(zum Beispiel neue Sprachkategorien) oder vorzugsweise
beides.Die Erklärung dafür ist, dass eine Neuanlage
einer physischen Kategorie einen erheblichen
Arbeitsaufwand sowohl für die Committer als
auch diejenigen Nutzer bedeutet, welche die Änderungen
der Ports-Sammlung nachvollziehen. Zusätzlich
verursachen Vorschläge für neue Kategorien oftmals
Kontroversen (natürlich deswegen, weil es keinen klaren
Konsens darüber gibt, welche Kategorie als zu
groß betrachtet werden muss noch ob sich
bestimmte Kategorien zur einfachen Suche eignen (und wie
viele Kategorien überhaupt ideal wären) und so
weiter).Hier ist das Prozedere:Schlagen Sie die neue Kategorie auf &a.ports; vor.
Sie sollten eine detaillierte Begründung für
die neue Kategorie beifügen einschließlich
einer Erklärung, warum Sie meinen, die
existierenden Kategorien seien nicht ausreichend.
Zeigen Sie außerdem eine Liste der zu
verschiebenden Ports (falls neue Ports in
GNATS auf ihren commit
warten, die in diese Kategorie passen würden.
Listen Sie diese bitte auch mit auf). Sind Sie der
Maintainer oder Einreicher dieser Ports, erwähnen
Sie es bitte. Es verleiht Ihrem Vorschlag mehr
Gewicht.Nehmen Sie an der Diskussion teil.Falls es Unterstützung für Ihren Vorschlag
geben sollte, reichen Sie bitte einen PR ein, welcher
die Begründung und die Liste der betroffenen Ports
enthält, die verschoben werden müssen.
Idealerweise sollte der PR Patches für Folgendes
enthalten:Makefiles für die
neuen Ports nach dem RepocopyMakefile für die neue
KategorieMakefile für die alten
Kategorien der betroffenen PortsMakefiles für Ports,
welche von den alten Ports abhängenFür zusätzliches Ansehen sorgen Sie,
wenn Sie die anderen Dateien, die geändert
werden müssen, beifügen wie in der
Direktive des Committer's Guide beschrieben.Da es die Ports-Infrastruktur beeinflusst und nicht
nur die Durchführung von Repocopies und
möglicherweise sogar Regressionstests auf dem Build
Cluster durchgeführt werden müssen, sollte der
PR dem Ports Management Team &a.portmgr; zugeordnet
werden.Sobald der PR bestätigt wurde muss ein
Committer den Rest der Prozedur durchführen, welche
im
Committers Guide beschrieben ist.Das Vorschlagen einer neuen virtuellen Kategorie ist
ähnlich, aber wesentlich weniger aufwendig, weil
keine Ports verschoben werden müssen. In diesem Falle
müssen nur die Patches an den PR beigefügt werden,
welche die neue Kategorie zur Variable
CATEGORIES der betroffenen Ports
hinzufügen.Vorschlagen einer Neuorganisation aller
KategorienVon Zeit zu Zeit schlägt jemand eine komplette
Neuorganisation aller Ports, entweder mit einer zweistufigen
Struktur oder irgendeiner Art von
Schlüsselwörtern, vor. Bis heute wurde keiner
dieser Vorschläge umgesetzt, weil sie zwar einfach
zu machen sind, aber der Aufwand zur Umsetzung und
Reorganisation der kompletten Ports-Sammlung schlichtweg
mörderisch wäre. Bitte lesen Sie die Geschichte
dieser Vorschläge in den Archiven der Mailinglisten
nach, bevor Sie diese Ideen nochmals unterbreiten. Zudem
sollten Sie gewappnet sein, dass man Sie auffordert, einen
arbeitsfähigen Prototyp vorzulegen.Die DistributionsdateienDer zweite Teil des Makefile
beschreibt die Dateien, welche heruntergeladen werden
müssen, um den Port zu bauen und wo diese Dateien zu
finden sind.DISTVERSION/DISTNAMEDISTNAME ist der Name der Applikation
wie er von den Autoren vergeben wurde.
DISTNAME hat als Vorgabe
${PORTNAME}-${PORTVERSION} also
überschreiben Sie diese Vorgabe nur, wenn es notwendig
ist. DISTNAME wird nur an zwei Stellen
genutzt. Erstens: (DISTFILES) hat als
Vorgabe
${DISTNAME}${EXTRACT_SUFX}.
Zweitens: Die Distributionsdatei soll in einem
Unterverzeichnis namens WRKSRC
extrahiert werden, dessen Vorgabe
work/${DISTNAME}
ist.Manche Drittanbieter-Namen, welche nicht in das Schema
${PORTNAME}-${PORTVERSION} passen,
können durch Setzen von DISTVERSION
automatisch behandelt werden. PORTVERSION
und DISTNAME werden automatisch
abgeleitet, können aber natürlich manuell
überschrieben werden. Die folgende Tabelle führt
einige Beispiele auf:DISTVERSIONPORTVERSION0.7.1d0.7.1.d10Alpha310.a33Beta7-pre23.b7.p28:f_178f.17PKGNAMEPREFIX und
PKGNAMESUFFIX beeinflussen
DISTNAME nicht. Beachten Sie bitte
auch, dass Sie DISTNAME
unverändert lassen sollten, falls
WRKSRC denselben Wert hat wie
work/${PORTNAME}-${PORTVERSION}
und gleichzeitig dass Archiv des originalen Quelltextes
anders benannt ist als
${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}.
Es ist einfacher
DISTFILES zu definieren, als
DISTNAME und WRKSRC
(und möglicherweise EXTRACT_SUFX)
zu setzen.MASTER_SITESDokumentieren Sie das Verzeichnis der FTP/HTTP-URL,
welche auf den originalen Tarball zeigt, in der Variable
MASTER_SITES. Bitte vergessen Sie
niemals den Schrägstrich (/)
am Ende!Die make-Makros werden versuchen,
diese Festlegung für die Aufbereitung der
Distributionsdateien mittels FETCH zu
benutzen, falls sie diese nicht schon auf dem System
finden.Es wird empfohlen, mehrere Webseiten in dieser Liste
aufzuführen, vorzugsweise auf verschiedenen
Kontinenten. Dies ist ein Schutz gegen Probleme bei
größeren Ausfällen im Internet.
Wir planen sogar Unterstützung einzubauen,
die automatisch einen Server in der Nähe zum
Herunterladen bestimmt. Die Verfügbarkeit von
vielen Webseiten wird dieses Vorhaben beträchtlich
erleichtern.Falls der originale Tarball Teil eines populären
Archivs ist, wie X-contrib, GNU oder Perl CPAN, können
Sie möglicherweise auf diese Seiten in einer einfachen
und kompakten Form mittels
MASTER_SITE_*
(d.h., MASTER_SITE_XCONTRIB,
MASTER_SITE_GNU und
MASTER_SITE_PERL_CPAN) referenzieren.
Setzen Sie einfach MASTER_SITES auf eine
dieser Variablen und MASTER_SITE_SUBDIR
auf den Pfad innerhalb des Archivs. Hier ist ein
Beispiel:MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applicationsDiese Variablen werden in
/usr/ports/Mk/bsd.sites.mk definiert.
Es werden ständig neue Einträge hinzugefügt,
daher stellen Sie bitte unbedingt sicher, dass Sie die
neueste Version verwenden, bevor Sie einen Port
einschicken.Der Nutzer kann ebenfalls die Variable
MASTER_SITE_* in der
/etc/make.conf setzen. Dadurch werden
unsere Vorgaben überschrieben und stattdessen werden
die Spiegel-Server seiner Wahl für die populären
Archive genutzt.EXTRACT_SUFXFalls Sie eine Distributionsdatei haben, die ein
eigentümliches Suffix nutzt, um die Art der
Kompression anzuzeigen, dann setzen Sie
EXTRACT_SUFX.Ist die Distributionsdatei zum Beispiel im Stil von
foo.tgz anstatt des normalen
foo.tar.gz benannt, würden Sie
schreiben:DISTNAME= foo
EXTRACT_SUFX= .tgzFalls erforderlich, setzen die Variablen
USE_BZIP2 und USE_ZIP
automatisch EXTRACT_SUFX auf
.tar.bz2 oder .zip.
Falls keine der beiden gesetzt ist, dann verwendet
EXTRACT_SUFX die Vorgabe
.tar.gz.Sie müssen niemals beide Variablen
EXTRACT_SUFX und
DISTFILES setzen.DISTFILESManchmal haben die zu ladenden Dateien keinerlei
Ähnlichkeit mit dem Namen des Ports. Es könnte
z.B. source.tar.gz oder ähnlich
heißen. In anderen Fällen könnte der
Quelltext in mehreren Archiven sein und alle müssen
heruntergeladen werden.Falls dies der Fall ist, setzen Sie
DISTFILES als eine durch Leerzeichen
getrennte Liste aller Dateien, die geladen werden
müssen.DISTFILES= source1.tar.gz source2.tar.gzWenn nicht ausdrücklich gesetzt, verwendet
DISTFILES als Vorgabe
${DISTNAME}${EXTRACT_SUFX}.EXTRACT_ONLYFalls nur einige der DISTFILES
extrahiert werden müssen (z.B. eine Datei ist der
Quelltext und eine andere ist ein unkomprimiertes Dokument),
dann listen Sie die zu extrahierenden Dateien in
EXTRACT_ONLY auf.DISTFILES= source.tar.gz manual.html
EXTRACT_ONLY= source.tar.gzFalls keine der
DISTFILES unkomprimiert sein sollte,
dann setzen Sie EXTRACT_ONLY auf einen
leeren String.EXTRACT_ONLY=PATCHFILESFalls Ihr Port zusätzliche Patches benötigt,
welche per FTP oder HTTP verfügbar sind, dann setzen
Sie PATCHFILES auf den Namen der Dateien
und PATCH_SITES auf die URL des
Verzeichnisses, das diese Patches enthält (das Format
ist das gleiche wie MASTER_SITES).Falls ein Patch wegen einiger zusätzlicher
Pfadnamen nicht relativ zum Anfang des Quelltextbaumes
(d.h., WRKSRC) liegt, dann setzen Sie
bitte PATCH_DIST_STRIP entsprechend.
Wenn z.B. alle Pfadnamen in diesem Patch ein
zusätzliches foozolix-1.0/ vor ihren
Dateinamen aufweisen, dann setzen Sie bitte
PATCH_DIST_STRIP=-p1.Kümmern Sie sich nicht darum, ob die Patches
komprimiert sind. Sie werden automatisch dekomprimiert,
wenn die Dateinamen auf .gz oder
.Z enden.Falls der Patch zusammen mit anderen Dateien in einem
gezippten Tarball verteilt wird (z.B. mit Dokumentation),
dann können Sie nicht PATCHFILES
verwenden. In diesem Fall fügen Sie den Namen und den
Ort dieses Tarballs zu DISTFILES und
MASTER_SITES. Benutzen Sie dann die
EXTRA_PATCHES-Variable, um auf diese
Dateien zu zeigen und bsd.port.mk
wird automatisch diese Dateien nutzen. Kopieren Sie
niemals Patch-Dateien in das
PATCHDIR-Verzeichnis, weil es
möglicherweise nicht beschreibbar ist.Der Tarball wird zusammen mit dem anderen Quelltext
extrahiert werden. Eine ausdrückliche Dekomprimierung
eines mit gzip oder compress erzeugten Tarball ist nicht
notwendig. Sollten Sie dies dennoch vorgeben, so beachten
Sie bitte peinlich genau, dass Sie nichts
überschreiben, was bereits im Verzeichnis vorhanden
ist. Vergessen Sie auch nicht den kopierten Patch im
Target von pre-clean zu
entfernen.Verschiedene Distributionsdateien oder Patches von
verschiedenen Seiten und Verzeichnissen
(MASTER_SITES:n)(Betrachten Sie es als in irgendeiner Form
fortgeschrittenes Thema.
Neulinge sollten möglicherweise diesen Abschnitt
beim ersten Lesen überspringen).Dieser Abschnitt stellt Informationen über
die Mechanismen zum Herunterladen von Dateien zur
Verfügung und behandelt die Variablen
MASTER_SITES:n und
MASTER_SITES_NN.
Wir beziehen uns im weiteren Text auf diese Variablen
als MASTER_SITES:n.Etwas Hintergrundinformation zu Beginn: OpenBSD
verfügt über eine sehr elegante Option
innerhalb der Variablen DISTFILES und
PATCHFILES. Sowohl Dateien als auch
Patches können mit angehängten
:n-Bezeichnern versehen werden wobei
n in beiden Fällen
[0-9] sein kann und eine
Gruppenzugehörigkeit anzeigt. Ein Beispiel
hierfür ist:DISTFILES= alpha:0 beta:1In OpenBSD wird die Datei alpha
mit der Variable MASTER_SITES0
verknüpft anstatt dem in FreeBSD gebräuchlichen
MASTER_SITES und
beta mit
MASTER_SITES1.Das ist eine sehr interessante Möglichkeit,
die endlose Suche nach der richtigen Download-Seite zu
verkürzen.Stellen Sie sich zwei Dateien in
DISTFILES und 20 Webseiten in der
Variable MASTER_SITES vor. Alle Seiten
sind erschreckend langsam, beta
findet sich auf allen Seiten in
MASTER_SITES und
alpha kann nur auf der zwanzigsten
Seite gefunden werden. Wäre es nicht reine
Verschwendung, wenn der Maintainer alle Seiten zuvor
überprüfen müsste? Kein guter
Start für das wundervolle Wochenende!Übertragen Sie diesen Umstand auf noch mehr
DISTFILES und mehr
MASTER_SITES. Ganz sicher würde
unser distfiles survey master die
Erleichterung sehr zu schätzen wissen, die eine
solche Verringerung der Netzwerkbelastung bringen
würde.In den nächsten Abschnitten sehen Sie die
Implementierung dieser Idee durch FreeBSD. Dabei wurde das
Konzept von OpenBSD ein wenig verbessert.Prinzipielle InformationDieser Abschnitt informiert Sie, wie Sie schnell
ein fein granuliertes Herunterladen von vielen Dateien
und Fehlerbereinigungen von verschiedenen Webseiten und
Unterverzeichnissen bewerkstelligen. Wir beschreiben
hier den Fall der vereinfachten Nutzung von
MASTER_SITES:n. Das ist für die
meisten Szenarien ausreichend. Falls Sie weitere
Informationen benötigen, sollten Sie den
nächsten Abschnitt lesen.Einige Programme bestehen aus mehreren Dateien,
welche von verschiedenen Webseiten heruntergeladen werden
müssen. Zum Beispiel besteht
Ghostscript aus dem Kern des
Programms und einer großen Zahl von Treiberdateien,
die vom Drucker des Benutzers abhängen. Einige dieser
Treiberdateien werden mit der Kernapplikation mitgeliefert
aber viele müssen von verschiedenen Webseiten
heruntergeladen werden.Um das zu unterstützen, muss jeder Eintrag in
DISTFILES mit einem Komma und
einem tag name abgeschlossen werden.
Jeder in MASTER_SITES aufgeführte
Webseite folgt ein Komma und eine Marke (tag), die
anzeigt, welche Datei von dieser Webseite heruntergeladen
werden kann.Stellen Sie sich bitte eine Applikation vor, deren
Quelltext in zwei Teile aufgeteilt ist,
source1.tar.gz
und source2.tar.gz, welche von zwei
verschiedenen Webseiten heruntergeladen werden
müssen. Das Makefile des Port
würde Zeilen enthalten wie in
.Vereinfachtes Beispiel für den Gebrauch von
MASTER_SITES:n mit einer Datei pro
WebseiteMASTER_SITES= ftp://ftp.example1.com/:source1 \
ftp://ftp.example2.com/:source2
DISTFILES= source1.tar.gz:source1 \
source2.tar.gz:source2Verschiedene Dateien können die gleiche Marke
aufweisen. Ausgehend vom vorherigen Beispiel nehmen wir
an, dass es noch eine dritte Datei gibt
(source3.tar.gz), welche von
ftp.example2.com heruntergeladen werden
soll. Das Makefile würde dann
aussehen wie .Vereinfachtes Beispiel für den Gebrauch von
MASTER_SITES:n mit mehr als einer
Datei pro WebseiteMASTER_SITES= ftp://ftp.example1.com/:source1 \
ftp://ftp.example2.com/:source2
DISTFILES= source1.tar.gz:source1 \
source2.tar.gz:source2 \
source3.tar.gz:source2Ausführliche InformationIn Ordnung, das vorherige Beispiel reicht nicht
für Ihre Bedürfnisse? In diesem Abschnitt
werden wir im Detail erklären, wie der fein
granulierte Mechanismus zum Herunterladen
(MASTER_SITES:n) funktioniert
und wie Sie Ihre Ports modifizieren, um ihn zu
nutzen.Elemente können nachstehend bezeichnet werden
mit :n
wobei n in diesem Falle
[^:,]+ ist. Das heißt
n könnte theoretisch
jede alphanumerische Zeichenkette sein, aber wir
beschränken sie auf
[a-zA-Z_][0-9a-zA-Z_]+ für
diesen Moment.Zudem ist die Zeichenkette case sensitive; d.h.
n unterscheidet sich von
N.Allerdings dürfen die folgenden Wörter
nicht gebraucht werden, da sie spezielle Bedeutungen
haben: default,
all und ALL
(diese Wörter werden intern genutzt in Punkt
).
Ausserdem ist DEFAULT ein
reserviertes Wort (beachten Sie ).Elemente mit angehängtem
:n gehören zur Gruppe
n, :m
gehört zur Gruppe m
und so weiter.Elemente ohne Anhängsel sind gruppenlos,
d.h. sie gehören alle zu der speziellen Gruppe
DEFAULT. Falls sie an irgendeinem
Element DEFAULT hängen, ist
dies überflüssig, es sei denn Sie wollen,
dass ein Element sowohl zu DEFAULT
als auch anderen Gruppen gleichzeitig gehört
(beachten Sie ).Die folgenden Beispiele sind gleichwertig, aber
das erste Beispiel ist vorzuziehen:MASTER_SITES= alpha
MASTER_SITES= alpha:DEFAULTGruppen sind nicht ausschliessend, d.h. ein
Element kann mehreren Gruppen gleichzeitig
angehören und eine Gruppe wiederum kann entweder
mehrere Elemente oder überhaupt keine aufweisen.
Wiederholte Elemente sind schlicht nur wiederholte
Elemente.Wenn Sie wollen, dass ein Element gleichzeitig zu
mehreren Gruppen gehört, dann können Sie
diese durch ein Komma (,)
trennen.Anstatt jedes Mal ein anderes Anhängsel zu
verwenden und Wiederholungen aufzuführen,
können Sie mehrere Gruppen auf einmal in einem
einzigen Anhängsel bestimmen. Zum Beispiel
markiert :m,n,o ein Element,
welches zu den Gruppen m,
n und o
gehört.Alle folgenden Beispiele sind gleichwertig,
aber das erste Beispiel ist vorzuziehen:MASTER_SITES= alpha alpha:SOME_SITE
MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE
MASTER_SITES= alpha:SOME_SITE,DEFAULT
MASTER_SITES= alpha:DEFAULT,SOME_SITEAlle Webseiten in einer Gruppe werden
gemäß MASTER_SORT_AWK
sortiert. Alle Gruppen innerhalb von
MASTER_SITES und
PATCH_SITES werden genauso
sortiert.Gruppensemantik kann benutzt werden in den
folgenden Variablen: MASTER_SITES,
PATCH_SITES,
MASTER_SITE_SUBDIR,
PATCH_SITE_SUBDIR,
DISTFILES und
PATCHFILES entsprechend der
folgenden Syntax:Elemente mit MASTER_SITES,
PATCH_SITES,
MASTER_SITE_SUBDIR und
PATCH_SITE_SUBDIR müssen
mit einem Schrägstrich beendet werden (
/). Falls Elemente zu
irgendwelchen Gruppen gehören, muss
:n
direkt nach dem Trenner /
stehen. Der
MASTER_SITES:n-Mechanismus
verlässt sich auf das Vorhandensein des
Trennzeichens /, um verwirrende
Elemente zu vermeiden in denen
:n ein zulässiger
Bestandteil des Elementes ist und das Auftreten
von :n die Gruppe
n anzeigt. Aus
Kompatibilitätsgründen (da der
/-Trenner sowohl in
MASTER_SITE_SUBDIR als auch
PATCH_SITE_SUBDIR-Elementen
nicht erforderlich ist) wird, falls das auf das
Anhängsel folgende nächste Zeichen kein
/ ist, auch
:n als gültiger Teil des
Elementes behandelt anstatt als Gruppenzusatz,
selbst wenn ein Element ein angehängtes
:n aufweist. Beachten Sie
sowohl
als auch .Ausführliches Beispiel von
MASTER_SITES:n in
MASTER_SITE_SUBDIRMASTER_SITE_SUBDIR= old:n new/:NEWVerzeichnisse innerhalb der Gruppe
DEFAULT ->
old:nVerzeichnisse innerhalb der Gruppe
NEW -> newAusführliches Beispiel von
MASTER_SITES:n mit
Komma-Operator, mehreren Dateien, mehreren
Webseiten und mehreren
UnterverzeichnissenMASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \
http://site3/:group3 http://site4/:group4 \
http://site5/:group5 http://site6/:group6 \
http://site7/:DEFAULT,group6 \
http://site8/%SUBDIR%/:group6,group7 \
http://site9/:group8
DISTFILES= file1 file2:DEFAULT file3:group3 \
file4:group4,group5,group6 file5:grouping \
file6:group7
MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \
directory-one/:group6,DEFAULT \
directoryDas vorstehende Beispiel führt zu
einem fein granulierten Herunterladen.
Die Webseiten werden in der exakten Reihenfolge
ihrer Nutzung aufgelistet.file1 wird
heruntergeladen vonMASTER_SITE_OVERRIDEhttp://site1/directory-trial:1/http://site1/directory-one/http://site1/directory/http://site2/http://site7/MASTER_SITE_BACKUPfile2 wird genauso
heruntergeladen wie
file1, da sie zur
gleichen Gruppe gehörenMASTER_SITE_OVERRIDEhttp://site1/directory-trial:1/http://site1/directory-one/http://site1/directory/http://site2/http://site7/MASTER_SITE_BACKUPfile3 wird
heruntergeladen vonMASTER_SITE_OVERRIDEhttp://site3/MASTER_SITE_BACKUPfile4 wird
heruntergeladen vonMASTER_SITE_OVERRIDEhttp://site4/http://site5/http://site6/http://site7/http://site8/directory-one/MASTER_SITE_BACKUPfile5 wird
heruntergeladen vonMASTER_SITE_OVERRIDEMASTER_SITE_BACKUPfile6 wird
heruntergeladen vonMASTER_SITE_OVERRIDEhttp://site8/MASTER_SITE_BACKUPWie gruppiere ich eine der speziellen Variablen
aus bsd.sites.mk, d.h.
MASTER_SITE_SOURCEFORGE?Lesen Sie .Ausführliches Beispiel von
MASTER_SITES:n mit
MASTER_SITE_SOURCEFORGEMASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/}
DISTFILES= something.tar.gz:sourceforgesomething.tar.gz wird von
allen Webseiten innerhalb von
MASTER_SITE_SOURCEFORGE
heruntergeladen.Wie nutze ich dies mit
PATCH*-Variablen.In allen Beispielen wurden
MASTER*-Variablen genutzt,
aber sie funktionieren exakt genauso mit
PATCH*-Variablen, wie Sie an
.
sehen können.Vereinfachte Nutzung von
MASTER_SITES:n mit
PATCH_SITES.PATCH_SITES= http://site1/ http://site2/:test
PATCHFILES= patch1:testWas ändert sich für die Ports?
Was ändert sich nicht?Alle bestehenden Ports bleiben gleich. Der Code
für MASTER_SITES:n wird nur
aktiviert, falls es Elemente mit angehängtem
:n
entsprechend den zuvor erwähnten Syntax-Regeln
wie in
gezeigt gibt.Das Target des Port bleibt gleich:
checksum,
makesum,
patch,
configure,
build etc.
Mit der offensichtlichen Ausnahme von
do-fetch,
fetch-list,
master-sites
und patch-sites.do-fetch: nutzt die
neue Gruppierung DISTFILES und
PATCHFILES mit ihren darauf
zutreffenden Gruppenelementen in
MASTER_SITES und
PATCH_SITES welche zutreffende
Gruppenelemente sowohl in
MASTER_SITE_SUBDIR als auch
PATCH_SITE_SUBDIR aufweisen.
Sehen Sie hierzu .fetch-list: arbeitet
wie das alte fetch-list
mit der Ausnahme, dass es nur wie
do-fetch
gruppiert.master-sites
und patch-sites:
(inkompatibel zu älteren Versionen) geben
nur die Elemente der Gruppe
DEFAULT zurück.
Beziehungsweise sie führen genau genommen
die Targets von
master-sites-default und
patch-sites-default
aus.Weiterhin ist der Gebrauch des Target entweder
von master-sites-all oder
patch-sites-all der
direkten Überprüfung von
MASTER_SITES oder
PATCH_SITES vorzuziehen.
Zudem ist nicht garantiert, dass das direkte
Überprüfen in zukünftigen Versionen
funktionieren wird. Sehen Sie
für weitere Informationen zu diesen neuen
Port-Targets.Neue Port-TargetsEs gibt
master-sites-n
und
patch-sites-n-Targets,
welche die Elemente der jeweiligen Gruppe
n innerhalb von
MASTER_SITES und
PATCH_SITES auflisten.
Beispielweise werden sowohl
master-sites-DEFAULT als
auch patch-sites-DEFAULT
die Elemente der Gruppe
DEFAULT,
master-sites-test und
patch-sites-test der
Gruppe test usw.
zurückgeben.Es gibt das neue Target
master-sites-all und
patch-sites-all,
welche die Arbeit der alten Targets
master-sites und
patch-sites
übernehmen. Sie geben die Elemente aller
Gruppen zurück,als würden sie zur
gleichen Gruppe gehören - mit dem Vorbehalt,
dass sie so viele
MASTER_SITE_BACKUP und
MASTER_SITE_OVERRIDE auflisten
wie Gruppen mittels
DISTFILES oder
PATCHFILES definiert sind.
Das gleiche gilt entsprechend für
master-sites-all und
patch-sites-all.DIST_SUBDIRVerhindern Sie, dass Ihr Port das Verzeichnis
/usr/ports/distfiles in Unordnung
bringt. Falls Ihr Port eine ganze Reihe von Dateien
herunterladen muss oder eine Datei enthält,
die einen Namen hat, der möglicherweise mit
anderen Ports in Konflikt stehen könnte
(d.h.Makefile), dann setzen Sie die
Variable DIST_SUBDIR auf den Namen des
Ports (${PORTNAME} oder
${PKGNAMEPREFIX}${PORTNAME}
sollte hervorragend funktionieren). Dies wird
DISTDIR von der Vorgabe
/usr/ports/distfiles auf
/usr/ports/distfiles/DIST_SUBDIR ändern und stellt tatsächlich alle
für Ihren Port benötigten Dateien in dieses
Unterverzeichnis.Es wird zusätzlich nach dem Unterverzeichnis mit
dem gleichen Namen auf der Sicherung der Hauptseite auf
ftp.FreeBSD.org suchen (das
ausdrückliche Setzen von DISTDIR
in Ihrem Makefile wird dies nicht
gewährleisten, also nutzen Sie bitte
DIST_SUBDIR).Dies hat keine Auswirkungen auf die Variable
MASTER_SITES, die Sie in Ihrem
Makefile definieren.ALWAYS_KEEP_DISTFILESFalls Ihr Port binäre Distfiles benutzt und eine
Lizenz aufweist, die verlangt, dass das der Quelltext in
Form binärer Pakete verteilt werden muss, z.B. GPL,
dann wird ALWAYS_KEEP_DISTFILES den
&os; Build Cluster anweisen eine Kopie der Dateien in
DISTFILES vorzuhalten. Nutzer dieser
Ports benötigen generell diese Dateien nicht, daher
ist es ein gutes Konzept, nur dann die Distfiles zu
DISTFILES hinzuzufügen, wenn
PACKAGE_BUILDING definiert ist.Nutzung von
ALWAYS_KEEP_DISTFILES..if defined(PACKAGE_BUILDING)
DISTFILES+= foo.tar.gz
ALWAYS_KEEP_DISTFILES= yes
.endifWenn Sie zusätzliche Dateien zu
DISTFILES hinzufügen,
dann beachten Sie bitte, dass Sie diese auch in
distinfo aufführen.
Zudem werden die zusätzlichen Dateien normalerweise
ebenso in WRKDIR extrahiert,
was für einige Ports zu unbeabsichtigten
Seiteneffekten führen mag und spezielle
Behandlung erfordert.MAINTAINERFügen Sie hier Ihre E-Mailadresse ein. Bitte.
:-)Beachten Sie bitte, dass nur eine einzelne E-Mailadresse
ohne Kommentar in der Variable MAINTAINER
zulässig ist. Das Format sollte
user@hostname.domain sein.
Bitte fügen Sie keinen beschreibenden Text wie z.B. Ihren
wirklichen Namen ein, dies verwirrt lediglich
bsd.port.mk.Der Maintainer ist dafür verantwortlich, dass der
Port aktuell gehalten wird und er sorgt dafür, dass der
Port korrekt arbeitet. Für eine detaillierte Beschreibung
der Verantwortlichkeiten eines Maintainers beachten Sie bitte
den Abschnitt
Die Herausforderung für einen
Port-Maintainer.Änderungen am Port werden dem Maintainer zur
Begutachtung und Zustimmung vorgelegt, bevor sie committed
werden. Falls der Maintainer einem Aktualisierungs-Wunsch
nicht binnen 2 Wochen (ausgenommen wichtige öffentliche
Feiertage) zustimmt, dann wird dies als Maintainer-Timeout
betrachtet und eine Aktualisierung kann ohne
ausdrückliche Zustimmung des Maintainers erfolgen.
Falls der Maintainer nicht binnen 3 Monaten zustimmt, wird er
als abwesend ohne Grund betrachtet und kann als Maintainer
des fraglichen Ports durch eine andere Person ersetzt werden.
Ausgenommen davon ist alles, was durch das &a.portmgr; oder
das &a.security-officer; betreut wird. Es dürfen niemals
committs ohne vorherige Zustimmung an solchen Ports
vorgenommen werden!Wir behalten uns das Recht vor, die Einreichungen eines
Maintainers ohne ausdrückliche Zustimmung zu ändern,
falls wir der Auffassung sind, dass dadurch die Einhaltung von
Richtlinien und stilistischen Vorgaben für die
Ports-Sammlung besser erfüllt wird. Zudem können
größere Änderungen an der Infrastruktur der
Ports zu Änderungen an einem bestimmten Port ohne
Zustimmung des Maintainers führen.
Diese Änderungen beeinflussen niemals die
Funktionalität eines Ports.Das &a.portmgr; behält sich das Recht vor, die
Maintainerschaft jedem aus irgendeinem Grund zu entziehen oder
ausser Kraft zu setzen, und das Security Officer Team
&a.security-officer; behält sich das Recht vor, jede
Maintainerschaft aus Sicherheitsgründen aufzuheben oder
ausser Kraft zu setzen.COMMENTDies ist eine einzeilige Beschreibung des Ports.
Bitte fügen Sie nicht den Paketnamen
(oder die Version der Software) in den Kommentar ein.
Der Kommentar soll mit einem Großbuchstaben beginnen
und mit einem Punkt enden. Hier ist ein Beispiel:COMMENT= A cat chasing a mouse all over the screenDie COMMENT-Variable soll unmittelbar nach der
MAINTAINER-Variable im Makefile
stehen.Bitte versuchen Sie die COMMENT-Zeile auf weniger als 70
Zeichen zu begrenzen, da sie den Nutzern als einzeilige
Zusammenfassung des Ports angezeigt wird.Abhängigkeiten (dependencies)Viele Ports hängen von anderen Ports ab.
Es gibt sieben Variablen, welche Sie benutzen können,
um sicherzustellen, dass alle benötigten Teile auf dem
Rechner des Nutzers sind. Zusätzlich gibt es einige
vordefinierte Variablen für Abhängigkeiten in
häufigen Fällen und einige, welche das Verhalten
der Abhängigkeiten bestimmen.LIB_DEPENDSDiese Variable spezifiziert die Shared-Libraries,
von denen der Port abhängt. Es ist eine Liste von
lib:dir:target-Tupeln
wobei lib den Name der gemeinsam
genutzten Bibliothek, dir das
Verzeichnis, in welchem sie zu finden ist, falls nicht
verfügbar, und target das
Target in diesem Verzeichnis angeben. Zum Beispiel wird
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg
auf eine jpeg-Bibliothek mit der Hauptversionsnummer 9
prüfen, in das
graphics/jpeg-Unterverzeichnis Ihrer
Ports-Sammlung wechseln, es bauen und installieren, falls
es nicht gefunden wird.
Der target-Teil kann weggelassen
werden, falls er identisch mit
DEPENDS_TARGET ist (Vorgabe hierfür
ist install).Der lib-Teil ist ein
regulärer Ausdruck, welcher die Ausgabe von
ldconfig -r ausgewertet. Werte wie
intl.[5-7] und intl
sind zulässig. Das erste Muster,
intl.[5-7], stimmt überein mit:
intl.5, intl.6 oder
intl.7. Das zweite Muster,
intl, stimmt überein mit jeder
Version der intl-Bibliothek.Die Abhängigkeit wird zwei Mal überprüft,
einmal innerhalb des extract-Target
und dann innerhalb des
install-Target.
Zudem wird der Name der Abhängigkeit in das Paket
eingefügt, damit &man.pkg.add.1; es automatisch
installiert, falls es nicht auf dem Rechner des Nutzers
ist.RUN_DEPENDSDiese Variable legt Binärdateien oder Dateien,
von denen der Port abhängt, für die Laufzeit fest.
Es ist eine Liste von
path:dir:target-Tupeln,
wobei path der Name der
Binärdatei oder Datei, dir
das Verzeichnis, in welchem sie gefunden werden kann, falls
nicht vorhanden, und target das
Target in diesem Verzeichnis angeben.
Falls path mit einem Slash
(/) beginnt, wird es als Datei behandelt
und deren Vorhandensein wird mit test -e;
überprüft. Andernfalls wird angenommen, dass es
eine Binärdatei ist und which -s
wird benutzt, um zu überprüfen, ob das Programm im
Pfad vorhanden ist.Zum Beispiel wirdRUN_DEPENDS= ${LOCALBASE}/etc/innd:${PORTSDIR}/news/inn \
wish8.0:${PORTSDIR}/x11-toolkits/tk80überprüfen, ob die Datei oder das Verzeichnis
/usr/local/etc/innd existiert und es
erstellen und installieren aus dem
news/inn-Unterverzeichnis der
Ports-Sammlung, falls es nicht gefunden wird. Es wird zudem
überprüft, ob die Binärdatei namens
wish8.0 im Suchpfad vorhanden ist und
danach zum Unterverzeichnis
x11-toolkits/tk80 in Ihrer
Ports-Sammlung wechseln, es bauen und installieren,
falls es nicht gefunden wird.In diesem Fall ist innd eine
Binärdatei. Falls sich eine Binärdatei an
einem ungewöhnlichen Platz befindet, der nicht
im Suchpfad ist, dann sollten Sie die volle Pfadangabe
verwenden.Der offizielle Suchpfad PATH,
welcher im Ports Cluster benutzt wird, ist/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/binDie Abhängigkeit wird innerhalb des
install-Target
überprüft. Zudem wird der Name der
Abhängigkeit in das Paket übernommen,
damit &man.pkg.add.1; es automatisch installieren wird,
falls es auf dem System des Nutzers nicht vorhanden ist.
Der target-Teil kann
weggelassen werden, wenn er der gleiche ist wie in der
Variable DEPENDS_TARGET.BUILD_DEPENDSDiese Variable legt Binärdateien oder Dateien fest,
die dieser Port zur Erstellung benötigt. Wie
RUN_DEPENDS ist es eine Liste von
path:dir:target-Tupeln.
Zum Beispiel wird
BUILD_DEPENDS=
unzip:${PORTSDIR}/archivers/unzip
überprüfen, ob eine Binärdatei
unzip vorhanden ist und in das
Unterverzeichnis archivers/unzip
Ihrer Ports-Sammlung wechseln und sie erstellen und
installieren, falls sie nicht gefunden wird.Erstellen bedeutet hier alles von der
Extraktion bis zur Kompilierung. Die Abhängigkeit
wird im extract-Target
überprüft.
Der target-Teil kann
weggelassen werden, falls er identisch mit der Variable
DEPENDS_TARGET ist.FETCH_DEPENDSDiese Variable legt eine Binärdatei oder Datei
fest, welche der Port benötigt, um heruntergeladen
werden zu können. Wie die vorherigen beiden Variablen
ist er eine Liste von
path:dir:target-Tupeln.
Zum Beispiel wird
FETCH_DEPENDS=
ncftp2:${PORTSDIR}/net/ncftp2
überprüfen, ob eine Binärdatei namens
ncftp2 vorhanden ist, in das
Unterverzeichnis net/ncftp2 Ihrer
Ports-Sammlung wechseln, sie erstellen und installieren,
falls sie nicht gefunden wird.Die Abhängigkeit wird innerhalb des
fetch-Target überprüft.
Der target-Teil kann weggelassen
werden, falls er identisch mit der Variable
DEPENDS_TARGET ist.EXTRACT_DEPENDSDiese Variable spezifiziert eine Binärdatei oder
eine Datei, welche dieser Port für die Extraktion
benötigt. Wie die vorherigen Variablen ist er eine
Liste von
path:dir:target-Tupeln.
Zum Beispiel wird
EXTRACT_DEPENDS=
unzip:${PORTSDIR}/archivers/unzip
überprüfen, ob eine Binärdatei namens
unzip vorhanden ist, in das
Unterverzeichnis archivers/unzip
Ihrer Ports-Sammlung wechseln, sie erstellen und
installieren, falls sie nicht gefunden wird.Die Abhängigkeit wird innerhalb des
extract-Target überprüft.
Der target-Teil kann weggelassen
werden, falls er identisch mit der Variable
DEPENDS_TARGET ist.Nutzen Sie diese Variable nur, wenn die Extraktion
nicht funktioniert (die Vorgabe nimmt
gzip an) und nicht mit
USE_ZIP oder
USE_BZIP2 wie in beschrieben zum Laufen gebracht
werden kann.PATCH_DEPENDSDiese Variable legt eine Binärdatei oder eine
Datei fest, welche dieser Port zum Patchen benötigt.
Wie die vorhergehenden Variablen ist diese eine Liste von
path:dir:target-Tupeln.
Zum Beispiel wird
PATCH_DEPENDS=
${NONEXISTENT}:${PORTSDIR}/java/jfc:extract
in das Unterverzeichnis java/jfc Ihrer
Ports-Sammlung wechseln, um es zu entpacken.Die Abhängigkeit wird innerhalb des
patch-Target überprüft.
Der target-Teil kann entfallen,
falls er identisch mit der Variable
DEPENDS_TARGET ist.USE_*Es gibt eine Reihe von Variablen, um gebräuchliche
Abhängigkeiten einzukapseln, die viele Ports aufweisen.
Obwohl Ihre Verwendung optional ist, können sie helfen
die Übersichtlichkeit des Makefile
eines Ports zu erhöhen. Jede von ihnen ist im Stil von
USE_*.
Der Gebrauch dieser Variablen ist beschränkt auf das
Makefile eines Ports und
ports/Mk/bsd.*.mk. Es ist nicht
entworfen worden, um durch den Nutzer setzbare Optionen
einzukapseln; benutzen Sie
WITH_* und
WITHOUT_*
für diese Zwecke.Es ist immer falsch, irgendeine
USE_*-Variable
in der /etc/make.conf zu setzen.
Zum Beispiel würde das Setzen von
USE_GCC=3.2
eine Abhängigkeit für GCC32 für jeden Port
einschliesslich GCC32 selbst hinzufügen!
Die
USE_*-Varibalen
VariableBedeutungUSE_BZIP2Der Tarball dieses Ports wird mit
bzip2 komprimiert.USE_ZIPDer Tarball des Ports wird mit
zip komprimiert.USE_BISONDer Port benutzt bison
für die Erstellung.USE_CDRTOOLSDer Port erfordert
cdrecord entweder von
sysutils/cdrtools
oder sysutils/cdrtools-cjk,
abhängig davon, was der Nutzer vorgibt.
USE_GCCDieser Port benötigt eine bestimmte
Version von gcc zur Erstellung.
Die genaue Version kann festgelegt werden mit
Werten wie 3.2.
Mit 3.2+ kann die mindestens
erforderliche Version spezifiziert werden.
Der gcc aus
dem Basissystem wird genutzt, wenn er die
erforderliche Version erfüllt, andernfalls wird
eine geeignete Version des gcc
aus den Ports kompiliert und die Variablen
CC und CXX
werden angepasst.
Variablen zugehörig zu
gmake und dem
configure-Skript werden in
beschrieben, währenddessen
autoconf,
automake und
libtool in
beschrieben sind.
Perl-spezifische Variablen
werden in behandelt.
X11-Variablen sind aufgelistet in
.
behandelt GNOME-bezogene Variablen und KDE-bezogene Variablen.
dokumentiert Java-Variablen,
während Informationen zu
Apache,
PHP und PEAR-Modulen
enthält.
Python wird in
und
Ruby in
erörtert.
stellt Variablen für
SDL-Programme zur Verfügung
und enthält schliesslich
Variablen für Xfce.Minimale Version einer AbhängigkeitEine minimale Version einer Abhängigkeit kann in
jeder *_DEPENDS-Variable festgelegt
werden mit Ausnahme von LIB_DEPENDS
durch Anwendung folgender Syntax:p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-SpiffyDas erste Feld enthält einen abhängigen
Paketnamen, welcher einem Eintrag in der Paketdatenbank
entsprechen muss und einen Vergleich mit einer
Paketversion. Die Abhängigkeit wird erfüllt,
wenn p5-Spiffy-0.26 oder eine neuere Version
auf dem System installiert ist.Anmerkungen zu AbhängigkeitenWie vorstehend beschrieben ist das Vorgabe-Target
DEPENDS_TARGET, wenn eine
Abhängigkeit benötigt wird.
Die Vorgabe hierfür ist install.
Dies ist eine Nutzer-Variable; sie wird niemals im
Makefile eines Ports definiert.
Falls Ihr Port einen besonderen Weg benötigt,
um mit einer Abhängigkeit umzugehen, dann benutzen
Sie bitte den :target-Teil der
*_DEPENDS-Variablen, anstatt
DEPENDS_TARGET zu ändern.Falls Sie make clean schreiben,
werden dessen Abhängigkeiten auch gesäubert.
Falls Sie dies nicht wollen, definieren Sie die Variable
NOCLEANDEPENDS in Ihrer Umgebung.
Dies kann besonders erstrebenswert sein, wenn der Port
etwas in seiner Liste von Abhängigkeiten hat,
das sehr viel Zeit für einen rebuild benötigt
wie KDE, GNOME oder Mozilla.Um von einem anderen Port bedingungslos abhängig
zu sein, benutzen Sie bitte die Variable
${NONEXISTENT} als erstes Feld von
BUILD_DEPENDS oder
RUN_DEPENDS. Benutzen Sie dies nur,
wenn Sie den Quelltext eines anderen Port benötigen.
Sie können auch oft Kompilierzeit sparen, wenn Sie das
Target festlegen. Zum Beispiel wird
BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract
immer zum jpeg-Port wechseln und ihn
extrahieren.Zirkuläre Abhängigkeiten sind fatalFühren Sie niemals irgendwelche zirkulären
Abhängigkeiten in der Ports-Sammlung ein!Die Struktur für die Erstellung von Ports dulde
keinerlei zirkuläre Abhängigkeiten. Falls Sie
dennoch eine verwenden, wird es irgendjemanden irgendwo auf
der Welt geben, dessen FreeBSD-Installation nahezu sofort
zusammenbricht und vielen anderen wird es sehr schnell
genauso ergehen.
So etwas kann extrem schwer festzustellen sein.
Falls Sie Zweifel haben vor einer Änderung,
dann vergewissern Sie sich, dass Sie folgendes getan haben:
cd /usr/ports; make index.
Dieser Prozess kann auf alten Maschinen sehr langsam sein,
aber Sie ersparen sich und einer Vielzahl von Menschen
möglicherweise eine Menge Ärger.MASTERDIRFalls Ihr Port wegen einer Variable, die verschiedene
Werte annimmt (z.B. Auflösung oder
Papiergröße), leicht unterschiedliche Versione
von Paketen erzeugen muss, dann legen Sie bitte ein
Unterverzeichnis pro Paket an, um es für den Nutzer
einfacher begreiflich zu machen, was zu machen ist.
Aber versuchen Sie dabei so viele Dateien wie möglich
zwischen diesen Ports gemeinsam zu nutzen.
Normalerweise benötigen Sie nur ein sehr kurzes
Makefile in allen ausser einem
Unterverzeichnis, wenn Sie Variablen intelligent nutzen.
In diesem einzigen Makefile können
Sie MASTERDIR verwenden, um anzugeben,
wo der Rest der Dateien liegt. Benutzen Sie bitte auch eine
Variable für
PKGNAMESUFFIX, damit die Pakete
unterschiedliche Namen haben werden.Wir demonstrieren dies am Besten an einem Beispiel. Es ist
Teil von
japanese/xdvi300/Makefile;PORTNAME= xdvi
PORTVERSION= 17
PKGNAMEPREFIX= ja-
PKGNAMESUFFIX= ${RESOLUTION}
:
# default
RESOLUTION?= 300
.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
${RESOLUTION} != 300 && ${RESOLUTION} != 400
@${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
@${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400."
@${FALSE}
.endifjapanese/xdvi300
verfügt ebenfalls über alle Patches, Paket-Dateien
usw. Wenn Sie make eintippen, wird der Port
die Standardvorgabe für die Auflösung nehmen (300)
und den Port ganz normal erstellen.Genauso wie für alle anderen Auflösungen ist
dies das vollständigexdvi118/Makefile:RESOLUTION= 118
MASTERDIR= ${.CURDIR}/../xdvi300
.include "${MASTERDIR}/Makefile"(xdvi240/Makefile und
xdvi400/Makefile sind ähnlich).
Die MASTERDIR-Definition teilt dem
bsd.port.mk mit, dass die normalen
Unterverzeichnisse wie FILESDIR und
SCRIPTDIR unter
xdvi300 gefunden werden können.
Die RESOLUTION=118-Zeile wird die
RESOLUTION=300-Zeile in
xdvi300/Makefile überschreiben
und der Port wird mit einer Auflösung von 118
erstellt.ManualpagesDie Variablen MAN[1-9LN]
werden automatisch jede Manualpage zur
pkg-plist hinzufügen
(dies bedeutet, dass Sie Manualpages
nicht in der
pkg-plist auflisten dürfen,
lesen Sie bitte Erstellung
der PLIST für weitere Details).
Sie veranlassen zudem den Installationsabschnitt
dazu, die Manualpages zu Komprimieren oder zu Dekomprimieren
abhängig vom gesetzten Wert der Variable
NOMANCOMPRESS in
/etc/make.conf.Falls Ihr Port versucht verschiedene Namen für
Manualpages unter Zuhilfenahme von Symlinks oder Hardlinks
zu installieren, müssen Sie die Variable
MLINKS nutzen, um diese zu identifizieren.
Der von Ihrem Port installierte Link wird von
bsd.port.mk gelöscht und wieder
eingefügt, um sicherzustellen, dass er auf die korrekte
Datei zeigt. Jede Manualpage, welche in
MLINKS aufgeführt ist, darf nicht in
der pkg-plist aufgenommen werden.Falls die Manualpages während der Installation
komprimiert werden sollen, müssen Sie die Variable
MANCOMPRESSED setzen. Diese Variable kann
drei Werte annehmen, yes,
no und maybe.
yes bedeutet, dass Manualpages bereits
komprimiert installiert sind, bei no sind
sie es nicht und maybe bedeutet, dass die
Software bereits den Wert von NOMANCOMPRESS
beachtet, damit bsd.port.mk nichts
besonderes auszuführen hat.MANCOMPRESSED wird automatisch auf
yes gesetzt, wenn
USE_IMAKE vorgegeben ist und gleichzeitig
NO_INSTALL_MANPAGES nicht. Im umgekehrten
Falle ist MANCOMPRESSED auf
no gesetzt.
Sie müssen es nicht explizit angeben, außer die
Standardvorgabe ist für Ihren Port nicht passend.Wenn Ihr Port den man tree irgendwo anders als in der
Variable MANPREFIX verankert, können
Sie ihn mit MANPREFIX bestimmen.
Sollten zudem Manualpages nur in bestimmten Abschnitten an
einem nicht-standardkonformen Platz liegen, wie z.B. bestimmte
Perl-Modul-Ports,
dann können Sie mittels der Variable
MANsectPREFIX
(wobei sect ein Wert aus
1-9, L oder
N ist) individuelle Pfade zu den
Manualpages festlegen.Wenn Ihre Manualpages in sprachspezifische
Unterverzeichnisse installiert werden, dann bestimmen Sie
bitte den Namen der Sprache mit der Variable
MANLANG. Der Wert dieser Variable ist
mit "" vorgegeben (das bedeutet nur
Englisch).Hier ist ein Beispiel, welches alles zusammenfasst.MAN1= foo.1
MAN3= bar.3
MAN4= baz.4
MLINKS= foo.1 alt-name.8
MANLANG= "" ja
MAN3PREFIX= ${PREFIX}/share/foobar
MANCOMPRESSED= yesDies zeigt an, dass sechs Dateien von diesem Port
installiert werden;${MANPREFIX}/man/man1/foo.1.gz
${MANPREFIX}/man/ja/man1/foo.1.gz
${PREFIX}/share/foobar/man/man3/bar.3.gz
${PREFIX}/share/foobar/man/ja/man3/bar.3.gz
${MANPREFIX}/man/man4/baz.4.gz
${MANPREFIX}/man/ja/man4/baz.4.gz${MANPREFIX}/man/man8/alt-name.8.gz
kann zusätzlich von Ihrem Port installiert werden,
oder auch nicht. Unabhängig davon wird ein Symlink
erstellt, welcher die Manualpages foo(1) und alt-name(8)
einbindet.Falls nur manche Manualpages übersetzt sind,
können Sie einige dynamisch vom
MANLANG-Inhalt erzeugte Variablen
nutzen:MANLANG= "" de ja
MAN1= foo.1
MAN1_EN= bar.1
MAN3_DE= baz.3Dies führt zu folgender Liste von Dateien:${MANPREFIX}/man/man1/foo.1.gz
${MANPREFIX}/man/de/man1/foo.1.gz
${MANPREFIX}/man/ja/man1/foo.1.gz
${MANPREFIX}/man/man1/bar.1.gz
${MANPREFIX}/man/de/man3/baz.3.gzInfo-DateienFalls Ihr Paket GNU-Info-Dateien installiert, sollten
diese in der INFO-Variablen augelistet sein
(ohne das angehängte .info) mit einem
Eintrag für jedes Dokument. Von diesen Dateien wird
angenommen, dass sie nach
PREFIX/INFO_PATH
installiert werden. Sie können
INFO_PATH ändern, falls Ihr Paket
einen anderen Ort vorsieht. Jedoch wird dies nicht empfohlen.
Die Einträge enthalten nur den relativen Pfad zu
PREFIX/INFO_PATH.
Zum Beispiel installiert lang/gcc33 Info-Dateien nach
PREFIX/INFO_PATH/gcc33,
wobei INFO etwa so aussieht:
INFO= gcc33/cpp gcc33/cppinternals gcc33/g77 ...
Entsprechende Installations-/Deinstalltions-Codes werden vor
der Paket-Registrierung automatisch der vorläufigen
pkg-plist hinzugefügt.Makefile-OptionenEinige größere Applikationen können mit
einer Reihe von Konfigurationen, die zusätzliche
Funktionalitäten hinzufügen, erstellt werden,
falls eine oder mehrere Bibliotheken oder Applikationen
verfügbar sind. Dazu gehören die Auswahl von
natürlichen Sprachen, GUI versus Kommandozeilen-Versionen
oder die Auswahl aus mehreren Datenbank-Programmen.
Da nicht alle Nutzer diese Bibliotheken oder Applikationen
wollen, stellt das Ports-System hooks (Haken) zur
Verfügung, damit der Autor des Ports bestimmen kann,
welche Konfiguration erstellt werden soll.KNOBS (Einstellungen)WITH_*
und
WITHOUT_*Diese Variablen sind entworfen worden, um vom
System-Administrator gesetzt zu werden. Es gibt viele,
die in ports/Mk/bsd.*.mk
standardisiert sind. Andere sind es nicht,
was verwirrend sein kann. Falls Sie eine solche
Konfigurationsvariable hinzufügen müssen,
dann nehmen Sie bitte eine aus der folgenden Liste.Sie sollten nicht annehmen, dass ein
WITH_*
notwendigerweise eine korrespondierende
WITHOUT_*-Variable
hat oder umgekehrt. Im Allgemeinen wird diese
Vorgabe einfach unterstellt.Falls nicht anderweitig festgelegt, werden diese
Variablen nur dahingehend überprüft, ob sie
gesetzt sind oder nicht – nicht darauf,
ob sie auf bestimmte Werte wie YES
oder NO gesetzt sind.
Die
WITH_*
und
WITHOUT_*-Variablen
VariableBedeutungWITH_APACHE2Falls gesetzt, benutze
www/apache20
anstelle der Vorgabe www/apache13.WITH_BERKELEY_DBDefiniere diese Variable, um die
Fähigkeit zu erhalten, eine Variante
der Berkeley Database wie z.B. databases/db41 zu
nutzen. Eine verwandte Variable,
WITH_BDB_VER, kann mit Werten
wie 2, 3, 4, 41 oder 42 festgelegt werden.WITH_MYSQLDefiniere diese Variable, um die
Fähigkeit zu erhalten, eine Variante
von MySQL zu nutzen wie z.B. databases/mysql40-server.
Eine verwandte Variable ist,
WANT_MYSQL_VER, welche
mit Werten wie 323, 40, 41, oder 50
belegt werden kann.WITHOUT_NLSFalls gesetzt, bedeutet sie, dass eine
Internationalisierung nicht benötigt wird,
was Kompilierzeit sparen kann. Als Vorgabe
wird Internationalisierung gebraucht.WITH_OPENSSL_BASENutze die Version von OpenSSL aus dem
Basissystem.WITH_OPENSSL_PORTNutze die Version von OpenSSL aus security/openssl und
überschreibe die Version, welche original
im Basissystem installiert wurde.WITH_POSTGRESQLDefiniere diese Variable, um die
Fähigkeit zu erhalten, eine Variante
der Datenbank PostGreSQL wie databases/postgresql72
auszuwählen.WITHOUT_X11Falls der Port mit oder ohne
Unterstützung für X erstellt werden
kann, dann sollte normalerweise mit
X-Unterstützung erstellt werden.
Falls die Variable gesetzt ist, soll die Version
ohne X-Unterstützung erstellt werden.
Benennung von Knobs (Einstellungen)Um die Anzahl der Knobs niedrig zu halten und zum
Vorteil des Anwenders, wird empfohlen, dass Porter
ähnliche Namen für Knobs verwenden.
Eine Liste der beliebtesten Knobs kann in der KNOBS-Datei
eingesehen werden.Knob-Namen sollten wiederspiegeln, was der Knob
bedeutet und was er bewirkt. Wenn ein Port einen
lib-Präfix im PORTNAME hat,
dann soll das lib-Präfix im Knob-Namen
entfallen.OPTIONSHintergrundDie OPTIONS-Variable gibt dem
Nutzer, der diesen Port installiert, einen Dialog mit
auswählbaren Optionen und speichert diese in
/var/db/ports/portname/options.
Bei der nächsten Neuerstellung des Ports werden
diese Einstellungen wieder verwandt.
Sie werden sich niemals mehr an all die zwanzig
WITH_* und
WITHOUT_*-Optionen
erinnern müssen, die Sie benutzt haben, um diesen
Port zu erstellen!Wenn der Anwender make config
benutzt (oder ein make build das
erste Mal laufen lässt) wird das Framework auf
/var/db/ports/portname/options
die Einstellungen prüfen. Falls die Datei nicht
existiert, werden die Werte von
OPTIONS genutzt, um eine Dialogbox
zu erzeugen, in welcher die Optionen an- oder abgeschaltet
werden können. Dann wird die
options-Datei gespeichert und die
ausgewählten Variablen werden bei der Erstellung
des Ports benutzt.Falls eine neue Version des Ports
OPTIONS hinzufügt, wird der
Dialog mit den gespeicherten Werten dem Nutzer
angezeigt.Benutzen Sie make showconfig,
um die gespeicherte Konfiguration zu betrachten.
Benutzen Sie make rmconfig, um die
gespeicherte Konfiguration zu Löschen.SyntaxDie Syntax für die
OPTIONS-Variable lautet:
OPTIONS= OPTION "descriptive text" default ...
Der Wert als Vorgabe ist entweder ON
oder OFF. Wiederholungen dieser drei
Felder sind erlaubt.OPTIONS-Definitionen
müssen vor der Einbindung von
bsd.port.pre.mk erscheinen.
Die WITH_* und
WITHOUT_*-Variablen können
nur nach der Einbindung von
bsd.port.pre.mk getestet
werden.BeispielEinfache Anwendung von
OPTIONSOPTIONS= FOO "Enable option foo" On \
BAR "Support feature bar" Off
.include <bsd.port.pre.mk>
.if defined(WITHOUT_FOO)
CONFIGURE_ARGS+= --without-foo
.else
CONFIGURE_ARGS+= --with-foo
.endif
.if defined(WITH_BAR)
RUN_DEPENDS+= bar:${PORTSDIR}/bar/bar
.endif
.include <bsd.port.post.mk>Automatische Aktivierung von FunktionenWenn Sie ein GNU-Konfigurationsskript benutzen,
sollten Sie ein Auge darauf werfen, welche Funktionen
durch die automatische Erkennung aktiviert werden.
Schalten Sie Funktionen, die Sie nicht möchten,
ausdrücklich durch Verwendung von
--without-xxx oder
--disable-xxx in der Variable
CONFIGURE_ARGS einzeln ab.Falsche Behandlung einer Option.if defined(WITH_FOO)
LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo
CONFIGURE_ARGS+= --enable-foo
.endifStellen Sie sich vor im obigen Beispiel ist eine
Bibliothek libfoo auf dem System installiert. Der Nutzer
will nicht, dass diese Applikation libfoo benutzt, also
hat er die Option auf "off" im
make config-Dialog umgestellt.
Aber das Konfigurationsskript der Applikation hat
erkannt, dass die Bibliothek auf dem System vorhanden ist
und fügt ihre Funktionen in die Binärdatei ein.
Falls der Nutzer sich nun entschliesst libfoo von seinem
System zu entfernen, dann wird das Ports-System nicht
protestieren (es wurde keine Abhängigkeit von libfoo
eingetragen), aber die Applikation bricht ab.Korrekte Behandlung einer Option.if defined(WITH_FOO)
LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo
CONFIGURE_ARGS+= --enable-foo
.else
CONFIGURE_ARGS+= --disable-foo
.endifIm zweiten Beispiel wird die Bibliothek libfoo explizit
abgeschaltet. Das Konfigurationsskript aktiviert die
entsprechenden Funktionen nicht in der Applikation trotz
der Anwesenheit der Bibliothek auf dem System.Die Festlegung des ArbeitsverzeichnissesJeder Port wird extrahiert in ein Arbeitsverzeichnis,
welches beschreibbar sein muss. Das Ports-System gibt als
Standard vor, dass die DISTFILES in
einem Verzeichnis namens ${DISTNAME}
entpackt werden. Mit anderen Worten, wenn Sie:PORTNAME= foo
PORTVERSION= 1.0festgelegt haben, dann enthalten die Distributions-Dateien
des Ports ein Verzeichnis auf oberster Ebene,
foo-1.0, und der Rest der Dateien
befindet sich unter diesem Verzeichnis.Es gibt eine Reihe von Variablen, die Sie
überschreiben können, falls dies nicht der Fall
sein sollte.WRKSRCDiese Variable listet den Namen des Verzeichnisses,
welches erstellt wird, wenn die Distfiles der Applikation
extrahiert werden. Wenn unser vorheriges Beispiel in einem
Verzeichnis namens foo (und nicht
foo-1.0) extrahiert wurde,
würden Sie schreiben:WRKSRC= ${WRKDIR}/foooder möglicherweiseWRKSRC= ${WRKDIR}/${PORTNAME}
NO_WRKSUBDIRWenn der Port überhaupt nicht in einem
Unterverzeichnis extrahiert wird, sollten Sie dies mit dem
Setzen von NO_WRKSUBDIR anzeigen.NO_WRKSUBDIR= yesCONFLICTSFalls Ihr Paket nicht mit anderen Paketen koexistieren
kann (wegen Dateikonflikten, Laufzeit-Inkompatibilitäten
usw.), führen Sie bitte die anderen Paketnamen in der
Variable CONFLICTS auf. Sie können
hier Shell-Globs wie * und
? verwenden. Paketnamen sollten in der
gleichen Weise aufgezählt werden, wie sie in
/var/db/pkg auftauchen. Bitte stellen
Sie sicher, dass CONFLICTS nicht mit dem
Paket des Ports selbst übereinstimmt, da ansonsten das
Erzwingen der Installation durch
FORCE_PKG_REGISTER nicht länger
funktionieren wird.CONFLICTS setzt automatisch die
Variable IGNORE, welche
ausführlicher in dokumentiert ist.Beim Entfernen eines von mehreren in Konflikt stehenden
Ports ist es ratsam, die
CONFLICTS-Einträge in den anderen
Ports für einige Monate beizubehalten, um Nutzer zu
unterstützen, die ihre Ports nur sporadisch
aktualisieren.Installation von DateienINSTALL_* macrosNutzen Sie die Makros in
bsd.port.mk, um korrekte
Modi und Eigentümer von Dateien in Ihren
*-install-Targets
sicherzustellen.INSTALL_PROGRAM ist ein Befehl,
um binäre Binärdateien zu installieren.INSTALL_SCRIPT ist ein Befehl,
um ausführbare Skripte zu installieren.INSTALL_KLD ist ein Befehl, mit
dem Kernelmodule installiert werden können. Einige
Architekturen haben Probleme mit stripped-Modulen.
Daher sollten Sie diesen Befehl anstelle von
INSTALL_PROGRAM verwenden.INSTALL_DATA ist ein Befehl,
um gemeinsam nutzbare Daten zu installieren.INSTALL_MAN ist ein Befehl,
um Manualpages oder andere Dokumentation zu
installieren (es wird nichts komprimiert).Das sind grundsätzlich alle
install-Befehle mit
ihren passenden Flags.Zerlegen von BinärdateienZerlegen Sie keine Binärdateien manuell,
wenn Sie es nicht müssen. Alle Binaries sollten
gestripped werden; allerdings vermag das
INSTALL_PROGRAM-Makro gleichzeitig
eine Binärdatei zu installieren und zu strippen
(beachten Sie den nächsten Abschnitt).Wenn Sie eine Datei strippen müssen, aber nicht das
INSTALL_PROGRAM-Makro nutzen wollen, dann
kann ${STRIP_CMD} Ihr Programm strippen.
Dies wird typischerweise innerhalb des
post-install-Targets gemacht.
Zum Beispiel:post-install:
${STRIP_CMD} ${PREFIX}/bin/xdlNutzen Sie &man.file.1; für die installierte
Applikation, um zu überprüfen, ob eine
Binärdatei gestripped ist oder nicht.
Wenn es nicht meldet not stripped,
dann ist es bereits gestripped. Zudem wird &man.strip.1;
nicht ein bereits gestripptes Programm nochmals versuchen
zu strippen, sondern wird stattdessen einfach sauber
beenden.Installation eines ganzen Verzeichnisbaums
inklusive DateienManchmal muss man eine große Zahl von Dateien
unter Erhalt ihrer hierarchischen Struktur installieren,
d.h. Kopieraktionen über einen ganzen Verzeichnisbaum
von WRKSRC zu einem Zielverzeichnis unter
PREFIX.Für diesen Fall gibt es zwei Makros. Der Vorteil
der Nutzung dieser Makros anstatt cp ist,
dass sie korrekte Besitzer und Berechtigungen auf den
Zieldateien garantieren.
Das erste Makro, COPYTREE_BIN, wird alle
installierten Dateien ausführbar markieren und damit
passend für die Installation in
PREFIX/bin
vorbereiten. Das zweite Makro,
COPYTREE_SHARE, setzt keine
Ausführungsberechtigungen auf Dateien und ist daher
geeignet für die Installation von Dateien im Target von
PREFIX/share.post-install:
${MKDIR} ${EXAMPLESDIR}
(cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR})Dieses Beispiel wird den Inhalt des
examples-Verzeichnisses im Distfile
des Drittanbieters in das Beispielverzeichnis Ihres Ports
kopieren.post-install:
${MKDIR} ${DATADIR}/summer
(cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/)Und dieses Beispiel wird die Daten der Sommermonate in
das summer-Unterverzeichnis eines
DATADIR
installieren.Zusätzliche find-Argumente
können mit dem dritten Argument an die
COPYTREE_*-Makros übergeben werden.
Um zum Beispiel alle Dateien aus dem 1. Beispiel ohne die
Makefiles zu installieren, kann man folgenden Befehl
benutzen.post-install:
${MKDIR} ${EXAMPLESDIR}
(cd ${WRKSRC}/examples/ && \
${COPYTREE_SHARE} \* ${EXAMPLESDIR} "! -name Makefile")Beachten Sie bitte, dass diese Makros die installierten
Dateien nicht zur pkg-plist
hinzufügen, Sie müssen sie immer noch selbst
auflisten.Installation zusätzlicher DokumentationFalls Ihre Software zusätzlich zu den üblichen
Manualpages und Info-Seiten weitere Dokumentation hat und
Sie diese für nützlich halten, dann installieren
Sie sie unter
PREFIX/share/doc.
Dies kann wie vorstehend im Target des
post-install geschehen.Legen Sie ein neues Verzeichnis für Ihren Port an.
Das Verzeichnis sollte wiederspiegeln, was der Port ist.
Das bedeutet normalerweise PORTNAME.
Wie auch immer, wenn Sie meinen, der Nutzer möchte
verschiedene Versionen des Ports zur gleichen Zeit
installiert haben, dann können Sie die gesamte Variable
PKGNAME nutzen.Machen Sie die Installation von der Variablen
NOPORTDOCS abhängig, damit die
Nutzer sie in /etc/make.conf abschalten
können:post-install:
.if !defined(NOPORTDOCS)
${MKDIR} ${DOCSDIR}
${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR}
.endifHier einige praktische Variablen und wie sie
standardmässig bei Verwendung im
Makefile expandiert werden:
DATADIR wird expandiert zu
PREFIX/share/PORTNAME.DATADIR_REL wird expandiert zu
share/PORTNAME.DOCSDIR wird expandiert zu
PREFIX/share/doc/PORTNAME.DOCSDIR_REL wird expandiert zu
share/doc/PORTNAME.EXAMPLESDIR wird expandiert zu
PREFIX/share/examples/PORTNAME.EXAMPLESDIR_REL wird expandiert zu
share/examples/PORTNAME.NOPORTDOCS behandelt nur
zusätzliche Dokumentation, die in
DOCSDIR installiert ist.
Für normale Manualpages und Info-Seiten
wird die Variable benutzt.
Dinge, welche in DATADIR
und EXAMPLESDIR installiert werden,
legen die Variablen NOPORTDATA und
NOPORTEXAMPLES fest.Die Variablen werden nach PLIST_SUB
exportiert. Ihre Werte erscheinen dort als Pfadnamen relativ
zu PREFIX,
falls möglich. Das bedeutet, dass
share/doc/PORTNAME
standardmässig ersetzt wird durch
%%DOCSDIR%% in der Packliste usw.
(mehr zur Ersetzung durch die
pkg-plist finden Sie
hier).Alle installierten Dokumentationsdateien
und –Verzeichnisse
sollten in der pkg-plist dem
%%PORTDOCS%%-Präfix
enthalten sein, zum Beispiel:%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
%%PORTDOCS%%%%DOCSDIR%%/CONTACT
%%PORTDOCS%%@dirrm %%DOCSDIR%%Alternativ zur Auflistung der Dokumentationsdateien in
der pkg-plist kann in einem Port auch
die Variable PORTDOCS gesetzt werden
für eine Liste von Dateien und Shell-Globs, um diese
zur endgültigen Packliste hinzuzufügen. Die Namen
werden relativ zur Variable DOCSDIR sein.
Wenn Sie also einen Port haben, welcher
PORTDOCS benutzt, und Sie haben eine vom
Standard abweichenden Platz für seine Dokumentation,
dann müssen Sie die Variable DOCSDIR
entsprechend setzen. Wenn ein Verzeichnis in
PORTDOCS aufgeführt ist, oder von
einem Shell-Glob dieser Variable abgebildet wird, dann wird
der komplette Verzeichnisbaum inklusive Dateien und
Verzeichnissen in der endgültigen Packliste
aufgenommen. Wenn die Variable NOPORTDOCS
gesetzt ist, dann werden die Dateien und Verzeichnisse,
die in PORTDOCS aufgelistet sind,
nicht installiert und werden auch nicht zur Packliste des
Ports hinzugefügt. Wie oben gezeigt bleibt es dem Port
selbst überlassen, die Dokumentation in
PORTDOCS zu installieren. Ein typisches
Beispiel für den Gebrauch von
PORTDOCS sieht wie folgt aus:PORTDOCS= README.* ChangeLog docs/*Die Äquivalente zu PORTDOCS
für unter DATADIR und
EXAMPLESDIR installierte Dateien sind
PORTDATA beziehungsweise
PORTEXAMPLES.Sie können auch pkg-message
benutzen, um Meldungen während der Installation
anzuzeigen. Lesen Sie diesen Abschnitt über den
Gebrauch von pkg-message
für weitere Details.
Die pkg-message-Datei muss nicht zur
pkg-plist hinzugefügt
werden.Unterverzeichnisse mit PREFIXLassen Sie den Port die Dateien in die richtigen
Unterverzeichnisse von PREFIX verteilen.
Einige Ports werfen alles in einen Topf und legen es im
Unterverzeichnis mit dem Namen des Ports ab, was falsch ist.
Ausserdem legen viele Ports alles ausser Binaries,
Header-Dateien und Manualpages in ein Unterverzeichnis
von lib, was natürlich auch nicht
der BSD-Philosophie entspricht und nicht gut funktioniert.
Viele der Dateien sollten in eines der folgenden
Verzeichnisse geschoben werden: etc
(Konfigurationsdateien), libexec
(intern gestartete Binärdateien),
sbin (Binärdateien für
Superuser/Manager), info
(Dokumentation für Info-Browser) oder
share (Architektur-unabhängige
Dateien). Lesen Sie hierzu &man.hier.7;; weitestgehend
greifen die Regeln für /usr auch
für /usr/local. Die Ausnahme sind
Ports, welche mit news aus dem USENET
arbeiten. In diesem Falle sollte
PREFIX/news
als Zielort für die Dateien benutzt werden.BesonderheitenEs gibt einige Dinge mehr, die zu beachten sind,
wenn man einen Port erstellt. Dieser Abschnitt
erklärt die wichtigsten.Shared-LibrariesWenn Ihr Port eine oder mehrere Shared-Libraries
installiert, dann definieren Sie bitte eine
USE_LDCONFIG make-Variable,
die bsd.port.mk anweisen wird,
${LDCONFIG} -m auf das
Verzeichnis, in das die neue Library installiert wird
(normalerweise
PREFIX/lib),
während des
post-install-Targets anzuwenden,
um sie im Shared-Library-Cache zu registrieren.
Diese Variable, wenn definiert, wird auch dafür sorgen,
dass ein entsprechendes
@exec /sbin/ldconfig -m und
@unexec /sbin/ldconfig -R-Paar zu Ihrer
pkg-plist-Datei hinzugefügt wird,
sodass ein Benutzer, der das Paket installiert, die
Bibliothek danach sofort benutzen kann und das System nach
deren Deinstallation nicht glaubt, die Bibliothek wäre
noch da.USE_LDCONFIG= yesWenn nötig, können Sie das Standardverzeichnis
außer Kraft setzen, indem Sie den
USE_LDCONFIG Wert auf eine Liste von
Verzeichnissen setzen, in die Shared Libraries installiert
werden sollen. Wenn Ihr Port z.B. diese Bibliotheken nach
PREFIX/lib/foo und
PREFIX/lib/bar
installiert, könnten Sie folgendes in Ihrem
Makefile benutzen:USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/barBitte überprüfen Sie dies genau. Oft ist das
überhaupt nicht nötig oder kann durch
-rpath oder das Setzen von
LD_RUN_PATH während des Linkens umgangen
werden (s. lang/moscow_ml für ein
Beispiel), oder durch einen Shell-Wrapper, der
LD_LIBRARY_PATH setzt, bevor er die
Binärdatei ausführt, wie es www/mozilla tut.Wenn Sie 32-Bit Libraries auf 64-Bit Systemen
installieren, benutzen Sie stattdessen
USE_LDCONFIG32.Versuchen Sie Shared-Library-Versionsnummern im
libfoo.so.0 Format zu halten.
Unser Runtime-Linker kümmert sich nur um die Major
(erste) Nummer.Wenn sich die Major-Library-Versionsnummer
während der Aktualisierung zu einer neuen
Portversion erhöht, sollte auch die
PORTREVISION aller Ports, die die
Shared-Library linken, erhöht werden, damit diese
mit der neuen Version der Bibliothek neu kompiliert
werden.Ports mit beschränkter VerbreitungLizenzen variieren und manche geben Restriktionen vor,
wie die Applikation gepackt werden oder ob sie
gewinnorientiert verkauft werden kann, usw.Es liegt in Ihrer Verantwortung als Porter die
Lizenzbestimmungen der Software zu lesen und
sicherzustellen, dass das FreeBSD-Projekt nicht haftbar
gemacht wird für Lizenzverletzungen durch
Weiterverbreitung des Quelltextes oder kompilierter
Binaries über FTP/HTTP oder CD-ROM. Im Zweifelsfall
kontaktieren Sie bitte die &a.ports;.In solchen Situationen können die in den folgenden
Abschnitten beschriebenen Variablen gesetzt werden.NO_PACKAGEDiese Variable zeigt an, dass wir keine binären
Pakete dieser Applikation erzeugen dürfen - z.B. wenn
die Lizenz die Weiterverteilung von binären Paketen
oder Paketen verbietet, die aus verändertem Quelltext
erzeugt wurden.Die DISTFILES des Ports dürfen
allerdings frei über FTP/HTTP Mirrors
weiterverbreitet werden. Sie dürfen auch auf CD-ROM
(oder ähnlichen Medien) weiterverbreitet werden - es
sei denn, NO_CDROM ist ebenfalls
gesetzt.NO_PACKAGE sollte auch benutzt
werden, wenn das binäre Paket nicht allgemein
brauchbar ist und die Applikation immer aus dem Quelltext
kompiliert werden sollte.
Zum Beispiel, wenn die Applikation konfigurierte
Informationen über den Rechner/Installationsort bei
der Installation einkompiliert bekommt, setzen Sie
NO_PACKAGE.NO_PACKAGE sollte auf eine
Zeichenkette gesetzt werden, die den Grund beschreibt,
warum kein Paket erzeugt werden soll.NO_CDROMDiese Variable gibt an, dassobwohl wir binäre
Pakete erzeugen dürfen – wir weder
diese Pakete noch die DISTFILES des
Ports auf einer CD-ROM (oder ähnlichen Medien)
verkaufen dürfen. Die DISTFILES
des Ports dürfen allerdings immer noch auf FTP/HTTP
Mirrors.Wenn diese Variable und auch
NO_PACKAGE gesetzt ist, dann werden
nur die DISTFILES des Ports
erhältlich sein – und das nur
mittels FTP/HTTP.NO_CDROM sollte auf eine
Zeichenkette gesetzt werden, die den Grund beschreibt,
warum der Port nicht auf CD-ROM weiterverbreitet werden
kann. Das sollte z.B. gemacht werden, wenn die Lizenz
des Ports nur für
nichtkommerzielle Zwecke gilt.NOFETCHFILESDateien, die in der Variable
NOFETCHFILES aufgelistet sind,
sind von keiner der MASTER_SITES
abrufbar. Ein Beispiel solch einer Datei ist eine selbige,
welche vom Anbieter auf CD-ROM bereitgestellt wird.Werkzeuge, die das Vorhandensein dieser Dateien auf
den MASTER_SITES
überprüfen, sollten diese Dateien
ignorieren und sie nicht melden.RESTRICTEDSetzen Sie diese Variable, wenn die Lizenz der
Applikation weder das Spiegeln der
DISTFILES der Applikation noch
das Weiterverbreiten von binären Paketen in
jedweder Art erlaubt.NO_CDROM oder
NO_PACKAGE sollten nicht zusammen
mit RESTRICTED gesetzt werden, weil
letztere Variable die anderen beiden impliziert.RESTRICTED sollte auf eine
Zeichenkette gesetzt werden, die den Grund beschreibt,
warum der Port nicht weiterverbreitet werden kann.
Typischerweise besagt dies, dass der Port proprietäre
Software enthält und der Benutzer die
DISTFILES manuell herunterladen
muss – möglicherweise erst nachdem
er sich für die Software registriert oder die
Bedingungen eines Endbenutzer-Lizenzvertrags
(EULA) akzeptiert hat.RESTRICTED_FILESWenn RESTRICTED oder
NO_CDROM gesetzt ist, ist diese
Variable auf ${DISTFILES}
${PATCHFILES} voreingestellt, sonst ist sie
leer. Wenn nicht jede dieser Dateien beschränkt ist,
dann führen Sie die betroffenen Dateien in dieser
Variable auf.Beachten Sie, dass der Porter für jede
aufgeführte Distributionsdatei einen Eintrag zu
/usr/ports/LEGAL hinzufügen
sollte, der genau beschreibt, was die Beschränkung
mit sich bringt.Build-Mechanismenmake, gmake
und imakeWenn Ihr Port GNU make
benutzt, dann setzen Sie bitte
USE_GMAKE=yes.
Port-Variablen im Zusammenhang mit gmakeVariableBedeutungUSE_GMAKEDer Port benötigt gmake
für den Build.GMAKEDer ganze Pfad zu gmake,
wenn es nicht im PATH ist.
Wenn Ihr Port eine X-Applikation ist, die
Makefile-Dateien aus
Imakefile-Dateien mit
imake erzeugt, dann setzen Sie
USE_IMAKE=yes. Das sorgt dafür,
dass die Konfigurationsphase automatisch ein
xmkmf -a ausführt.
Wenn das Flag ein Problem für
Ihren Port darstellt, setzen Sie
XMKMF=xmkmf. Wenn der Port
imake benutzt, aber das
install.man-Target nicht versteht,
dann sollte NO_INSTALL_MANPAGES=yes
gesetzt werden.Wenn das Makefile
im Quelltext Ihres Ports etwas anderes als
all als Haupt-Build-Target
hat, setzen Sie ALL_TARGET
entsprechend. Das Gleiche gilt für
install und
INSTALL_TARGET.configure SkriptWenn Ihr Port ein configure-Skript
benutzt, um Makefile-Dateien aus
Makefile.in-Dateien zu erzeugen,
setzen Sie GNU_CONFIGURE=yes.
Wenn Sie dem configure-Skript
zusätzliche Argumente übergeben wollen (das
Vorgabeargument ist --prefix=${PREFIX}
--infodir=${PREFIX}/${INFO_PATH}
--mandir=${MANPREFIX}/man
${CONFIGURE_TARGET}), setzen Sie diese
zusätzlichen Argumente in
CONFIGURE_ARGS.
Zusätzliche Umgebungsvariablen können
überdie Variable CONFIGURE_ENV
übergeben werden.Wenn Ihr Paket GNU configure
benutzt und die entstandene Binärdatei hat einen
komischen Namen wie
i386-portbld-freebsd4.7-appname,
dann müssen Sie zusätzlich die
CONFIGURE_TARGET-Variable setzen,
um das Target so anzugeben, wie Skripten, die von neueren
Versionen von autoconf erzeugt wurden,
es erwarten. Fügen Sie das Folgende direkt nach der
Zeile GNU_CONFIGURE=yes in Ihrem
Makefile hinzu:CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
Variablen für Ports, die configure
benutzenVariableBedeutungGNU_CONFIGUREDer Port benutzt ein
configure-Skript, um das Bauen
vorzubereiten.HAS_CONFIGUREWie GNU_CONFIGURE, nur
dass kein Standard-Konfigurations-Target zu
CONFIGURE_ARGS hinzugefügt
wird.CONFIGURE_ARGSZusätzliche Argumente für das
configure-Skript.CONFIGURE_ENVZusätzliche Umgebungsvariablen
für die Abarbeitung des
configure-Skriptes.CONFIGURE_TARGETErsetzt das Standard-Konfigurations-Target.
Vorgabewert ist
${MACHINE_ARCH}-portbld-freebsd${OSREL}.
Benutzung von sconsWenn Ihr Port SCons
benutzt, definieren Sie
USE_SCONS=yes.
Variablen für Ports, die
scons benutzenVariableBedeutungSCONS_ARGSPort-spezifische SCons-Argumente, die der
SCons-Umgebung übergeben werden.SCONS_BUILDENVVariablen, die in der System-Umgebung
gesetzt werden sollen.SCONS_ENVVariablen, die in der SCons-Umgebung
gesetzt werden sollen.SCONS_TARGETLetztes Argument, das SCons übergeben
wird – ähnlich
MAKE_TARGET.
Um SConstruct im Quelltext alles,
was SCons in SCONS_ENV übergeben
wird, respektieren zu lassen (das ist hauptsächlich
CC/CXX/CFLAGS/CXXFLAGS), patchen Sie
SConstruct, sodass das Build
Environment wie folgt konstruiert
wird:env = Environment(**ARGUMENTS)Es kann dann mit env.Append und
env.Replace modifiziert werden.Benutzung von GNU autotoolsEinführungDie verschiedenen GNU autotools stellen einen
Abstraktionsmechanismus bereit für das Kompilieren
von Software für eine Vielfalt von Betriebssystemen
und Maschinenarchitekturen. Innerhalb der Ports-Sammlung
kann ein einzelner Port diese Werkzeuge mit Hilfe eines
einfachen Konstrukts benutzen:USE_AUTOTOOLS= tool:version[:operation] ...Als dies geschrieben wurde konnte
tool eins von
libtool, libltdl,
autoconf,
autoheader,
automake oder
aclocal sein.version gibt die einzelne
Werkzeug-Revision an, die benutzt werden soll (siehe
devel/{automake,autoconf,libtool}[0-9]+
für mögliche Versionen).operation ist eine
optionale Angabe, die modifiziert, wie das Werkzeug
benutzt wird.Es können auch mehrere Werkzeuge angegeben
werden – entweder durch Angabe aller in
einer einzigen Zeile oder durch Benutzung des
+= Makefile-Konstrukts.Schliesslich gibt es das spezielle Tool, genannt
autotools, das der Einfachheit dient
indem es von alle verfügbaren Versionen der Autotools
abhängt, was sinnvoll für Cross-Development ist.
Dies kann auch erreicht werden, indem man den Port
devel/autotools installiert.libtoolShared-Libraries, die das GNU Build-System benutzen,
verwenden normalerweise
libtool, um die Kompilierung und
Installation solcher Bibliotheken anzupassen.
Die übliche Praxis ist, eine Kopie von
libtool, die mit dem Quelltext
geliefert wird, zu benutzen. Falls Sie ein externes
libtool benötigen, können
Sie die Version, die von der Ports-Sammlung bereitgestellt
wird, benutzen:USE_AUTOTOOLS= libtool:version[:env]Ohne zusätzliche Angaben sagt
libtool:version dem Build-System, dass es das
Konfigurationsskript mit der auf dem System
installierten Kopie von libtool
patchen soll.
Die Variable GNU_CONFIGURE ist
impliziert. Außerdem werden einige
make– und shell-Variablen zur
weiteren Benutzung durch den Port gesetzt.
Für Genaueres siehe
bsd.autotools.mk.Mit der Angabe :env wird nur die
Umgebung vorbereitet.Schließlich können optional
LIBTOOLFLAGS und
LIBTOOLFILES gesetzt werden, um die
häufigsten Argumente und durch
libtool gepatchten Dateien außer
Kraft zu setzen. Die meisten Ports werden das aber nicht
brauchen. Für Weiteres siehe
bsd.autotools.mk.libltdlEinige Ports benutzen das
libltdl-Bibliothekspaket,
welches Teil der libtool-Suite ist.
Der Gebrauch dieser Bibliothek macht nicht automatisch
den Gebrauch von libtool selbst
nötig, deshalb wird ein separates Konstrukt zur
Verfügung gestellt.USE_AUTOTOOLS= libltdl:versionIm Moment sorgt dies nur für eine
LIB_DEPENDS-Abhängigkeit von dem
entsprechenden libltdl-Port und wird
zur Vereinfachung zur Verfügung gestellt,
um Abhängigkeiten von den Autotools-Ports
ausserhalb des USE_AUTOTOOLS-Systems
zu eliminieren. Es gibt keine weiteren Angaben für
dieses Werkzeug.autoconf und
autoheaderManche Ports enthalten kein Konfigurationsskript,
sondern eine autoconf-Vorlage in der
configure.ac-Datei.
Sie können die folgenden Zuweisungen benutzen,
um autoconf das Konfigurationsskript
erzeugen zu lassen, und auch autoheader
Header-Vorlagen zur Benutzung durch das
Konfigurationsskript erzeugen zu lassen.USE_AUTOTOOLS= autoconf:version[:env]undUSE_AUTOTOOLS= autoheader:versionwelches auch die Benutzung von
autoconf:version impliziert.Ähnlich wie bei libtool,
bereitet die Angabe des optionalen
:env nur die Umgebung für weitere
Benutzung vor. Ohne dieses wird der Port auch gepatched
und erneut konfiguriert.Die zusätzlichen optionalen Variablen
AUTOCONF_ARGS und
AUTOHEADER_ARGS können durch das
Makefile des Ports ausser Kraft
gesetzt werden, wenn erforderlich. Wie bei den
libtool-Äquivalenten werden die
meisten Ports dies aber nicht benötigen.automake und
aclocalManche Pakete enthalten nur
Makefile.am-Dateien. Diese
müssen durch automake in
Makefile.in-Dateien konvertiert
und dann durch configure
weiterbearbeitet werden, um schließlich ein
Makefile zu erzeugen.Ähnliches gilt für Pakete, die gelegentlich
keine aclocal.m4-Dateien mitliefern,
welche ebenfalls zum Erstellen der Software benötigt
werden. Diese können durch aclocal
erzeugt werden, welches configure.ac
oder configure.in durchsucht.aclocal hat eine ähnliche
Beziehung zu automake wie
autoheader zu
autoconf – beschrieben
im vorherigen Abschnitt. aclocal
impliziert die Benutzung von automake,
also haben wir:USE_AUTOTOOLS= automake:version[:env]undUSE_AUTOTOOLS= aclocal:versionwas auch die Benutzung von
automake:version
impliziert.Ähnlich wie bei libtool und
autoconf, bereitet die optionale Angabe
:env nur die Umgebung zur weiteren
Benutzung vor. Ohne sie wird der Port erneut
konfiguriert.Wie schon autoconf und
autoheader, hat sowohl
automake als auch
aclocal eine optionale
Argument-Variable AUTOMAKE_ARGS
bzw. ACLOCAL_ARGS, die durch das
Makefile des Ports, falls nötig,
außer Kraft gesetzt werden kann.Benutzung von GNU gettextGrundlegende BenutzungWenn Ihr Port gettext
benötigt, setzen Sie einfach
USE_GETTEXT auf yes,
und Ihr Port bekommt die Abhängigkeit von devel/gettext. Der Wert von
USE_GETTEXT kann auch die
benötigte Version der
libintl-Bibliothek angeben, der
grundlegenden Teil von
gettext – jedoch
wird von der Benutzung dieser Funktion
dringend abgeraten:
Ihr Port sollte einfach nur mit der aktuellen Version von
devel/gettext
funktionieren.Ein ziemlich häufiger Fall ist, dass ein Port
gettext und
configure benutzt. Normalerweise sollte
GNU configuregettext automatisch finden können.
Sollte das einmal nicht funktionieren, können
Hinweise über den Ort von gettext
in CPPFLAGS und LDFLAGS wie
folgt übergeben werden:USE_GETTEXT= yes
CPPFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \
LDFLAGS="${LDFLAGS}"Natürlich kann der Code kompakter sein,
wenn es keine weiteren Flags gibt, die
configure übergeben werden
müssen:USE_GETTEXT= yes
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib"Optionale BenutzungManche Softwareprodukte erlauben die Deaktivierung
von NLS - z.B. durch Übergeben von
an
configure. In diesem Fall sollte Ihr
Port gettext abhängig vom Status
von WITHOUT_NLS
benutzen. Für Ports mit niedriger bis mittlerer
Komplexität können Sie sich auf das folgende
Idiom verlassen:GNU_CONFIGURE= yes
.if !defined(WITHOUT_NLS)
USE_GETTEXT= yes
PLIST_SUB+= NLS=""
.else
CONFIGURE_ARGS+= --disable-nls
PLIST_SUB+= NLS="@comment "
.endifDer nächste Punkt auf Ihrer Todo-Liste ist
dafür zu sorgen, dass die Message-Catalog-Dateien
nur bedingt in der Packliste aufgeführt werden. Der
Makefile-Teil dieser Aufgabe ist
schon durch obiges Idiom erledigt.
Das wird im Abschnitt über Fortgeschrittene
pkg-plist-Methoden
erklärt.
Kurz gesagt, jedes Vorkommen von
%%NLS%% in
pkg-plist wird durch
@comment , wenn NLS
abgeschaltet ist, oder durch eine leere Zeichenkette,
wenn NLS aktiviert ist, ersetzt. Folglich werden die
Zeilen, denen %%NLS%% vorangestellt
ist, zu reinen Kommentaren in der endgültigen
Packliste, wenn NLS abgeschaltet ist;
andernfalls wird der Prefix einfach nur ausgelassen.
Alles, was Sie jetzt noch machen müssen, ist
%%NLS%% vor jedem Pfad zu einer
Message-Catalog-Datei in pkg-plist
einzufügen. Zum Beispiel:%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo
%%NLS%%share/locale/no/LC_MESSAGES/foobar.moIn sehr komplexen Fällen müssen Sie
eventuell fortgeschrittenere Techniken als die hier
vorgestellte benutzen - wie z.B. Dynamische
Packlistenerzeugung.Behandlung von Message-Catalog-VerzeichnissenBei der Installation von Message-Catalog-Dateien
gibt es einen Punkt zu beachten. Ihr Zielverzeichnis,
das unter LOCALBASE/share/locale
liegt, sollte nur selten von Ihrem Port erzeugt und
gelöscht werden. Die Verzeichnisse für die
gebräuchlichsten Sprachen sind in
/etc/mtree/BSD.local.dist
aufgelistet; das heisst, sie sind Teil des Systems.
Die Verzeichnisse für viele andere Sprachen sind
Teil des Ports devel/gettext. Sie wollen
vielleicht dessen pkg-plist
zur Hand nehmen, um festzustellen, ob Ihr Port eine
Message-Catalog-Datei für eine seltene Sprache
installiert.Die Benutzung von perlWenn MASTER_SITES auf
MASTER_SITE_PERL_CPAN gesetzt ist,
dann ist der bevorzugte Wert von
MASTER_SITE_SUBDIR der Top-Level-Name
der Hierarchie. Zum Beispiel ist der empfohlene Wert
für
p5-Module-Name-Module.
Die Top-Level-Hierarchie kann unter cpan.org
angeschaut werden. Dies sorgt dafür, dass der Port
weiter funktioniert, wenn sich der Autor des Moduls
ändert.Die Ausnahme dieser Regel ist, dass das entsprechende
Verzeichnis selber oder das Distfile in diesem Verzeichnis
nicht existiert. In solchen Fällen ist die Benutzung
der Id des Autors als MASTER_SITE_SUBDIR
erlaubt.Jede der Einstellungen unten kann sowohl auf
YES als auch auf eine
Versionszeichenkette wie 5.8.0+ gesetzt
werden. Wenn YES benutzt wird, bedeutet
das, dass der Port mit jeder der unterstützten
Perl-Versionen funktioniert.
Falls ein Port nur mit einer bestimmten
Perl-Version funktioniert, kann
darauf mit einer Versionszeichenkette hingewiesen werden,
die entweder eine Mindest- (z.B. 5.7.3+),
Maximal- (z.B. 5.8.0-) oder
Absolutversion (z.B. 5.8.3)
festlegt.
Variablen für Ports, die perl
benutzenVariableBedeutungUSE_PERL5Bedeutet, dass der Port perl 5
zum Erstellen und zum Ausführen benutzt.USE_PERL5_BUILDBedeutet, dass der Port perl 5
zum Erstellen benutzt.USE_PERL5_RUNBedeutet, dass der Port perl 5
zur Laufzeit benutzt.PERLDer gesamte Pfad zu
perl 5 – entweder
im Basissystem oder nachinstalliert über einen
Port – ohne die Versionsnummer. Benutzen
Sie diese Variable, wenn Sie #!-Zeilen in Skripten
ersetzen müssen.PERL_CONFIGUREPerls MakeMaker für die Konfiguration
benutzen. Dies impliziert
USE_PERL5.PERL_MODBUILDModule::Build für configure, build und install
benutzen. Dies impliziert
PERL_CONFIGURE.Nur lesbare VariablenPERL_VERSIONDie volle Version des installierten
perl (z.B.
5.00503).PERL_VERDie kurze Angabe der installierten
perl-Version (z.B.
5.005).PERL_LEVELDie installierte perl-Version
als ein Integer der Form MNNNPP
(z.B. 500503).PERL_ARCHWo perl architektur
abhängige Bibliotheken ablegt. Vorgabe ist
${ARCH}-freebsd.PERL_PORTName des perl-Ports, der
installiert ist (z.B. perl5).SITE_PERLVerzeichnis, in das die Site-spezifischen
perl-Pakete kommen. Dieser Wert
wird zu PLIST_SUB hinzugefügt.
Ports von Perl-Modulen, die keine offizielle
Webseite haben, sollen in der WWW-Zeile ihrer
pkg-descr-Datei auf
cpan.org verlinken.
Die bevorzugte URL-Form ist
http://search.cpan.org/dist/Module-Name/
(inklusive des Slash am Ende).Benutzung von X11X.Org-KomponentenDie X11-Implementierung, welche die Ports-Sammlung
bereitstellt, ist X.Org. Wenn Ihre Applikation von
X-Komponenten abhängt, listen Sie die benötigten
Komponenten in USE_XORG auf. Als dies
geschrieben wurde, wurden die folgenden Komponenten
bereitgestellt:bigreqsproto compositeproto damageproto dmx
dmxproto evieproto fixesproto fontcacheproto fontenc
fontsproto fontutil glproto ice inputproto kbproto libfs
oldx printproto randrproto recordproto renderproto
resourceproto scrnsaverproto sm trapproto videoproto x11
xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite
xcursor xdamage xdmcp xevie xext xextproto
xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto
xf86rushproto xf86vidmodeproto xfixes xfont xfontcache xft
xi xinerama xineramaproto xkbfile xkbui xmu xmuu
xorg-server xp xpm xprintapputil xprintutil xpr oto
xproxymngproto xrandr xrender xres xscrnsaver xt xtrans
xtrap xtst xv xvmc xxf86dga xxf86misc
xxf86vm.Die aktuelle Liste finden Sie immer in
/usr/ports/Mk/bsd.xorg.mk.Das Mesa Projekt ist ein Versuch, eine freie OpenGL
Implementierung bereitzustellen. Sie können eine
Abhängigkeit von verschiedenen Komponenten diese
Projektes in der Variable USE_GL
spezifizieren. ouml;gliche Optionen sind: glut,
glu, glw, gl und linux.
Für Rückwärtskompatibilitä gilt der
Wert yes als
glu.Beispiel für USE_XORGUSE_XORG= xrender xft xkbfile xt xaw
USE_GL= gluViele Ports definieren USE_XLIB,
was dafür sorgt, dass der Port von allen (rund 50)
Bibliotheken abhängt. Diese Variable existiert, um
uuml;ckwärtskompatibilität sicherzustellen (sie
stammt noch aus der Zeit vor dem modularem X.Org), und
sollte bei neuen Ports nicht mehr benutzt werden.
Variablen für Ports, die X benutzenUSE_XLIBDer Port benutzt die X-Bibliotheken. Soll
nicht mehr verwendet werden - benutzen Sie
stattdessen eine Liste von Komponenten in
USE_XORG.USE_X_PREFIXSoll nicht mehr benutzt werden, ist jetzt
äquivalent zu USE_XLIB und
kann einfach durch letzteres ersetzt
werden.USE_IMAKEDer Port benutzt imake.
Impliziert USE_X_PREFIX.XMKMFIst auf den Pfad zu xmkmf
gesetzt, wenn nicht in PATH. Vorgabe
ist xmkmf -a.
Variablen bei Abhängigkeit von einzelnen
Teilen von X11X_IMAKE_PORTEin Port, der imake und einige
andere Werkzeuge, die zum Erstellen von X11 benutzt
werden, bereitstellt.X_LIBRARIES_PORTEin Port, der die X11-Bibliotheken
bereitstellt.X_CLIENTS_PORTEin Port, der X11-Clients bereitstellt.X_SERVER_PORTEin Port, der den X11-Server bereitstellt.X_FONTSERVER_PORTEin Port, der den Fontserver bereitstellt.X_PRINTSERVER_PORTEin Port, der den Printserver bereitstellt.X_VFBSERVER_PORTEin Port, der den virtuellen Framebuffer-Server
bereitstellt.X_NESTSERVER_PORTEin Port, der einen nested X-Server
bereitstellt.X_FONTS_ENCODINGS_PORTEin Port, der Kodierungen für Schriftarten
bereitstellt.X_FONTS_MISC_PORTEin Port, der verschiedene Bitmap-Schriftarten
bereitstellt.X_FONTS_100DPI_PORTEin Port, der 100dpi Bitmap-Schriftarten
bereitstellt.X_FONTS_75DPI_PORTEin Port, der 75dpi Bitmap-Schriftarten
bereitstellt.X_FONTS_CYRILLIC_PORTEin Port, der kyrillische Bitmap-Schriftarten
bereitstellt.X_FONTS_TTF_PORTEin Port, der &truetype;-Schriftarten
bereitstellt.X_FONTS_TYPE1_PORTEin Port, der Type1-Schriftarten bereitstellt.X_MANUALS_PORTEin Port, der entwicklerorientierte Manualpages
bereitstellt.
Benutzung von X11-bezogenen Variablen in einem
Port# Port benutzt X11-Bibliotheken und hängt
vom Font-Server
# sowie von kyrillischen Schriftarten ab.
RUN_DEPENDS= ${X11BASE}/bin/xfs:${X_FONTSERVER_PORT} \
${X11BASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT}
USE_XLIB= yesPorts, die Motif benötigenWenn Ihr Port eine Motif-Bibliothek benötigt,
definieren Sie USE_MOTIF im
Makefile.
Die Standard-Motif-Implementierung ist x11-toolkits/open-motif.
Benutzer können stattdessen x11-toolkits/lesstif wählen,
indem Sie die WANT_LESSTIF-Variable
setzen.Die Variable MOTIFLIB wird von
bsd.port.mk auf die entsprechende
Motif-Bibliothek gesetzt. Bitte patchen Sie den Quelltext
Ihres Ports, sodass er überall
${MOTIFLIB} benutzt, wo die
Motif-Bibliothek im Original Makefile
oder Imakefile referenziert
wird.Es gibt zwei verbreitete Fälle:Wenn sich der Port in seinem
Makefile oder
Imakefile auf die
Motif-Bibliothek als -lXm bezieht,
ersetzen Sie das einfach durch
${MOTIFLIB}.Wenn der Port in seinem
ImakefileXmClientLibs benutzt, ersetzen Sie
das durch ${MOTIFLIB}
${XTOOLLIB} ${XLIB}.Anmerkung: MOTIFLIB expandiert
(normalerweise) zu -L/usr/X11R6/lib
-lXm oder /usr/X11R6/lib/libXm.a
- d.h. Sie müssen kein
-L oder -l davor
einfügen.X11 SchriftartenWenn Ihr Port Schriftarten für das
X-Window-System installiert, legen Sie diese nach
X11BASE/lib/X11/fonts/local.Erzeugen eines künstlichen
DISPLAY durch XvfbManche Applikationen benötigen ein
funktionierendes X11-Display, damit die Kompilierung
funktioniert. Das stellt für den FreeBSD
Package-Building-Cluster, der ohne Display läuft,
ein Problem dar. Wenn der folgende kanonische Hack
benutzt wird, startet der Package-Building-Cluster den
virtuellen Framebuffer-X-Server, und ein funktionierendes
DISPLAY wird dem Build
übergeben.USE_DISPLAY= yesDesktop-EinträgeDesktop-Einträge (Freedesktop
Standard) können in Ihrem Port einfach
über die DESKTOP_ENTRIES-Variable
erzeugt werden. Diese Einträge erscheinen dann im
Applikationsmenü von standardkonformen
Desktop-Umgebungen wie GNOME oder KDE. Die
.desktop-Datei wird dann
automatisch erzeugt, installiert und der
pkg-plist hinzugefügt.
Die Syntax ist:DESKTOP_ENTRIES= "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotifyDie Liste der möglichen Kategorien ist auf der
Freedesktop
Webseite abrufbar.
StartupNotify zeigt an, ob die
Applikation den Status in Umgebungen, die
Startup-Notifications kennen, löschen wird.Beispiel:DESKTOP_ENTRIES= "ToME" "Roguelike game based on JRR Tolkien's work" \
"${DATADIR}/xtra/graf/tome-128.png" \
"tome -v -g" "Application;Game;RolePlaying" \
falseBenutzung von GNOMEDas FreeBSD/GNOME-Projekt benutzt seine eigene
Gruppe von Variablen, um zu definieren, welche
GNOME-Komponenten ein bestimmter Port benutzt. Eine
umfassende Liste dieser Variablen existiert innerhalb
der Webseite des FreeBSD/GNOME-Projektes.Benutzung von KDEVariablen-Definitionen
Variablen für Ports, die KDE benutzenUSE_KDELIBS_VERDer Port benutzt KDE-Bibliotheken. Die Variable
spezifiziert die Major Version von KDE, die benutzt
werden soll, und impliziert
USE_QT_VER der entsprechenden
Version. Der einzig mögliche Wert ist
3.USE_KDEBASE_VERDer Port benutzt die KDE-Base. Die Variable
spezifiziert die Major Version von KDE, die benutzt
werden soll, und impliziert
USE_QT_VER der entsprechenden
Version. Der einzig mögliche Wert ist
3.
Ports, die Qt benötigen
Variablen für Ports, die Qt
benötigenUSE_QT_VERDer Port benutzt das Qt-Toolkit. Mögliche
Werte sind 3 und
4; diese spezifizieren die Major
Version von Qt, die benutzt werden soll.
Entsprechende Parameter werden an das
configure-Skript und
make übergeben.QT_PREFIXEnthält den Pfad, wohin Qt installiert ist
(nur lesbare Variable).MOCEnthält den Pfad von moc
(nur lesbare Variable). Voreingestellt entsprechend des
USE_QT_VER-Werts.QTCPPFLAGSZusätzliche Compiler-Flags, die über
CONFIGURE_ENV an das Qt-Toolkit
übergeben werden. Voreingestellt entsprechend des
USE_QT_VER-Wertes.QTCFGLIBSZusätzliche Bibliotheken, die über
CONFIGURE_ENV für das Qt-Toolkit
gelinkt werden sollen. Voreingestellt entsprechend des
USE_QT_VER-Wertes.QTNONSTANDARDÄnderungen von
CONFIGURE_ENV,
CONFIGURE_ARGS und
MAKE_ENV sollen unterdrückt
werden.
Zusätzliche Variablen für Ports,
die Qt 4.xi benutzenQT_COMPONENTSSpezifiziert Tool– und
Bibliothek-Abhängigkeiten für Qt4.
Siehe unten für Details.UICEnthält den Pfad von uic
(nur lesbare Variable). Voreingestellt entsprechend des
USE_QT_VER-Wertes.QMAKEEnthält den Pfad von qmake
(nur lesbare Variable). Voreingestellt entsprechend des
USE_QT_VER-Wertes.QMAKESPECEnthält den Pfad der Konfigurationsdatei
für qmake
(nur lesbare Variable). Voreingestellt entsprechend des
USE_QT_VER-Wertes.
Wenn USE_QT_VER gesetzt ist,
werden dem configure-Skript einige
nützliche Einstellungen übergeben:CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \
--with-qt-libraries=${QT_PREFIX}/lib \
--with-extra-libs=${LOCALBASE}/lib \
--with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+= MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \
QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}"Wenn USE_QT_VER auf
4 gesetzt ist, werden auch die folgenden
Einstellungen übergeben:CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}"
MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"Komponentenauswahl (nur bei Qt 4.x)Wenn USE_QT_VER auf 4 gesetzt ist,
können individuelle Qt4-Tool- und
Bibliotheksabhängigkeiten in der Variable
QT_COMPONENTS angegeben werden. An jede
Komponente kann _build oder
_run als Suffix angehängt werden,
was eine Abhängigkeit zur Build- bzw. Laufzeit angibt.
Ohne Suffix gilt die Abhängigkeit sowohl zur Build-
als auch zur Laufzeit. Bibliothekskomponenten sollten
normalerweise ohne Suffix angegeben werden,
Tool-Komponenten mit _build und
Plugin-Komponenten mit _run. Die
gebräuchlichsten Komponenten werden im Folgenden
angegeben (alle verfügbaren Komponenten sind in
_QT_COMPONENTS_ALL in
/usr/ports/Mk/bsd.qt.mk
aufgelistet):
Verfügbare Qt4-BibliothekskomponentenNameBeschreibungcorelibKern-Bibliothek (kann weggelassen
werden– es sei denn, der Port benutzt nichts
außer corelib)guiGraphische
Benutzeroberflächen-BibliotheknetworkNetzwerk-BibliothekopenglOpenGL-Bibliothekqt3supportQt3-Kompatibilitäts-BibliothekqtestlibModultest-BibliothekscriptSkript-BibliotheksqlSQL-BibliothekxmlXML-Bibliothek
Sie können herausfinden, welche Bibliotheken die
Applikation benötigt, indem Sie nach erfolgreicher
Kompilierung ldd auf die
Hauptbinärdatei anwenden.
Verfügbare Qt4-Tool-KomponentenNameBeschreibungmocmeta object compiler (wird zum Build fast
jeder Qt-Applikation benötigt)qmakeMakefile-Generator / Build-WerkzeugrccResource-Compiler (wird benötigt, falls
die Applikation *.rc oder
*.qrc Dateien
enthält)uicUser-Interface-Compiler (wird benötigt,
falls die Applikation von Qt-Designer erzeugte
*.ui Dateien enthält -
gilt für praktisch jede Qt-Applikation mit
einer GUI)
Verfügbare Qt4-Plugin-KomponentenNameBeschreibungiconenginesSVG-Icon-Engine Plugin (wenn die Applikation
SVG-Icons mitliefert)imageformatsBildformatplugins für GIF, JPEG, MNG und
SVG (wenn die Applikation Bilddateien
mitliefert)
Qt4-Komponenten auswählenIn diesem Beispiel benutzt die portierte Applikation
die Qt4 GUI-Bibliothek, die Qt4-Core-Bibliothek, alle
Qt4-Codeerzeugungstools und Qt4's Makefile Generator. Da
die GUI-Bibliothek eine Abhängigkeit von der
Core-Bibliothek impliziert, muss corelib nicht angegeben
werden. Die Qt4-Codeerzeugungstools moc, uic und rcc,
sowie der Makefile Generator qmake werden nur für den
Build benötigt, deshalb bekommen die den Suffix
_build:USE_QT_VER= 4
QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_buildZusätzliche BesonderheitenWenn die Applikation keine
configure Datei, sondern eine
.pro Datei hat, können Sie das
Folgende benutzen:HAS_CONFIGURE= yes
do-configure:
@cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
${QMAKE} -unix PREFIX=${PREFIX} texmaker.proBeachten Sie die Ähnlichkeit mit der
qmake-Zeile im mitgelieferten
BUILD.sh-Skript. Die
Übergabe von CONFIGURE_ENV
stellt sicher, dass qmake die
QMAKESPEC-Variable übergeben
bekommt, ohne die es nicht funktioniert.
qmake erzeugt Standard-Makefiles,
sodass es nicht nötig ist ein eigenes neues
build-Target zu schreiben.Qt-Applikationen sind oft so geschrieben, dass sie
plattformübergreifend sind, und oft ist X11/Unix
nicht die Plattform, auf der sie entwickelt werden.
Das sorgt oft für bestimmte fehlende
Kleinigkeiten wie z.B.:Fehlende zusätzliche
Include-Pfade.
Viele Applikationen kommen mit System-Tray-Icon
Support– unterlassen es aber Includes
oder Bibliotheken in den X11 Verzeichnissen zu suchen.
Sie können qmake über die
Kommandozeile sagen, es soll Verzeichnisse zu den
Include- und Bibliotheks-Suchpfaden
hinzufügen - z.B.:${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${X11BASE}/include \
LIBS+=-L${X11BASE}/lib sillyapp.proFalsche Installations-Pfade.
Manchmal werden Daten wie Icons oder .desktop-Dateien
per Vorgabe in Verzeichnisse installiert, die nicht von
XDG-kompatiblen Applikationen durchsucht werden.
editors/texmaker
ist hierfür ein Beispiel– siehe
patch-texmaker.pro im
files-Verzeichnis dieses Ports
als eine Vorlage, die zeigt, wie man dies direkt in der
Qmake Projektdatei löst.Benutzung von JavaVariablen-DefinitionenWenn Ihr Port ein Java™ Development Kit (JDK)
benötigt, entweder zum Bauen, zur Laufzeit oder
sogar, um das Distfile auszupacken, dann sollten Sie
USE_JAVA setzen.Es gibt mehrere JDKs in der
Ports-Sammlung– von verschiedenen Anbietern
und in verschiedenen Versionen.
Wenn Ihr Port eine bestimmte dieser Versionen
benötigt, können Sie definieren welche.
Die aktuelle Version ist java/jdk15.
Variablen, die von Ports, die Java benutzen, gesetzt
werden müssenVariableBedeutungUSE_JAVASollte definiert sein, damit die übrigen
Variablen irgendeinen Effekt haben.JAVA_VERSIONDurch Leerzeichen getrennte Liste von geeigneten
Java-Versionen für den Port. Ein optionales
"+" ermöglicht die Angabe eines
Bereiches von Versionen (mögliche Werte:
1.1[+] 1.2[+] 1.3[+] 1.4[+]).JAVA_OSDurch Leerzeichen getrennte Liste von geeigneten
JDK-Port-Betriebssystemen für den Port. (erlaubte
Werte: native linux).JAVA_VENDORDurch Leerzeichen getrennte Liste von geeigneten
JDK-Port-Anbietern für den Port. (erlaubte Werte:
freebsd bsdjava sun ibm
blackdown).JAVA_BUILDBedeutet, falls gesetzt, dass der ausgewählte
JDK-Port zu den Build-Abhängigkeiten des Ports
hinzugefügt werden soll.JAVA_RUNBedeutet, falls gesetzt, dass der ausgewählte
JDK-Port zu den Laufzeit-Abhängigkeiten des Ports
hinzugefügt werden soll.JAVA_EXTRACTBedeutet, falls gesetzt, dass der ausgewählte
JDK-Port zu den Extract-Abhängigkeiten des Ports
hinzugefügt werden soll.USE_JIKESLegt fest, ob der Port den jikes
Bytecode-Compiler zum Kompilieren benutzen soll. Wenn
kein Wert für diese Variable gesetzt ist, wird der
Port jikes für die Kompilierung
benutzen– falls vorhanden. Sie können
die Benutzung von jikes auch
ausdrücklich verbieten oder erzwingen (durch
Setzen auf 'no' oder
'yes'). Im letzteren Fall wird
devel/jikes zu den
Build-Abhängigkeiten des Ports hinzugefügt.
In jedem Fall wird, wenn jikes
tatsächlich statt javac zur
Kompilierung benutzt wird, die Variable
HAVE_JIKES von
bsd.java.mk definiert.
Das Folgende ist eine Liste aller Variablen, die ein
Port bekommt, nachdem er USE_JAVA
gesetzt hat:
Bereitgestellte Variablen für Ports,
die Java benutzenVariableWertJAVA_PORTDer Name des JDK-Ports (z.B.
'java/jdk14').JAVA_PORT_VERSIONDie volle Version des JDK Ports (z.B.
'1.4.2'). Wenn Sie nur die ersten
beiden Stellen dieser Versionsnummer benötigen,
benutzen Sie
${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}.JAVA_PORT_OSDas vom JDK-Port benutzte Betriebssystem (z.B.
'linux').JAVA_PORT_VENDORDer Anbieter des JDK-Ports (z.B.
'sun').JAVA_PORT_OS_DESCRIPTIONBeschreibung des vom JDK-Port benutzten
Betriebssystems (z.B.
'Linux').JAVA_PORT_VENDOR_DESCRIPTIONBeschreibung des Anbieters des JDK-Ports (z.B.
'FreeBSD Foundation').JAVA_HOMEPfad zum Installationsverzeichnis des JDK (z.B.
'/usr/local/jdk1.3.1').JAVACPfad zum Java-Compiler, der benutzt werden soll
(z.B.
'/usr/local/jdk1.1.8/bin/javac' oder
'/usr/local/bin/jikes').JARPfad zum jar-Werkzeug, das
benutzt werden soll (z.B.
'/usr/local/jdk1.2.2/bin/jar' oder
'/usr/local/bin/fastjar').APPLETVIEWERPfad zum appletviewer-Werkzeug
(z.B.
'/usr/local/linux-jdk1.2.2/bin/appletviewer').JAVAPfad zur java Binärdatei.
Benutzen Sie dies, um Java-Programme auszuführen
(z.B.
'/usr/local/jdk1.3.1/bin/java').JAVADOCPfad zum
javadoc-Werkzeug.JAVAHPfad zum javah-Programm.JAVAPPfad zum javap-Programm.JAVA_KEYTOOLPfad zum keytool-Werkzeug.
Diese Variable ist nur verfügbar, wenn das JDK Java
1.2 oder höher ist.JAVA_N2APfad zum
native2ascii-Werkzeug.JAVA_POLICYTOOLPfad zum policytool Programm.
Diese Variable ist nur verfügbar, wenn das JDK
Java 1.2 oder höher ist.JAVA_SERIALVERPfad zum
serialver-Werkzeug.RMICPfad zum RMI Stub/Skeleton-Generator,
rmic.RMIREGISTRYPfad zum RMI Registry-Werkzeug,
rmiregistry.RMIDPfad zum RMI Daemon rmid.
Diese Variable ist nur verfügbar, wenn das JDK
Java 1.2 oder höher unterstützt.JAVA_CLASSESPfad zum Archiv, das die JDK-Klassendateien
enthält. Für das JDK 1.2 oder später
ist dies
${JAVA_HOME}/jre/lib/rt.jar.
Frühere JDKs benutzten
${JAVA_HOME}/lib/classes.zip.HAVE_JIKESIst dann gesetzt, wenn jikes
vom Port benutzt wird (s. USE_JIKES
oben).
Sie können das java-debug
make-Target benutzen, um Information zum Debuggen
Ihres Ports zu erhalten. Es wird die Werte vieler
der obenangegebenen Variablen anzeigen.Zusätzlich sind die folgenden Konstanten
definiert, damit alle Java-Ports auf eine konsistente
Art installiert werden können:
Konstanten, die für Ports, welche Java benutzen,
definiert sindKonstanteWertJAVASHAREDIRDas Basis-Verzeichnis für alles, was mit Java
zusammenhängt. Standardmäßig
${PREFIX}/share/java.JAVAJARDIRDas Verzeichnis, wohin JAR-Dateien installiert
werden sollen. Standardmäßig
${JAVASHAREDIR}/classes.JAVALIBDIRDas Verzeichnis, in dem JAR-Dateien, die von
anderen Ports installiert wurden, liegen.
Standardmäßig
${LOCALBASE}/share/java/classes.
Die entsprechenden Einträge sind sowohl in
PLIST_SUB (dokumentiert in
) als auch in
SUB_LIST definiert.Kompilieren mit AntWenn der Port mit Apache Ant kompiliert werden soll,
muss er USE_ANT setzen. Ant wird dann
als das sub-make-Kommando betrachtet. Wenn kein
do-build-Target vom Port definiert ist,
wird eine Standardvorgabe benutzt, die einfach Ant
entsprechend MAKE_ENV,
MAKE_ARGS und
ALL_TARGETS aufruft. Das ähnelt dem
USE_GMAKE-Mechanismus, der in dokumentiert ist.Wenn jikes anstelle von
javac benutzt wird (siehe
USE_JIKES in ), dann wird Ant es automatisch
benutzen, um den Port zu kompilieren.Optimales VerfahrenWenn Sie eine Java-Bibliothek portieren, sollte Ihr Port
die JAR-Datei(en) in ${JAVAJARDIR}
installieren, und alles andere unter
${JAVASHAREDIR}/${PORTNAME}
(ausgenommen die Dokumentation - siehe unten). Um die
Größe der Packlistendatei zu reduzieren,
können die JAR-Datei(en) direkt im
Makefile angegeben werden. Benutzen
Sie einfach die folgende Anweisung (wobei
myport.jar der Name der JAR-Datei ist,
die als Teil des Ports installiert wird):PLIST_FILES+= %%JAVAJARDIR%%/myport.jarBeim Portieren einer Java-Applikation installiert der
Port normalerweise alles unter einem einzigen Verzeichnis
(inklusive seiner JAR-Abhängigkeiten). Die Benutzung
von ${JAVASHAREDIR}/${PORTNAME}
wird in dieser Beziehung dringend empfohlen. Es liegt
im Entscheidungsbereich des Portierenden, ob der Port
die zusätzlichen JAR-Abhängigkeiten unter
diesem Verzeichnis installieren oder direkt die schon
installierten (aus ${JAVAJARDIR})
benutzen soll.Unabhängig von der Art Ihres Ports (Bibliothek
oder Applikation), sollte die zusätzliche Dokumentation
an die gleiche Stelle
installiert werden wie bei jedem anderen Port auch.
Das JavaDoc-Werkzeug ist dafür bekannt einen
unterschiedlichen Satz von Dateien abhängig von der
Version des benutzten JDKs zu erstellen. Für Ports,
die nicht die Benutzung eines bestimmten JDKs vorgeben,
ist es deshalb eine komplexe Aufgabe die Packliste
(pkg-plist) festzulegen. Dies ist
ein Grund, warum dringend angeraten wird, das
PORTDOCS-Makro zu benutzen.
Außerdem, selbst wenn Sie den Satz von Dateien,
den javadoc erzeugen wird,
voraussagen können, die Größe der
resultierenden pkg-plist
befürwortet die Benutzung von
PORTDOCS.Der Vorgabewert für DATADIR ist
${PREFIX}/share/${PORTNAME}. Es ist
eine gute Idee, DATADIR für
Java-Ports stattdessen auf
${JAVASHAREDIR}/${PORTNAME} zu setzen.
In der Tat wird DATADIR automatisch zu
PLIST_SUB (dokumentiert in ) hinzugefügt, d.h. Sie können
%%DATADIR%% direkt in
pkg-plist benutzen.Zu der Frage, ob Java-Ports aus dem Quelltext gebaut
werden, oder direkt bereitgestellte binäre
Distributionen benutzt werden sollten, gab es, als dies
geschrieben wurde, keine definierte Richtlinie. Allerdings
ermutigen Mitglieder des &os;
Java-Projekts Porter dazu, Ihre Ports aus dem
Quelltext kompilieren zu lassen, wann immer dies kein
Problem darstellt.Alle Eigenschaften, die in diesem Abschnitt
präsentiert wurden sind in
bsd.java.mk implementiert.
Sollten Sie jemals der Meinung sein, dass Ihr Port
ausgefeiltere Java-Unterstützung benötigt,
schauen Sie bitte erst in das
bsd.java.mk CVS Log, weil es normalerweise immer
etwas Zeit braucht bis die neuesten Eigenschaften
dokumentiert sind. Wenn Sie glauben, dass der fehlende
Support auch für viele andere Java Ports nützlich
sein könnte, wenden Sie sich bitte an die
&a.java;.Obwohl es eine java-Kategorie
für Fehlerberichte gibt, bezieht sich diese auf die
JDK-Portierungsbemühungen des &os; Java-Projektes.
Deshalb sollten Sie Ihren Java-Port in der
ports-Kategorie einreichen wie bei
jeden anderen Port auch - es sei denn, die Angelegenheit,
die Sie zu klären versuchen, steht in Zusammenhang
entweder mit einer JDK-Implementierung oder
bsd.java.mk.Gleichermaßen gibt es eine definierte Richtlinie
für die CATEGORIES eines Java-Ports,
die in erklärt
wird.Webanwendungen, Apache und PHPApache
Variablen für Ports, die Apache
verwendenUSE_APACHEDer Port benötigt Apache. Mögliche Werte:
yes (beliebige Version),
1.3, 2.0,
2.2, 2.0+,
etc. – Standard ist Version
1.3.WITH_APACHE2Der Port benötigt Apache 2.0. Ist diese
Variable nicht gesetzt, so benötigt der Port
Apache 1.3. Diese Variable ist veraltet und sollte
nicht mehr verwendet werden.APXSVollständiger Pfad zu der
apxs Binärdatei. Die Variable
kann neu gesetzt werden.HTTPDVollständiger Pfad zu der
httpd Binärdatei.
Die Variable kann neu gesetzt werden.APACHE_VERSIONBeinhaltet die Versionsnummer des aktuell
installierten Apache (nur lesbare Variable).
Diese Variable ist nach Einbinden der Datei
bsd.port.pre.mk
verfügbar. Mögliche Werte:
13, 20,
22.APACHEMODDIRVerzeichnis der Apache-Module. Diese Variable wird
automatisch in pkg-plist ersetzt.APACHEINCLUDEDIRVerzeichnis der Apache Header-Dateien. Diese
Variable wird automatisch in pkg-plist ersetzt.APACHEETCDIR Verzeichnis der Apache-Konfigurationsdateien.
Diese Variable wird automatisch in pkg-plist
ersetzt.
Nützliche Variablen für Ports von
Apache-ModulenMODULENAMEName des Moduls. Standardwert ist
PORTNAME. Beispiel:
mod_helloSHORTMODNAMEDer gekürzte Name des Moduls.
Standardmäßig
wird der Wert von MODULENAME
übernommen.
Beispiel: helloAP_FAST_BUILDVerwende apxs zum Kompilieren
und Installieren des Moduls.AP_GENPLISTEine pkg-plist wird
automatisch erzeugt.AP_INCVerzeichnis für zusätzliche
Header-Dateien, die beim Kompilieren mitverwendet
werden.AP_LIBVerzeichnis für zusätzliche
Bibliothek-Dateien, welche beim Kompilieren
mitverwendet werden.AP_EXTRASZusätzliche Flags für
apxs.
WebanwendungenWebanwendungen sollten nach PREFIX/www/programmname
installiert werden.
Der Einfachheit halber ist dieser Pfad sowohl im
Makefile als auch in
pkg-plist als
WWWDIR verfügbar. Der relative
Pfad PREFIX ist hingegen im
Makefile durch die Variable
WWWDIR_REL festgelegt.Der Benutzername und die Benutzergruppe,
mit deren Rechte Webanwendungen laufen, sind in
WWWOWN und WWWGRP
festgelegt. Standardwert ist bei beiden
www. Falls ein Port mit anderen
Rechten gestartet werden soll, so sollte die Anweisung
WWWOWN?= myuser verwendet werden. Dies
vereinfacht dem Benutzer eine Anpassung dieser Werte.Falls die Webanwendung nicht explizit Apache
benötigt, so sollte dieser auch nicht als
Abhängigkeit des Ports aufgeführt werden.
Dadurch bleibt es dem Benutzer überlassen
Apache oder einen anderen Webserver zu verwenden.PHP
Variablen für Ports, die PHP verwendenUSE_PHPDer Port benötigt PHP. Der Wert
yes bewirkt eine Abhängigkeit
des Ports von PHP. Es kann auch eine Liste der
benötigten PHP-Erweiterungen angegeben
werden. Beispiel:
pcre xml gettextDEFAULT_PHP_VERLegt die Version von PHP fest, die
standardmäßig installiert wird, falls noch
kein PHP vorhanden ist. Standardwert ist
4. Mögliche Werte sind:
4,5IGNORE_WITH_PHPDer Port funktioniert nicht mit der angegebenen
Version von PHP. Mögliche Werte:
4, 5USE_PHPIZEDer Port wird als PHP-Erweiterung gebaut.USE_PHPEXTDer Port wird wie eine PHP-Erweiterung
behandelt – Installation und
Eintragung in die PHP-Registry für
Erweiterungen.USE_PHP_BUILDSetzt PHP als build-Anhängigkeit.WANT_PHP_CLIBenötigt die Kommandozeilen-Version von
PHP.WANT_PHP_CGIBenötigt die CGI-Version von PHP.WANT_PHP_MODBenötigt das Apache-Modul von PHP.WANT_PHP_SCRBenötigt die Kommandozeilen- oder die
CGI-Version von PHP.WANT_PHP_WEBBenötigt das Apache-Modul oder die CGI-Version
von PHP.
PEAR ModuleDas Portieren von PEAR-Modulen ist sehr einfach.Mit Hilfe der Variablen FILES,
TESTS, DATA,
SQLS, SCRIPTFILES,
DOCS und EXAMPLES
können die zu installierenden Dateien angegeben werden.
Alle aufgeführten Dateien werden automatisch in die
jeweiligen Verzeichnisse installiert und der Datei
pkg-plist hinzugefügt.Die Datei
${PORTSDIR}/devel/pear/bsd.pear.mk
muss am Ende des Makefiles
eingebunden werden.Beispiel eines Makefiles für eine PEAR
KlassePORTNAME= Date
PORTVERSION= 1.4.3
CATEGORIES= devel www pear
MAINTAINER= example@domain.com
COMMENT= PEAR Date and Time Zone Classes
BUILD_DEPENDS= ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR
RUN_DEPENDS= ${BUILD_DEPENDS}
FILES= Date.php Date/Calc.php Date/Human.php Date/Span.php \
Date/TimeZone.php
TESTS= test_calc.php test_date_methods_span.php testunit.php \
testunit_date.php testunit_date_span.php wknotest.txt \
bug674.php bug727_1.php bug727_2.php bug727_3.php \
bug727_4.php bug967.php weeksinmonth_4_monday.txt \
weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt \
weeksinmonth_rdm_sunday.txt
DOCS= TODO
_DOCSDIR= .
.include <bsd.port.pre.mk>
.include "${PORTSDIR}/devel/pear/bsd.pear.mk"
.include <bsd.port.post.mk>Python benutzenDie Ports unterstützen parallele Installationen
mehrerer Python-Versionen. Ports sollten sicherstellen,
dass der richtige python-Interpreter
verwendet wird – entsprechend der durch den
Benutzer definierbaren Variable
PYTHON_VERSION. Häufig bedeutet
dies, dass der Pfad zum python-Interpreter
durch den Wert der Variablen PYTHON_CMD
ersetzt werden muss.Ports, die Dateien unter
PYTHON_SITELIBDIR installieren, sollten
pyXY- als Präfix des Paketnamens
haben, sodass in deren Paketname die zugehörige
Python Version aufgeführt wird.PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
Nützliche Variablen für Ports,
die Python verwendenUSE_PYTHONDer Port benötigt Python. Die minimal
benötigte Version kann durch Werte wie
2.3+ angegeben werden.
Bereiche von Versionsnummern können durch Angabe der
minimalen und maximalen Versionsnummer, getrennt durch
einen Gedankenstrich, festgelegt werden, z.B.:
2.1-2.3USE_PYDISTUTILSVerwende Python-distutils zum Konfigurieren,
Kompilieren und Installieren. Dies ist erforderlich,
falls der Port eine setup.py-Datei
beinhaltet. Dadurch werden die
do-build und
do-install-Ziele und eventuell
auch das do-configure-Ziel
übergangen, falls GNU_CONFIGURE
nicht definiert ist.PYTHON_PKGNAMEPREFIXWird als PKGNAMEPREFIX verwendet,
um Pakete für unterschiedliche Python-Versionen zu
trennen. Beispiel: py24-PYTHON_SITELIBDIRVerzeichnis des site-Pakete Baums, der das
Installationsverzeichnis von Python (üblicherweise
LOCALBASE) beinhaltet. Die
PYTHON_SITELIBDIR-Variable kann
sehr nützlich bei der Installation von
Python-Modulen sein.PYTHONPREFIX_SITELIBDIRDie präfix-freie Variante von
PYTHON_SITELIBDIR. Benutzen Sie immer
%%PYTHON_SITELIBDIR%% in
pkg-plist, wenn möglich. Der
Standardwert von %%PYTHON_SITELIBDIR%%
ist
lib/python%%PYTHON_VERSION%%/site-packages
PYTHON_CMDKommandozeilen-Interpreter für Python mit
Versionsnummer.PYNUMERICListe der Abhängigkeiten für numerische
Erweiterungen.PYNUMPYListe der Abhängigkeiten für die neue
numerische Erweiterung numpy.
(PYNUMERIC ist vom Anbieter als
veraltet deklariert)PYXMLListe der Abhängigkeiten für
XML-Erweiterungen (wird ab Python 2.0 nicht mehr
benötigt, da im Basispaket enthalten).USE_TWISTEDSetzt die Abhängigkeit des Ports von
twistedCore. Die Liste der erforderlichen Komponenten
kann als Wert spezifiziert werden. Beispiel:
web lore pair flowUSE_ZOPESetzt Zope, eine Plattform für Webanwendungen,
als Abhängigkeit des Ports. Setzt die
Versionsabhängigkeit von Python auf 2.3. Setzt
ZOPEBASEDIR auf das Verzeichnis,
in welches Zope installiert wurde.
Eine vollständige Liste aller verfügbaren
Variablen ist in /usr/ports/Mk/bsd.python.mk
zu finden.Emacs benutzenDieser Abschnitt muss noch geschrieben werden.Ruby benutzen
Nützliche Variablen für Ports,
die Ruby verwendenVariableDescriptionUSE_RUBYDer Port benötigt Ruby.USE_RUBY_EXTCONFDer Port verwendet extconf.rb
für die Konfiguration.USE_RUBY_SETUPDer Port verwendet setup.rb
für die Konfiguration.RUBY_SETUPLegt den alternativen Namen von
setup.rb fest. Üblich ist der
Wert install.rb.
Die folgende Tabelle listet ausgewählte Variablen
auf, die Portautoren über die Port-Infrastruktur zur
Verfügung stehen. Diese Variablen sollten für die
Installation von Dateien in die entsprechenden Verzeichnisse
verwendet werden. Sie sollten in
pkg-plist so häufig wie möglich
verwendet und in einem Port nicht neu definiert werden.
Ausgewählte read-only-Variablen für Ports,
die Ruby verwendenVariableBeschreibungBeispielRUBY_PKGNAMEPREFIXWird als PKGNAMEPREFIX verwendet,
um Pakete für verschiedene Versionen von Ruby zu
unterscheiden.ruby18-RUBY_VERSIONVollständige Version von Ruby in der Form
x.y.z.1.8.2RUBY_SITELIBDIRInstallationsverzeichnis der von der
Rechnerarchitektur unabhängigen
Bibliotheken./usr/local/lib/ruby/site_ruby/1.8RUBY_SITEARCHLIBDIRInstallationsverzeichnis der von der Rechnerarchitektur
abhängigen Bibliotheken./usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6RUBY_MODDOCDIRInstallationsverzeichnis für die Dokumentation
der Module./usr/local/share/doc/ruby18/patsyRUBY_MODEXAMPLESDIRInstallationsverzeichnis für die Beispiele der
Module./usr/local/share/examples/ruby18/patsy
Eine vollständige Liste der verfügbarenVariablen
kann in /usr/ports/Mk/bsd.ruby.mk
eingesehen werden.SDL verwendenDie Variable USE_SDL wird für die
automatische Konfiguration der Abhängigkeiten für Ports
benutzt, die auf SDL basierende Bibliotheken wie
devel/sdl12 und
x11-toolkits/sdl_gui
verwenden.Die folgenden SDL-Bibliotheken sind derzeit
bekannt:sdl: devel/sdl12gfx: graphics/sdl_gfxgui: x11-toolkits/sdl_guiimage: graphics/sdl_imageldbad: devel/sdl_ldbadmixer: audio/sdl_mixermm: devel/sdlmmnet: net/sdl_netsound: audio/sdl_soundttf: graphics/sdl_ttfFalls ein Port z.B. von
net/sdl_net und
audio/sdl_mixer
abhängt, so wäre die Syntax:USE_SDL= net mixerDie Abhängigkeit von
devel/sdl12, die durch
net/sdl_net und
audio/sdl_mixer entsteht,
wird automatisch zum Port hinzugefügt.Falls USE_SDL im Port verwendet wird,
so wird automatisch:die Abhängigkeit von
sdl12-config zu
BUILD_DEPENDS hinzugefügtdie Variable SDL_CONFIG zu
CONFIGURE_ENV hinzugefügtdie Abhängigkeit der ausgewählten
Bibliotheken zu LIB_DEPENDS
hinzugefügtUm zu überprüfen, ob die SDL-Bibliotheken
verfügbar sind, kann die Variable
WANT_SDL verwendet werden:WANT_SDL=yes
.include <bsd.port.pre.mk>
.if ${HAVE_SDL:Mmixer}!=""
USE_SDL+= mixer
.endif
.include <bsd.port.post.mk>wxWidgets verwendenDieser Abschnitt beschreibt den Status der
wxWidgets-Bibliotheken in den Ports
und deren Einbindung in das Ports-System.EinführungEs gibt viele Probleme bei der gleichzeitigen Verwendung
unterschiedlicher Versionen von
wxWidgets-Bibliotheken (Dateien
unterschiedlicher
wxWidgets-Versionen haben
denselben Dateinamen). In den Ports wurde das Problem
dadurch gelöst, dass jede Version unter einem eigenen
Namen installiert wird, der die Versionsnummer als Suffix
beinhaltet.Der offensichtliche Nachteil dabei ist, dass jede
Anwendung so verändert werden muss, dass sie die
erwartete Version vorfindet. Die meisten solcher
Anwendungen benutzen das
wx-config-Skript, um die benötigten
Compiler- und Linkerflags zu erhalten. Dieses Skript hat
für jede verfügbare Version einen anderen Namen.
Die meisten Anwendungen beachten eine Umgebungsvariable oder
ein Argument beim configure-Skript, um
das gewünschte wx-config-Skript
festzulegen. Ansonsten müssen sie gepatcht
werden.Auswahl der VersionUm festzulegen, welche Version der
wxWidgets verwendet werden soll,
gibt es zwei Variablen (falls nur eine der beiden definiert
wird, so wird die andere auf einen Standardwert
gesetzt):
Variablen, um die
wxWidgets-Version festzulegenVariableBeschreibungStandardwertUSE_WXListe der Versionen, die der Port verwenden
kannAlle verfügbaren VersionenUSE_WX_NOTListe der Versionen, die der Port nicht verwenden
kannNichts
Es folgt eine Liste an möglichen
wxWidgets-Versionen und deren
zugehöriger Port:
Ab Version 2.5 werden auch Versionen in
Unicode unterstützt und über einen Unterport
mit dem Suffix -unicode installiert.
Dies kann aber auch über Variablen gehandhabt
werden (siehe ).Die Variablen in
können auf einen oder mehrere (durch Leerzeichen
getrennt) der folgenden Werte gesetzt werden:
Spezifikationen der
wxWidgets-VersionenBeschreibungBeispielEinzelne Version2.4Aufsteigende Versionsnummern2.4+Absteigende Versionsnummern2.6-Versionsinterval (muss aufsteigend sein)2.4-2.6
Desweiteren gibt es Variablen, über die eine
bevorzugte Version festgelegt werden kann. Die Versionen
können als Liste angegeben werden, wobei die
Reihenfolge der Priorisierung entspricht.
Variablen zur Festlegung der bevorzugten
wxWidgets-VersionNameBestimmt fürWANT_WX_VERden PortWITH_WX_VERden Benutzer
KomponentenauswahlDesweiteren gibt es Anwendungen, die nicht direkt
wxWidgets-Bibliotheken sind, aber
trotzdem mit diesen zusammenhängen. Diese Anwendungen
können über die Variable
WX_COMPS festgelegt werden. Die folgenden
Komponenten sind verfügbar:
Der Typ der Abhängigkeit kann für jede
Komponente durch hinzufügen eines Suffix (durch
Strichpunkt getrennt) festgelegt werden. Falls der Typ nicht
angegeben wird, wird ein Standardwert verwendet (siehe ). Die folgenden Typen sind
verfügbar:
Verfügbare Typen von
wxWidgets-AbhängigkeitenNameBeschreibungbuildKomponente wird zum Bau
benötigt – äquivalent zu
BUILD_DEPENDSrunKomponente wird zum Ausführen
benötigt – äquivalent zu
RUN_DEPENDSlibKomponente wird zum Bau und Ausführen
benötigt – äquivalent zu
LIB_DEPENDS
Die Standardwerte für die einzelnen Komponenten
sind in der folgenden Tabelle aufgeführt:
Standardtypen der
wxWidgets-AbhängigkeitenKomponenteTyp der Abhängigkeitwxlibcontriblibpythonrunmozillalibsvglib
Auswahl von
wxWidgets-KomponentenDer folgende Ausschnitt entspricht einem Port, der
die wxWidgets-Version
2.4 und die zugehörigen
Bibliotheken verwendet.USE_WX= 2.4
WX_COMPS= wx contribUnicodeDie wxWidgets-Bibliotheken
unterstützen Unicode seit der Version
2.5. In den Ports sind beide Versionen
verfügbar und können über die folgenden
Variablen ausgewählt werden:
Variablen, um Unicode in den
wxWidgets-Versionen
auszuwählenVariableBeschreibungBestimmt fürWX_UNICODEDer Port funktioniert
ausschließlich mit der
Unicode-Versionden PortWANT_UNICODEDer Port funktioniert in beiden
Versionen – bevorzugt wird jedoch
Unicodeden PortWITH_UNICODEDer Port verwendet die Unicode-Versionden BenutzerWITHOUT_UNICODEDer Port verwendet, falls unterstützt, die
normale Version (falls WX_UNICODE
nicht definiert ist)den Benutzer
Die Variable WX_UNICODE darf
nicht bei Ports benutzt werden, die sowohl die Version mit
als auch ohne Unterstützung für Unicode
verwenden können. Falls der Port
standardmäßig Unterstützung für
Unicode bieten soll, verwenden Sie
WANT_UNICODE stattdessen.Feststellen der installierten VersionUm eine bereits installierte Version zu finden, muss
WANT_WX definiert werden. Falls diese
Variable nicht auf eine bestimmte Versionsnummer gesetzt
wird, werden die Komponenten einen Suffix mit der
Versionsnummer tragen. Die Variable
HAVE_WX wird gesetzt, falls eine
installierte Version vorgefunden wurde.Installierte
wxWidgets-Versionen
und –Komponenten feststellenDer folgende Ausschnitt kann in einem Port verwendet
werden, der wxWidgets
verwendet, falls es installiert ist, oder falls eine
Option dafür ausgewählt wurde.WANT_WX= yes
.include <bsd.port.pre.mk>
.if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != ""
USE_WX= 2.4
CONFIGURE_ARGS+=--enable-wx
.endifDer folgende Ausschnitt kann verwendet werden, um
die Unterstützung für
wxPython zusätzlich zu der
von wxWidgets zu aktivieren
(beide in Version 2.6), wenn das
installiert ist, oder die Option ausgewählt
wurde.USE_WX= 2.6
WX_COMPS= wx
WANT_WX= 2.6
.include <bsd.port.pre.mk>
.if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != ""
WX_COMPS+= python
CONFIGURE_ARGS+=--enable-wxpython
.endifVordefinierte VariablenDie folgenden Variablen sind in den Ports
verfügbar (nachdem sie entsprechend definiert wurden).
Vordefinierte Variablen für Ports, die
wxWidgets verwendenNameBeschreibungWX_CONFIGPfad zum wxWidgetswx-config-Skript (mit
unterschiedlichem Namen)WXRC_CMDPfad zum wxWidgetswxrc-Programm (mit
unterschiedlichem Namen)WX_VERSIONVersion der wxWidgets, die
verwendet werden soll (z.B. 2.6)WX_UNICODEFalls Unterstützung für Unicode nicht
explizit definiert, jedoch verwendet wird, dann wird die
Unterstützung automatisch aktiviert.
Verarbeitung in
bsd.port.pre.mkFalls die Variablen gleich nach dem Importieren von
bsd.port.pre.mk benutzt werden sollen,
so muss die Variable WX_PREMK definiert
werden.Falls WX_PREMK definiert ist, so
werden Version, Abhängigkeiten, Komponenten und
vordefinierte Variablen nicht geändert, wenn die
Variablen des wxWidgets-Ports
nach dem Einbinden von
bsd.port.pre.mk geändert
werden.Verwendung von
wxWidgets-Variablen
in KommandosDer folgende Ausschnitt zeigt die Verwendung von
WX_PREMK durch Ausführen des
wx-config-Skriptes, um die
vollständige Version als Zeichenkette zu erhalten,
diese dann einer Variablen zuzuweisen und die Variable
anschließend einem Programm zu
übergeben.USE_WX= 2.4
WX_PREMK= yes
.include <bsd.port.pre.mk>
.if exists(${WX_CONFIG})
VER_STR!= ${WX_CONFIG} --release
PLIST_SUB+= VERSION="${VER_STR}"
.endifDie wxWidgets-Variablen
können problemlos in Kommandos benutzt werden, falls
diese in Targets ohne gesetztes
WX_PREMK verwendet werden.Weitere configure-ArgumenteEinige GNU configure-Skripte
können wxWidgets nicht
auffinden, falls nur die Umgebungsvariable
WX_CONFIG gesetzt ist, sondern
benötigen zusätzliche Argumente. Dafür kann
die Variable WX_CONF_ARGS benutzt
werden.
Zulässige Werte für
WX_CONF_ARGSMöglicher WertResultierendes Argumentabsolute--with-wx-config=${WX_CONFIG}relative--with-wx=${X11BASE}
--with-wx-config=${WX_CONFIG:T}
Verwendung von LuaDieser Abschnitt beschreibt den Status der
Lua-Bibliotheken in den Ports
und deren Einbindung in das Ports System.EinführungEs gibt viele Probleme bei der gleichzeitigen
Verwendung unterschiedlicher Versionen von
Lua-Bibliotheken (Dateien
unterschiedlicher Versionen haben denselben Dateinamen). In
den Ports wurde das Problem gelöst, indem jede Version
unter einem eigenen Namen mit der Versionsnummer als Suffix
installiert wird.Der offensichtliche Nachteil dabei ist, dass jede
Anwendung so verändert werden muss, dass sie die
erwartete Version vorfindet. Dies kann jedoch durch
zusätzliche Flags für Compiler und Linker
gelöst werden.Auswahl der VersionUm festzulegen, welche Version von
Lua verwendet werden soll, gibt
es zwei Variablen (falls nur eine der beiden definiert ist,
so wird die andere auf einen Standardwert gesetzt):
Variablen, um die
Lua-Version festzulegenVariableBeschreibungStandardwertUSE_LUAListe der Versionen, welche der Port verwenden
kannAlle verfügbaren VersionenUSE_LUA_NOTListe der Versionen, die der Port nicht verwenden
kannNichts
Es folgt eine Liste an möglichen
Lua-Versionen und deren
zugehöriger Port:
Die Variablen in
können auf einen oder mehrere (durch Leerzeichen
getrennt) der folgenden Werte gesetzt werden:
Spezifikationen der
Lua-VersionenBeschreibungBeispielSpezielle Version4.0Aufsteigende Versionen5.0+Absteigende Versionen5.0-Versionenintervall (muss aufsteigend sein)5.0-5.1
Desweiteren gibt es Variablen, über die eine
bevorzugte Version festgelegt werden kann. Die Versionen
können als Liste angegeben werden, wobei die
Reihenfolge der Priorisierung entspricht.
Variablen zur Festlegung der bevorzugten
Lua-VersionNameBestimmt fürWANT_LUA_VERden PortWITH_LUA_VERden Benutzer
Auswahl der
Lua-VersionDer folgende Ausschnitt entspricht einem Port, der
Lua in den Versionen
5.0 oder 5.1
verwenden kann und standardmäßig
5.0 verwendet. Diese Einstellung kann
durch die benutzerdefinierte Variable
WITH_LUA_VER überschrieben
werden.USE_LUA= 5.0-5.1
WANT_LUA_VER= 5.0KomponentenauswahlDesweiteren gibt es Anwendungen, die nicht direkt
Lua-Bibliotheken sind, aber
trotzdem mit diesen zusammenhängen. Diese Anwendungen
können über die Variable
LUA_COMPS festgelegt werden. Die
folgenden Komponenten sind verfügbar:
Verfügbare
Lua-KomponentenNameBeschreibungVersionseinschränkungenluaHauptbibliothekKeinetoluaBibliothek für die Unterstützung von C/C++-Code4.0-5.0rubyRuby-Bindungen4.0-5.0
Es gibt weitere Komponenten, die jedoch Module
für den Interpreter sind und nicht von Anwendungen
benutzt werden (nur von anderen Modulen).Der Typ der Abhängigkeit kann für jede
Komponente durch Hinzufügen eines Suffix (durch
Strichpunkt getrennt) festgelegt werden. Falls der Typ nicht
angegeben wird, wird ein Standardwert verwendet (siehe ). Die folgenden Typen sind
verfügbar:
Verfügbare Typen von
Lua-AbhängigkeitenNameBeschreibungbuildKomponente wird zum Bau
benötigt – äquivalent zu
BUILD_DEPENDSrunKomponente wird zum Ausführen
benötigt – äquivalent zu
RUN_DEPENDSlibKomponente wird zum Bau und zum Ausführen
benötigt – äquivalent zu
LIB_DEPENDS
Die Standardwerte für die einzelnen Komponenten
sind in der folgenden Tabelle aufgeführt:
Standardtypen für
Lua-AbhängigkeitenKomponenteTyp der Abhängigkeitlualib für
4.0-5.0 (shared) und
build für 5.1
(static)toluabuild (static)rubylib (shared)
Auswahl von
Lua-KomponentenDer folgende Ausschnitt entspricht einem Port,
welcher die Lua-Version
4.0 und die zugehörigen
Ruby-Bindungen
verwendet.USE_LUA= 4.0
LUA_COMPS= lua rubyFeststellen der installierten VersionUm eine bereits installierte Version zu finden, muss
WANT_LUA definiert werden. Falls diese
Variable nicht auf eine bestimmte Versionsnummer gesetzt
wird, werden die Komponenten einen Suffix mit der
Versionsnummer tragen. Die Variable
HAVE_LUA wird gesetzt, falls eine
installierte Version vorgefunden wurde.Installierte
Lua-Versionen
und– Komponenten feststellenDer folgende Ausschnitt kann in einem Port verwendet
werden, der Lua benutzt, falls
es installiert ist oder eine Option dafür
ausgewählt wurde.WANT_LUA= yes
.include <bsd.port.pre.mk>
.if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != ""
USE_LUA= 5.0-5.1
CONFIGURE_ARGS+=--enable-lua5
.endifDer folgende Ausschnitt kann verwendet werden, um
die Unterstützung für
tolua zusätzlich zu der
von Lua zu aktivieren (beide in
Version 4.0), wenn dies installiert ist oder die Option
ausgewählt wurde.USE_LUA= 4.0
LUA_COMPS= lua
WANT_LUA= 4.0
.include <bsd.port.pre.mk>
.if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != ""
LUA_COMPS+= tolua
CONFIGURE_ARGS+=--enable-tolua
.endifVordefinierte VariablenDie folgenden Variablen sind in den Ports
verfügbar (nachdem sie entsprechend definiert wurden).
Vordefinierte Variablen für Ports, die
Lua verwendenNameBeschreibungLUA_VERDie Lua-Version, die
verwendet wird (z.B. 5.1)LUA_VER_SHDie Hauptversion für
shared-Lua-Bibliotheken (z.B.
1)LUA_VER_STRDie Lua-Version ohne die
Punkte (z.B. 51)LUA_PREFIXDer Präfix, unter dem
Lua (und Komponenten)
installiert istLUA_SUBDIRDas Verzeichnis unter
${PREFIX}/bin,
${PREFIX}/share und
${PREFIX}/lib, in welchem
Lua installiert istLUA_INCDIRDas Verzeichnis, in dem
Lua- und
tolua-Header-Dateien
installiert sindLUA_LIBDIRDas Verzeichnis, in dem
Lua– und
tolua-Bibliotheken
installiert sindLUA_MODLIBDIRDas Verzeichnis, in dem
Lua Modul-Bibliotheken
(.so) installiert sindLUA_MODSHAREDIRDas Verzeichnis, in dem
Lua-Module
(.lua) installiert sindLUA_PKGNAMEPREFIXDer Paketnamen-Präfix, der von
Lua-Modulen verwendet
wirdLUA_CMDDas Verzeichnis, in dem der
Lua-Interpreter liegtLUAC_CMDDas Verzeichnis, in dem der
Lua-Compiler liegtTOLUA_CMDDas Verzeichnis, in dem das
tolua-Programm liegt
Einem Port mitteilen, in welchem Verzeichnis
Lua liegtDer folgende Ausschnitt zeigt, wie einem Port,
welcher ein configure-Skript verwendet, mitgeteilt werden
kann, wo die Lua-Header-Dateien
und Bibliotheken liegen.
USE_LUA= 4.0
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}"Verarbeitung in
bsd.port.pre.mkFalls die Variablen gleich nach dem Einbinden von
bsd.port.pre.mk benutzt werden sollen,
so muss die Variable LUA_PREMK definiert
werden.Falls LUA_PREMK definiert ist, so
werden Version, Abhängigkeiten, Komponenten und
vordefinierte Variablen nicht geändert, wenn die
Variablen des Lua-Ports
nach dem Einbinden von
bsd.port.pre.mk geändert
werden.Verwendung von
Lua-Variablen in
KommandosDer folgende Ausschnitt zeigt die Verwendung von
LUA_PREMK durch Ausführen des
Lua-Interpreters, um die
vollständige Version als Zeichenkette zu erhalten,
diese dann einer Variablen zuzuweisen und die Variable
schließlich einem Programm zu übergeben.USE_LUA= 5.0
LUA_PREMK= yes
.include <bsd.port.pre.mk>
.if exists(${LUA_CMD})
VER_STR!= ${LUA_CMD} -v
CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}"
.endifDie Lua-Variablen
können problemlos in Befehlen benutzt werden, falls
diese in Targets ohne gesetztes
LUA_PREMK verwendet werden.Xfce verwendenDie USE_XFCE-Variable wird für
die automatische Konfiguration der Abhängigkeiten
eingesetzt, welche die Xfce-Basisbibliotheken oder Anwendungen
wie x11-toolkits/libxfce4gui und
x11-wm/xfce4-panel
verwenden.Die folgenden Xfce-Bibliotheken und -Anwendungen werden
derzeit unterstützt:libexo: x11/libexolibgui: x11-toolkits/libxfce4guilibutil: x11/libxfce4utillibmcs: x11/libxfce4mcsmcsmanager: sysutils/xfce4-mcs-managerpanel: x11-wm/xfce4-panelthunar: x11-fm/thunarwm: x11-wm/xfce4-wmxfdev: dev/xfce4-dev-toolsDie folgenden zusätzlichen Parameter werden
unterstützt:configenv: Benutzen Sie dies, wenn Ihr Port eine
speziell angepasste
CONFIGURE_ENV-Variable benötigt,
um seine erforderlichen Bibliotheken zu finden.
-I${LOCALBASE}/include
-L${LOCALBASE}/lib wird CPPFLAGS
hinzugefügt und ergibt
CONFIGURE_ENV.Wenn also ein Port von sysutils/xfce4-mcs-manager
abhängt und die speziellen CPPFLAGS in seiner
configure-Umgebung verlangt, dann würde die Syntax wie
folgt aussehen:USE_XFCE= mcsmanager configenvStarten und Anhalten von Diensten (rc Skripten)rc.d-Skripten werden zum Starten
von Diensten während des Systemstarts verwendet und um
den Administratoren einen Standardweg zum Anhalten und Starten
von Diensten zu bieten. Ports halten sich an dieses
systemweite rc.d-Framework. Details zu
deren Benutzung können im rc.d Kapitel
des Handbuchs nachgelesen werden. Ausführliche
Beschreibungen der verfügbaren Befehle stehen in
&man.rc.8; und &man.rc.subr.8;. Desweiteren gibt es einen Artikel zu
praktischen Aspekten bezüglich
rc.d-Skripten.Ein oder mehrere rc-Skripten können installiert
werden mittels:USE_RC_SUBR= doormandSkripten müssen im Unterverzeichnis
files abgelegt und jeder Skript-Datei
muss ein .in-Suffix hinzugefügt
werden. Der einzige Unterschied zu einem
rc.d-Skript aus dem Basissystem ist, dass
die Zeile . /etc/rc.subr in
. %%RC_SUBR%% umbenannt werden muss,
da ältere Versionen von &os; die Datei
/etc/rc.subr nicht besitzen.
Standarderweiterungen wie SUB_LIST werden
ebenfalls unterstützt. Die Verwendung von
%%PREFIX%%,
%%LOCALBASE%% und
%%X11BASE%% wird dringend empfohlen.
Näheres zu SUB_LIST kann im zugehörigen Kapitel
nachgelesen werden.Für &os;-Versionen, die älter als 6.1-RELEASE
sind, ist die Integration mittels &man.rcorder.8;
möglich, indem USE_RCORDER anstatt
USE_RC_SUBR verwendet wird. Die Verwendung
dieser Methode wird aber nicht mehr empfohlen.Seit &os; 6.1-RELEASE sind lokale
rc.d-Skripten (inklusive der durch Ports
installierten) im allgemeinen &man.rcorder.8; des
Basissystems.Beispiel eines einfachen
rc.d-Skripts:#!/bin/sh
# PROVIDE: doormand
# REQUIRE: LOGIN
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# doormand_enable (bool): Set to NO by default.
# Set it to YES to enable doormand.
# doormand_config (path): Set to %%PREFIX%%/etc/doormand/doormand.cf
# by default.
#
. %%RC_SUBR%%
name="doormand"
rcvar=${name}_enable
command=%%PREFIX%%/sbin/${name}
pidfile=/var/run/${name}.pid
load_rc_config $name
: ${doormand_enable="NO"}
: ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"}
command_args="-p $pidfile -f $doormand_config"
run_rc_command "$1"Für die Wertzuweisung von Variablen sollte
"=" anstatt ":=" verwendet werden, da bei
Ersterem nur auf einen Standardwert gesetzt wird, wenn die
Variable vorher noch nicht gesetzt war, und bei Letzterem
dieser gesetzt wird, auch wenn der Wert vorher Null gewesen
ist. Ein Benutzer kann durchaus einen Ausdruck wie
doormand_flags="" in seiner
rc.conf.local-Datei stehen haben, und
eine Variablenzuweisung mittels ":=" würde in
diesem Fall die Benutzerdefinition überschreiben.Der Suffix des rc-Skriptes wird durch
RC_SUBR_SUFFIX für die weitere
Verwendung im Makefile des Ports
bereitgestellt. Aktuelle Versionen von &os; fügen keinen
Suffix den Skriptnamen hinzu im Gegensatz zu ältere
Versionen, die dies mit dem Suffix .sh
taten.Es sollten keine weiteren Skripten mit der
.sh-Endung hinzugefügt werden.
Irgendwann wird es ein Massenumbenennen aller Skripten im
Repository geben, die immer noch diese Endung haben.Anhalten und Deinstallieren von DienstenEs ist möglich, dass ein Dienst während der
Deinstallation automatisch angehalten wird. Es wird
empfohlen dieses Verhalten nur zu implementieren, wenn es
unbedingt erforderlich ist zuerst den Dienst anzuhalten und
dann die Dateien zu entfernen. Normalerweise sollte es dem
Administrator überlassen werden, ob ein Dienst durch
Deinstallieren angehalten werden soll. Dies betrifft auch
den Vorgang des Aktualisierens.Der Datei pkg-plist sollte eine
Zeile wie folgt zugefügt werden:@stopdaemon doormandDas Argument muss dabei mit dem Inhalt der
USE_RC_SUBR-Variablen
übereinstimmen.Fortgeschrittene
pkg-plist-MethodenÄnderungen an pkg-plist mit
Hilfe von make-VariablenEinige Ports, insbesondere die
p5--Ports, müssen, abhängig von
ihren Konfigurationsoptionen (oder im Falle der p5-Ports von
der perl-Version), die
pkg-plist verändern. Um dies zu
vereinfachen, werden für jeden Eintrag in
pkg-plist die Variablen
%%OSREL%%, %%PERL_VER%%
und %%PERL_VERSION%% durch die jeweiligen
Werte ersetzt. Der Wert von %%OSREL%% ist
die Revisionsnummer des Betriebssystems (z.B.
4.9). %%PERL_VERSION%%
gibt die vollständige Versionsnummer von
perl (z.B. 5.00502) und
%%PERL_VER%% die Versionsnummer ohne
Patchlevel (z.B. 5.005) an. Weitere, die
Dokumentationsdateien des Ports betreffende
%%VARS%%, werden
im entsprechenden
Abschnitt erläutert.Falls Sie weitere Ersetzungen von Variablen
durchführen müssen, können Sie in der Variable
PLIST_SUB eine Liste von
VAR=VALUE-Paaren
angeben, wobei in der pkg-plist%%VAR%% durch
VALUE ersetzt wird.Wenn Sie z.B. einen Port haben, der viele Dateien in ein
versionsspezifisches Unterverzeichnis installiert, dann
können Sie etwas wieOCTAVE_VERSION= 2.0.13
PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}in das Makefile schreiben und
%%OCTAVE_VERSION%% verwenden,
unabhängig davon, wo die Variable in
pkg-plist verwendet wird. In diesem Fall
müssen Sie bei einem Upgrade des Ports nicht dutzende
(oder manchmal sogar hunderte) Zeilen in
pkg-plist anpassen.Diese Ersetzung (ebenso wie das Hinzufügen weiterer
Manualpages) wird
zwischen den pre-install- und
do-install-Targets ausgeführt,
indem aus PLIST
gelesen und in
TMPPLIST geschrieben
wird (Standard:
WRKDIR/.PLIST.mktmp).
Falls Ihr Port also
PLIST während dem
Erstellen generiert, so sollte dies vor oder in
pre-install geschehen. Muss Ihr Port
die resultierende Datei verändern, so sollte dies in
post-install mit der Ausgabedatei
TMPPLIST
erfolgen.Eine weitere Möglichkeit, die Paketliste eines
Ports zu verändern, besteht darin die Variablen
PLIST_FILES und
PLIST_DIRS zu setzen. Der Wert jeder der
beiden Variablen stellt eine Liste von Pfadnamen dar, die
zusammen mit dem Inhalt von
PLIST in
TMPPLIST geschrieben
wird. Dabei unterliegen die Namen in
PLIST_FILES und
PLIST_DIRS der weiter oben beschriebenen
Substitution von
%%VAR%%. Die
Namen aus PLIST_FILES werden ansonsten
unverändert in die endgültige Paketliste
übernommen, während den Namen aus
PLIST_DIRS noch der Wert von
@dirrm vorangestellt wird. Damit die
Verwendung von PLIST_FILES und
PLIST_DIRS überhaupt möglich
ist, müssen diese gesetzt werden, bevor
TMPPLIST geschrieben
wird – z.B. in
pre-install oder vorher.Leere VerzeichnisseAufräumen leerer VerzeichnisseBitte sorgen Sie dafür, dass ihre Ports bei der
Deinstallation leere Verzeichnisse löschen. Dazu wird
für jedes Verzeichnis, das der Port erzeugt hat, eine
@dirrm-Zeile angegeben. Um ein
Verzeichnis zu löschen müssen Sie zuerst dessen
Unterverzeichnisse entfernen. :
lib/X11/oneko/pixmaps/cat.xpm
lib/X11/oneko/sounds/cat.au
:
@dirrm lib/X11/oneko/pixmaps
@dirrm lib/X11/oneko/sounds
@dirrm lib/X11/onekoEs kann allerdings auch vorkommen, dass
@dirrm Fehler ausgibt, da andere Ports
ein Verzeichnis ebenfalls nutzen. Deshalb können Sie
@dirrmtry verwenden, um nur Verzeichnisse
zu löschen, die wirklich leer sind, und damit
Warnhinweise vermeiden.@dirrmtry share/doc/gimpDadurch wird es weder eine Fehlermeldung geben noch
wird &man.pkg.delete.1; abnormal beendet werden - auch dann
nicht, wenn
${PREFIX}/share/doc/gimp
nicht leer ist, da andere Ports hier ebenfalls Dateien
installiert haben.Erstellen leerer VerzeichnisseUm leere Verzeichnisse während der Installation
eines Ports zu erstellen, bedarf es etwas Aufmerksamkeit.
Diese Verzeichnisse werden nicht erstellt, wenn das Paket
installiert wird, da Pakete nur die Dateien speichern und
&man.pkg.add.1; nur die Verzeichnisse erstellt, die
dafür benötigt werden. Um sicher zu gehen, dass
das leere Verzeichnis erstellt wird, wenn ein Paket
installiert wird, muss die folgende Zeile in
pkg-plist über der entsprechenden
@dirrm Zeile eingetragen werden:@exec mkdir -p %D/share/foo/templatesKonfigurationsdateienSollte Ihr Port Konfigurationsdateien in
PREFIX/etc
benötigen, so sollten Sie diese
nicht einfach installieren und in
pkg-plist auflisten. Dies würde
&man.pkg.delete.1; veranlassen, diese Dateien zu löschen,
selbst wenn wenn sie vom Benutzer editiert wurden.Stattdessen sollten Beispieldateien mit einem
entsprechenden Suffix (beispielsweise
filename.sample)
versehen werden. Ist die Konfigurationsdatei nicht vorhanden,
so sollte die Beispieldatei an deren Platz kopiert werden. Bei
der Deinstallation sollte die Konfigurationsdatei
gelöscht werden, aber nur, wenn sie nicht vom Benutzer
verändert wurde. Das alles muss sowohl im
Makefile des Ports als auch in der
pkg-plist (für die Installation aus
einem Paket) sichergestellt werden.Beispiel aus einem Makefile:post-install:
@if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \
${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \
fiBeispiel aus einer pkg-plist:@unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi
etc/orbit.conf.sample
@exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fiWahlweise können Sie auch eine Nachricht ausgegeben lassen,
in der Sie den Nutzer auffordern, die Datei an die richtige
Stelle zu kopieren und zu bearbeiten, bevor das Programm
ausgeführt werden kann.Dynamische oder statische PaketlisteEine statische Paketliste ist eine
Paketliste, die in der Ports-Sammlung, entweder in Form der
pkg-plist (mit oder ohne der Ersetzung
von Variablen) oder durch PLIST_FILES und
PLIST_DIRS im Makefile
eingebettet, verfügbar ist. Selbst wenn der Inhalt durch
ein Werkzeug oder ein Target im Makefile automatisch erzeugt
wird, bevor die Datei von einem Committer
in die Ports-Sammlung aufgenommen wird, so ist dies immer noch
eine statische Liste, da es möglich ist den Dateiinhalt
zu betrachten ohne ein Distfile Herunterladen oder Kompilieren
zu müssen.Eine dynamische Paketliste ist eine
Paketliste, die beim Kompilieren des Ports erstellt wird,
abhängig davon, welche Dateien und Verzeichnisse
installiert werden. Es ist nicht möglich diese Liste zu
betrachten, bevor der Quelltext heruntergeladen und kompiliert
oder nachdem ein make clean ausgeführt
wurde.Der Einsatz dynamischer Paketlisten ist zwar nicht
untersagt, aber Sie sollten, wann immer das möglich ist,
statische Paketlisten verwenden, da die Nutzer dann
&man.grep.1; auf alle verfügbaren Ports anwenden
können, um z.B. herauszufinden, von welchem eine
bestimmte Datei installiert wurde. Dynamische Paketlisten
sollten für komplexe Ports verwendet werden, bei denen
sich die Liste abhängig von den gewählten Funktionen
sehr stark ändern kann (wodurch die Pflege von statischen
Listen unmöglich wird), oder Ports, welche die Paketliste
abhängig von den Versionen verwendeter
Abhängigkeiten verändern (z.B. Ports, die Ihre
Dokumentation mit Javadoc
erzeugen).Maintainer, die dynamische Paketlisten bevorzugen,
werden dazu aufgefordert, neue Targets zu Ihren Ports
hinzuzufügen, welche die
pkg-plist-Datei erzeugen, sodass Benutzer
den Inhalt überprüfen können.Automatisiertes Erstellen von PaketlistenAls Erstes sollten Sie sich vergewissern, dass der Port
bis auf pkg-plist vollständig
ist.Als Nächstes erstellen Sie einen temporären
Verzeichnisbaum, in welchem Ihr Port installiert werden kann,
und installieren Sie alle Abhängigkeiten.&prompt.root; mkdir /var/tmp/$(make -V PORTNAME)
&prompt.root; mtree -U -f $(make -V MTREE_FILE) -d -e -p /var/tmp/$(make -V PORTNAME)
&prompt.root; make depends PREFIX=/var/tmp/$(make -V PORTNAME)Speichern Sie die Verzeichnisstruktur in einer neuen
Datei.&prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * -type d) | sort > OLD-DIRSErstellen Sie eine leere
pkg-plist-Datei:&prompt.root; :>pkg-plistWenn Ihr Port auf PREFIX achtet (was
er machen sollte), so kann der Port nun installiert und die
Paketliste erstellt werden.&prompt.root; make install PREFIX=/var/tmp/$(make -V PORTNAME)
&prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * \! -type d) | sort > pkg-plistSie müssen auch alle neu erstellten Verzeichnisse in
die Paketliste aufnehmen.&prompt.root; (cd /var/tmp/$(make -V PORTNAME) && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plistZu guter Letzt muss die Paketliste noch manuell
aufgeräumt werden - es funktioniert eben nicht
alles automatisch. Manualpages sollten im
Makefile des Ports unter
MANn
aufgeführt sein und nicht in der Paketliste.
Konfigurationsdateien des Benutzers sollten entfernt oder als
filename.sample
installiert werden. Die info/dir-Datei
sollte nicht aufgeführt sein und die zugehörigen
install-info-Zeilen sollten
hinzugefügt werden, wie im info files-Abschnitt
beschrieben. Alle Bibliotheken, die der Port installiert,
sollten aufgelistet werden, wie es im Shared Libraries-Abschnitt
festgelegt ist.Alternativ dazu können Sie das
plist-Skript in
/usr/ports/Tools/scripts/ verwenden, um
die Paketliste automatisch zu erstellen. Der erste Schritt ist
derselbe wie oben: Nehmen Sie die ersten drei Zeilen, also
mkdir, mtree und
make depends. Installieren und bauen Sie
dann den Port:&prompt.root; make install PREFIX=/var/tmp/$(make -V PORTNAME)Und lassen Sie plist die
pkg-plist-Datei erstellen:&prompt.root; /usr/ports/Tools/scripts/plist -Md -m $(make -V MTREE_FILE) /var/tmp/$(make -V PORTNAME) > pkg-plistDie Paketliste muss immer noch von Hand aufgeräumt
werden, wie es oben erklärt wurde.Die pkg-*
DateienEs gibt noch einige Tricks mit
pkg-*, die wir
noch nicht erwähnt haben, die aber oft sehr praktisch
sind.pkg-messageWenn Sie dem Anwender bei der Installation weitere
Informationen anzeigen wollen, so können Sie diese
Nachricht in pkg-message speichern.
Diese Vorgehensweise ist oft nützlich, um
zusätzliche Schritte anzuzeigen, die nach &man.pkg.add.1;
durchgeführt werden müssen. Dadurch können Sie
auch Lizenzinformationen darstellen.Wollen Sie nur ein paar Zeilen über die
Einstellungen zum Erstellen des Ports oder Warnungen ausgeben,
benutzen Sie ECHO_MSG.
pkg-message ist nur für Schritte
nach der Installation vorgesehen. Sie sollten den Unterschied
zwischen ECHO_MSG und
ECHO_CMD beachten: Ersteres wird benutzt,
um Informationen auf dem Bildschirm auszugeben, während
Letzteres für Kommando-Pipelining bestimmt ist.Ein gutes Beispiel für die Benutzung der beiden
Befehle ist in shells/bash2/Makefile zu
finden:update-etc-shells:
@${ECHO_MSG} "updating /etc/shells"
@${CP} /etc/shells /etc/shells.bak
@( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \
${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells
@${RM} /etc/shells.bakDie pkg-message wird nicht zur
pkg-plist hinzugefügt. Sie wird
auch nicht automatisch angezeigt, falls ein Anwender den
Port installiert. Sie müssen also die Ausgabe selbst im
post-install-Ziel des Make-Vorgangs
veranlassen.pkg-installSollte es nötig sein, dass Ihr Port bei der
Installation des Binärpakets mit &man.pkg.add.1; Befehle
ausführt, können Sie das Skript
pkg-install benutzen. Dieses Skript wird
automatisch dem Paket hinzugefügt und zweimal von
&man.pkg.add.1; ausgeführt: Zuerst als
${SH} pkg-install ${PKGNAME}
PRE-INSTALL und beim zweiten Mal als
${SH} pkg-install ${PKGNAME}
POST-INSTALL. $2 kann also
getestet werden, um festzustellen, in welchem Modus das Skript
ausgeführt wird. Die Umgebungsvariable
PKG_PREFIX wird auf das Verzeichnis gesetzt, in
welches das Paket installiert wird. Siehe &man.pkg.add.1;
für weiterführende Informationen.Das Skript wird nicht automatisch ausgeführt,
wenn Sie den Port mit make install
installieren. Wenn Sie es ausführen lassen wollen, dann
müssen Sie es im Makefile aufrufen:
PKG_PREFIX=${PREFIX} ${SH}
${PKGINSTALL} ${PKGNAME}
PRE-INSTALL.pkg-deinstallDieses Skript wird ausgeführt, wenn ein Paket
deinstalliert wird.Es wird zweimal von &man.pkg.delete.1; aufgerufen. Das
erste Mal als ${SH} pkg-deinstall
${PKGNAME} DEINSTALL und dann als
${SH} pkg-deinstall ${PKGNAME}
POST-DEINSTALL.pkg-reqMuss Ihr Port entscheiden, ob er installiert werden
soll oder nicht, können Sie ein
pkg-req-Bedingungsskript
verwenden. Dieses wird automatisch bei der Installation/
Deinstallation aufgerufen, um zu entscheiden, ob die
Installation/ Deinstallation fortgesetzt werden soll.Das Skript wird während der Installation von
&man.pkg.add.1; als pkg-req ${PKGNAME}
INSTALL aufgerufen. Bei der Deinstallation wird es
von &man.pkg.delete.1; als pkg-req ${PKGNAME}
DEINSTALL ausgeführt.Ändern der Namen der
pkg-*
DateienAlle Namen der
pkg-* Dateien
werden durch Variablen festgelegt. Sie können sie bei
Bedarf also im Makefile des Ports
ändern. Das ist besonders nützlich, wenn Sie die
gleichen pkg-*
Dateien in mehreren Ports nutzen oder in eine der oben genannten
Dateien schreiben wollen. Schreiben Sie niemals außerhalb
des Unterverzeichnisses WRKDIRpkg-*, eine Erklärung hierzu finden
Sie in Schreiben ausserhalb von
WRKDIR.Hier ist eine Liste von Variablennamen und ihren
Standardwerten (PKGDIR ist
standardmäßig
${MASTERDIR}).VariableStandardwertDESCR${PKGDIR}/pkg-descrPLIST${PKGDIR}/pkg-plistPKGINSTALL${PKGDIR}/pkg-installPKGDEINSTALL${PKGDIR}/pkg-deinstallPKGREQ${PKGDIR}/pkg-reqPKGMESSAGE${PKGDIR}/pkg-messageBitte benutzen Sie diese Variablen anstatt
PKG_ARGS zu ändern. Wenn Sie
PKG_ARGS modifizieren, werden diese Dateien
bei der Installation des Ports nicht korrekt in
/var/db/pkg installiert.Nutzung von SUB_FILES und
SUB_LISTDie Variablen SUB_FILES und
SUB_LIST sind nützlich, um dynamische
Werte in Port-Dateien zu verwenden, wie beispielsweise der
Installations-PREFIX in
pkg-message.Die Variable SUB_FILES enthält
eine Liste von Dateien, die automatisch verändert werden.
Jede Datei in
SUB_FILES muss ein entsprechendes Pendant
datei.in im Verzeichnis
FILESDIR haben. Die modifizierte Version
wird in WRKDIR angelegt. Dateien, die als
Werte von USE_RC_SUBR (oder veraltet in
USE_RCORDER) gespeichert werden, werden
automatisch zu SUB_FILES hinzugefügt.
Für die Dateien pkg-message,
pkg-install,
pkg-deinstall und
pkg-req werden die jeweiligen
Makefile-Variablen selbsttätig auf die geänderte
Version der Datei gesetzt.Die Variable SUB_LIST ist eine Liste
von VAR=WERT-Paaren. Jedes Paar
%%VAR%% in den Dateien von
SUB_FILES wird mit WERT
ersetzt. Einige gebräuchliche Paare werden automatisch
definiert: PREFIX,
LOCALBASE, X11BASE,
DATADIR, DOCSDIR,
EXAMPLESDIR. Jede Zeile, die mit
@comment beginnt, wird nach der
Variablen-Ersetzung aus der neu erstellten Datei
gelöscht.Im folgenden Beispiel wird %%ARCH%%
mit der Systemarchitektur in pkg-message
ersetzt:SUB_FILES= pkg-message
SUB_LIST= ARCH=${ARCH}Beachten Sie bitte, dass in diesem Beispiel die Datei
pkg-message.in im Verzeichnis
FILESDIR vorhanden sein muss.Hier ein Beispiel für eine gute
pkg-message.in:Now it is time to configure this package.
Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory
as .putsy.conf and edit it.Ihren Port testenmake describe ausführenEinige der &os;-Werkzeuge zur Pflege von Ports, wie zum
Beispiel &man.portupgrade.1;, verwenden eine Datenbank names
/usr/ports/INDEX, welche Eigenschaften,
wie z.B. Port-Abhängigkeiten, verfolgt.
INDEX wird vom Makefile der höchsten
Ebene, ports/Makefile, mittels
make index erstellt, welches in das
Unterverzeichnis jedes Ports wechselt und dort make
describe ausführt. Wenn also make
describe bei einem Port fehlschlägt, kann
INDEX nicht generiert werden und schnell
werden viele Leute darüber unzufrieden sein.Es ist wichtig diese Datei erzeugen zu können,
unabhängig davon, welche Optionen in
make.conf vorhanden sind. Bitte
vermeiden Sie es daher beispielsweise
.error-Anweisungen zu benutzen, wenn zum
Beispiel eine Abhängigkeit nicht erfüllt wird
(Lesen Sie dazu bitte ).Wenn make describe eine Zeichenkette
anstatt einer Fehlermeldung erzeugt, sind Sie wahrscheinlich
auf der sicheren Seite. Vergleichen Sie die erzeugte
Zeichenkette mit bsd.port.mk, um mehr
über deren Bedeutung zu erfahren.Beachten Sie bitte außerdem, dass die Benutzung
einer aktuellen Version von portlint (wie
im nächsten Abschnitt beschrieben) automatisch
make describe startet.PortlintBitte überprüfen Sie Ihre Arbeit stets mit
portlint,
bevor Sie diese einreichen oder committen.
portlint warnt Sie bei häufigen
Fehlern, sowohl funktionaler als auch stilistischer Natur.
Für einen neuen (oder repokopierten) Port ist
portlint -A die gründlichste Variante;
für einen bereits existierenden Port ist
portlint -C ausreichend.Da portlint heuristische Methoden zur
Fehlersuche benutzt, kann es vorkommen, dass Warnungen
für Fehler erzeugt werden, die keine sind. Gelegentlich
kann etwas, das als Problem angezeigt wird, aufgrund von
Einschränkungen im Port-System nicht anders gelöst
werden. Wenn es Zweifel gibt, fragen Sie am besten auf
&a.ports; nach.Port ToolsDas Programm ports-mgmt/porttools ist Teil der
Ports-Sammlung.port ist das Front-End-Skript, das
Ihnen dabei behilflich sein kann Ihre Arbeit als Tester zu
vereinfachen. Um einen neuen Port zu testen oder einen bereits
bestehenden Port zu aktualisieren, können Sie
port test verwenden, damit die Tests,
inklusive der portlint-Überprüfung,
durchgeführt werden. Dieser Befehl spürt ausserdem
alle nicht in pkg-plist enthaltenen
Dateien auf und gibt eine Liste dieser aus. Hier ein
Beispiel:&prompt.root; port test /usr/ports/net/csupPREFIX und
DESTDIRPREFIX bestimmt, an welche Stelle der
Port installiert werden soll. In der Regel ist
dies/usr/local oder
/opt. Benutzer können
PREFIX setzen, wie sie wollen. Ihr Port
muss sich an diese Variable halten.DESTDIR, wenn es vom Benutzer gesetzt
wird, bestimmt die alternative Umgebung (in der Regel eine
Jail oder ein installiertes System, welches an anderer Stelle
als / eingehängt ist).
Ein Port wird unter
DESTDIR/PREFIX
installiert und registriert sich in der Paket-Datenbank unter
DESTDIR/var/db/pkg.
Da DESTDIR mittels eines
&man.chroot.8;-Aufrufs vom Ports-System automatisch gesetzt
wird, brauchen Sie keine Änderungen oder besondere Pflege
für DESTDIR-konforme Ports.Der Wert von PREFIX wird auf
LOCALBASE gesetzt (Standard ist
/usr/local).
Falls USE_X_PREFIX oder
USE_IMAKE gesetzt ist,
wird PREFIXX11BASE
entsprechen (aus
Kompatiblitätsgründen standardmäßig
LOCALBASE, das in Zukunft aber
komplett verschwinden wird).
Falls USE_LINUX_PREFIX gesetzt ist, wird
PREFIXLINUXBASE
annehmen (Standard ist
/compat/linux).Die Vermeidung der hart kodierten Angaben von
/usr/local oder
/usr/X11R6 im Quelltext wird den Port
viel flexibler machen und erleichtert es die Anforderungen
anderer Einsatzorte zu erfüllen. Für X-Ports, die
imake benutzen, geschieht dies automatisch;
andernfalls kann dies erreicht werden, indem alle Angaben von
/usr/local (oder
/usr/X11R6 für X-Ports, die nicht
imake benutzen) in den verschiedenen
Makefiles im Port ersetzt werden, um
${PREFIX} zu lesen, da diese Variable
automatisch an jede Stufe des Build- und Install-Prozesses
übergeben wird.Vergewissern Sie sich bitte, dass Ihre Anwendung nichts
unter /usr/local an Stelle von
PREFIX installiert. Um dies festzustellen,
können Sie folgendes machen:&prompt.root; make clean; make package PREFIX=/var/tmp/$(make -V PORTNAME)Wenn etwas außerhalb von PREFIX
installiert wird, so gibt der Prozess der Paketerstellung eine
Meldung aus, dass es die Dateien nicht finden kann.Dies prüft nicht das Vorhandensein eines internen
Verweises oder die richtige Verwendung von
LOCALBASE für Verweise auf Dateien
anderer Ports. Das Testen der Installation in
/var/tmp/$(make -V PORTNAME) würde
dies erledigen.Bitte verzichten Sie auf das Setzen von
USE_X_PREFIX, es sei denn, Ihr Port
benötigt dies wirklich (das heißt, er muss auf
Dateien in X11BASE verweisen).Die Variable PREFIX kann in Ihrem
Makefile oder der Umgebung des Benutzers
neu gesetzt werden. Allerdings wird für einzelne Ports
dringend davon abgeraten diese Variable in den
Makefiles direkt zu setzen.Verweisen Sie bitte außerdem auf Programme/Dateien
von anderen Ports durch die oben erwähnten Variablen und
nicht mit den eindeutigen Pfadnamen. Wenn Ihr Port zum
Beispiel vom Makro PAGER erwartet, dass es
den vollständigen Pfadnamen von less
enthält, benutzen Sie folgendes Compiler-Flag:
-DPAGER=\"${LOCALBASE}/bin/less\"
anstatt -DPAGER=\"/usr/local/bin/less\".
Somit ist die Wahrscheinlichkeit höher, dass es auch
funktioniert, wenn der Administrator den ganzen
/usr/local-Baum an eine andere Stelle
verschoben hat.Die TinderboxWenn Sie ein begeisterter Ports-Entwickler sind
möchten Sie vielleicht einen Blick auf die
Tinderbox werfen. Es ist ein
leistungsstarkes System zur Erstellung und zum Testen von
Ports, welches auf Skripten basiert, die auf Pointyhat verwendet werden. Sie
können Tinderbox installieren,
indem Sie den Port ports-mgmt/tinderbox benutzen.
Bitte lesen Sie die mitgelieferte Dokumentation
gründlich, da die Konfiguration nicht einfach ist.Um Näheres darüber zu erfahren, besuchen Sie
bitte die Tinderbox
Homepage.Einen Port aktualisierenWenn Sie feststellen, dass ein Port verglichen mit der
neuesten Version des Originalautors nicht mehr auf dem aktuellen
Stand ist, sollten Sie als Erstes sicherstellen, dass Sie die
aktuellste Version des Ports haben. Diese finden Sie im
Verzeichnis ports/ports-current der FreeBSD
FTP-Spiegelseiten. Wenn Sie allerdings mit mehr als ein paar
Ports arbeiten, werden Sie es wahrscheinlich einfacher finden
CVSup zu benutzen, um Ihre gesamte
Ports-Sammlung aktuell zu halten, wie es im Handbuch
beschrieben wird. Das hat zusätzlich den Vorteil, dass Sie
so auch alle Abhängigkeiten des Ports aktuell
halten.Der nächste Schritt besteht darin festzustellen, ob
bereits eine Aktualisierung des Ports darauf wartet committet zu
werden. Um das sicherzustellen haben Sie folgende
Möglichkeiten. Es gibt eine durchsuchbare Schnittstelle zur
FreeBSD
Problembericht Datenbank (PR - Problem Report) (auch
bekannt als GNATS). Wählen Sie dazu
Ports im Drop-Down-Menü und geben Sie
den Namen des Ports ein.Allerdings wird manchmal vergessen den Namen des Ports
eindeutig im Feld für die Zusammenfassung anzugeben. In
diesem Fall können Sie das FreeBSD
Ports Monitoring System (auch bekannt als
portsmon) nutzen. Dieses versucht PRs von
Ports nach Portname zu sortieren. Um PRs nach einem bestimmten
Port zu durchsuchen können Sie die Übersicht
eines Ports verwenden.Wenn es keine wartenden PRs gibt, ist der nächste
Schritt eine E-Mail an den Maintainer des Ports zu schicken, wie
von make maintainer gezeigt wird. Diese
Person arbeitet vielleicht schon an einer Aktualisierung, oder
hat einen guten Grund den Port im Moment nicht zu aktualisieren
(z.B. wegen Stabilitätsproblemen der neuen Version). Sie
wollen sicher nicht die Arbeit des Maintainers doppelt machen.
Beachten Sie bitte, dass für Ports ohne Maintainer
ports@FreeBSD.org eingetragen ist. Das ist
nur die allgemeine &a.ports;-Mailingliste, deshalb wird es in
diesem Fall wahrscheinlich nicht helfen eine E-Mail dorthin zu
schicken.Wenn Sie der Maintainer bittet die Aktualisierung zu
erledigen, oder falls es keinen Maintainer gibt, haben Sie
Gelegenheit FreeBSD zu helfen, indem Sie die Aktualisierung
selbst bereitstellen. Bitte führen Sie die Änderungen
durch und speichern Sie die Ausgabe des rekursiven
diff des neuen und alten Portverzeichnisses
(wenn Ihr verändertes Portverzeichnis z.B.
superedit und das Original
superedit.bak heißt, dann speichern
Sie bitte die Ergebnisse von diff -ruN superedit.bak
superedit). Sowohl vereinheitlichendes als auch
kontextabhängiges diff (Auflistung der Unterschiede zweier
Dateien) sind akzeptabel, aber im Allgemeinen bevorzugen
Port-Committer vereinheitlichende diffs.
Bitte beachten Sie die Verwendung der
-N-Option. Dies ist der gebräuchliche
Weg diff dazu zu bewegen korrekt damit
umzugehen, neue Dateien anzulegen und alte zu löschen.
Bevor Sie das diff einsenden überprüfen Sie bitte die
Ausgabe, um sicherzugehen, dass die Änderungen sinnvoll
sind. Um gängige Operationen mit Korrekturdateien zu
vereinfachen, können Sie
/usr/ports/Tools/scripts/patchtool.py
benutzen. Aber lesen Sie bitte vorher
/usr/ports/Tools/scripts/README.patchtool.Falls der Port keinen Maintainer hat und Sie ihn selbst
aktiv benutzen, ziehen Sie bitte in Erwägung sich als
Maintainer zu melden. &os; hat mehr als 2000 Ports ohne
Maintainer und in diesem Bereich werden immer zusätzliche
Freiwillige benötigt (Für eine ausführliche
Beschreibung der Verantwortlichkeiten eines Maintainers lesen
Sie bitte im
Developer's Handbook nach).Der beste Weg uns das diff zu schicken ist mittels
&man.send-pr.1; (Kategorie Ports). Wenn Sie der Maintainer des
Ports sind, fügen Sie bitte [maintainer
update] an den Anfang Ihrer Zusammenfassung und setzen
Sie die Klasse des PR auf
maintainer-update. Ansonsten sollte die
Klasse des PR change-request
sein. Bitte erwähnen Sie alle hinzugefügten oder
gelöschten Dateien in der Nachricht, da diese beim Commit
ausdrücklich an &man.cvs.1; übergeben werden
müssen. Wenn das diff größer ist als 20 Kilobyte
komprimieren und uuencoden Sie es bitte. Ansonsten können
Sie es in den PR einfügen wie es ist.Bevor Sie den PR mit &man.send-pr.1; abschicken, sollten
Sie den Abschnitt Den
Problembericht schreiben im Artikel über
Problemberichte lesen. Dieser enthält sehr viel mehr
Informationen darüber, wie man nützliche
Problemberichte verfasst.Wenn Sie Ihre Aktualisierung aufgrund von
Sicherheitsbedenken oder eines schwerwiegenden Fehlers
bereitstellen wollen, informieren Sie bitte das &a.portmgr;,
um einen sofortigen Rebuild und eine Neuverteilung des Pakets
Ihres Ports durchzuführen. Sonst werden ahnungslose
Nutzer von &man.pkg.add.1; über mehrere Wochen die alte
Version durch pkg_add -r
installieren.Noch einmal: Bitte verwenden Sie &man.diff.1; und nicht
&man.shar.1;, um Aktualisierungen existierender Ports zu
senden.Nun, da Sie all das geschafft haben, werden Sie in nachlesen können, wie Sie den Port
aktuell halten.Sicherheit der PortsWarum Sicherheit so wichtig istEs finden sich immer wieder Fehler in Software. Die
gefährlichsten davon sind wohl jene, die
Sicherheitslücken öffnen. Technisch gesehen
müssen diese Lücken geschlossen werden, indem die
Fehler, die Sie verursacht haben, beseitigt werden. Aber die
Vorgehensweisen, wie mit bloßen Fehlern und
Sicherheitslücken umgegangen wird, sind sehr
unterschiedlich.Ein typischer kleiner Fehler betrifft nur Nutzer, die
eine bestimmte Kombination von Optionen aktiviert haben, die
den Fehler auslöst. Der Entwickler wird letztendlich
einen Patch herausgeben, gefolgt von einer neuen Version des
Programms, die den Fehler nicht mehr
enthält – jedoch wird die Mehrheit der
Nutzer nicht sofort aktualisieren, da sie von diesem Fehler
nicht betroffen sind. Ein kritischer Fehler, der zu
Datenverlust führen kann, stellt ein schwerwiegendes
Problem dar. Dennoch sind sich umsichtige Nutzer bewusst, dass
Datenverlust verschiedene Ursachen – neben
Softwarefehlern – haben kann, und machen
deshalb Sicherungskopien wichtiger Daten. Zumal ein
kritischer Fehler sehr schnell entdeckt wird.Bei einer Sicherheitslücke ist dies ganz anders.
Erstens wird sie vielleicht jahrelang nicht entdeckt, da dies
oftmals keine Fehlfunktion im Programm verursacht. Zweitens
kann eine böswillige Person unerlaubten Zugriff auf ein
unsicheres System erlangen, um empfindliche Daten zu
verändern oder zu zerstören; im schlimmsten Fall
findet der Nutzer nicht einmal die Ursache des Schadens.
Drittens hilft der Zugriff auf ein unsicheres System dem
Angreifer oft in ein anderes System einzudringen, welches
ansonsten nicht gefährdet wäre. Deshalb reicht es
nicht aus eine Sicherheitslücke nur zu schließen:
Die Zielgruppe sollte möglichst genau und umfassend
darüber informiert werden, damit sie die Gefahr
einschätzen und passende Maßnahmen ergreifen
können.Sicherheitslücken schliessenBei Ports und Paketen kann eine Sicherheitslücke im
ursprünglichen Programm oder in den Port-Dateien
verursacht werden. Im ersten Fall wird der ursprüngliche
Entwickler den Fehler wahrscheinlich umgehend korrigieren oder
eine neue Version herausgeben und Sie müssen den Port nur
aktualisieren und die Korrekturen des Autors beachten. Falls
sich die Korrektur aus irgendeinem Grund verzögert,
sollten Sie den Port als
FORBIDDEN markieren oder selbst den
Fehler für den Port korrigieren. Falls die
Sicherheitslücke im Port verursacht wird, sollten Sie ihn
sobald wie möglich berichtigen. In jedem Fall sollte
die Standardvorgehensweise zum
Einreichen von Änderungen beachtet
werden – es sei denn, Sie haben das Recht
diese direkt in den Ports-Baum zu committen.Ports-Committer zu sein ist nicht genug, um
Änderungen an einem beliebigen Port zu committen. Bitte
denken Sie daran, dass Ports üblicherweise Maintainer
haben, die Sie respektieren sollten.Bitte stellen Sie sicher, dass die Revision des Ports
erhöht wird, sobald die Sicherheitslücke geschlossen
wurde. Dadurch sehen die Nutzer, die installierte Pakete
regelmäßig aktualisieren, dass es an der Zeit ist
eine Aktualisierung durchzuführen. Außerdem wird
ein neues Paket gebaut, über FTP– und
WWW-Spiegel verteilt und die unsichere Version damit
verdrängt. PORTREVISION sollte
erhöht werden – es sei denn,
PORTREVISION hat sich im Laufe der
Korrektur des Fehlers geändert. Das heißt, Sie
sollten PORTREVISION erhöhen, wenn Sie
eine Korrektur hinzugefügt haben. Sie sollten diese aber
nicht erhöhen, wenn Sie den Port auf die neueste Version
des Programms gebracht haben und PORTREVISION
somit schon verändert wurde. Bitte beachten
Sie den betreffenden
Abschnitt für weitere Informationen.Die Community informiert haltenDie VuXML-DatenbankEin sehr wichtiger und dringender Schritt, den man
unternehmen muss, sobald eine Sicherheitslücke entdeckt
wurde, ist die Gemeinschaft der Anwender des Ports über
die Gefahr zu informieren. Diese Benachrichtigung hat zwei
Gründe. Erstens wird es sinnvoll sein, wenn die Gefahr
wirklich so groß ist, sofort Abhilfe zu schaffen,
indem man z.B. den betreffenden Netzwerkdienst beendet oder
den Port komplett deinstalliert, bis die Lücke
geschlossen wurde. Und Zweitens pflegen viele Nutzer
installierte Pakete nur gelegentlich zu aktualisieren. Sie
werden aus der Mitteilung erfahren, dass Sie das Paket,
sobald eine Korrektur verfügbar ist, sofort
aktualisieren müssen.Angesichts der riesigen Zahl an Ports kann nicht
für jeden Vorfall ein Sicherheitshinweis erstellt
werden, ohne durch die Flut an Nachrichten die
Aufmerksamkeit der Empfänger zu verlieren, im Laufe der
Zeit kommt es so zu ernsten Problemen. Deshalb werden
Sicherheitslücken von Ports in der FreeBSD
VuXML-Datenbank aufgezeichnet. Das Team der
Sicherheitsverantwortlichen beobachtet diese wegen
Angelegenheiten, die Ihr Eingreifen erfordern.Wenn Sie Committerrechte haben, können Sie die
VuXML-Datenbank selbst aktualisieren. Auf diese Weise helfen
Sie den Sicherheitsverantwortlichen und liefern die
kritischen Informationen frühzeitig an die Community.
Aber auch wenn Sie kein Committer sind und glauben, Sie
haben eine außergewöhnlich schwerwiegende
Lücke gefunden – egal
welche – zögern Sie bitte nicht die
Sicherheitsverantwortlichen zu kontaktieren, wie es in den
FreeBSD
Sicherheitsinformationen beschrieben wird.In Ordnung, Sie haben sich also für den
schwierigen Weg entschieden. Wie vielleicht aus dem Titel
hervorgeht, ist die VuXMl-Datenbank hauptsächlich ein
XML-Dokument. Die Quelldatei vuln.xml
können Sie im Port security/vuxml finden. Deshalb
wird der komplette Pfadname PORTSDIR/security/vuxml/vuln.xml
lauten. Jedes Mal, wenn Sie eine Sicherheitslücke in
einem Port entdecken, fügen Sie bitte einen Eintrag
dafür in diese Datei ein. Solange Sie nicht mit VuXML
vertraut sind, ist es das Beste, was Sie machen können,
einen vorhandenen Eintrag, der zu Ihrem Fall passt, zu
kopieren und als Vorlage zu verwenden.Eine kurze Einführung in VuXMLDas komplette XML ist komplex und würde den
Rahmen dieses Buches sprengen. Allerdings benötigen Sie
für einen grundlegenden Einblick in die Struktur eines
VuXML-Eintrags nur eine Vorstellung der Tags. XML-Tags
bestehen aus Namen, die in spitzen Klammern eingeschlossen
sind. Zu jedem öffnenden <Tag> muss ein passendes
</Tag> existieren. Tags können geschachtelt
werden. Wenn sie geschachtelt werden müssen die inneren
Tags vor den Äußeren geschlossen werden. Es gibt
eine Hierarchie von Tags – das heißt
komplexere Regeln zur Schachtelung. Klingt so ähnlich
wie HTML, oder? Der größte Unterschied ist: XML
ist erweiterbar
(eXtensible) – das
heißt es basiert darauf maßgeschneiderte Tags zu
definieren. Aufgrund seiner wesentlichen Struktur bringt
XML ansonsten formlose Daten in eine bestimmte Form. VuXML
ist speziell darauf zugeschnitten Beschreibungen von
Sicherheitslücken zu verwalten.Lassen Sie uns nun einen realistischen VuXML-Eintrag
betrachten:<vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9">
<topic>Several vulnerabilities found in Foo</topic>
<affects>
<package>
<name>foo</name>
<name>foo-devel</name>
<name>ja-foo</name>
<range><ge>1.6</ge><lt>1.9</lt></range>
<range><ge>2.*</ge><lt>2.4_1</lt></range>
<range><eq>3.0b1</eq></range>
</package>
<package>
<name>openfoo</name>
<range><lt>1.10_7</lt></range>
<range><ge>1.2,1</ge><lt>1.3_1,1</lt></range>
</package>
</affects>
<description>
<body xmlns="http://www.w3.org/1999/xhtml">
<p>J. Random Hacker reports:</p>
<blockquote
cite="http://j.r.hacker.com/advisories/1">
<p>Several issues in the Foo software may be exploited
via carefully crafted QUUX requests. These requests will
permit the injection of Bar code, mumble theft, and the
readability of the Foo administrator account.</p>
</blockquote>
</body>
</description>
<references>
<freebsdsa>SA-10:75.foo</freebsdsa>
<freebsdpr>ports/987654</freebsdpr>
<cvename>CAN-2010-0201</cvename>
<cvename>CAN-2010-0466</cvename>
<bid>96298</bid>
<certsa>CA-2010-99</certsa>
<certvu>740169</certvu>
<uscertsa>SA10-99A</uscertsa>
<uscertta>SA10-99A</uscertta>
<mlist msgid="201075606@hacker.com">http://marc.theaimsgroup.com/?l=bugtraq&m=203886607825605</mlist>
<url>http://j.r.hacker.com/advisories/1</url>
</references>
<dates>
<discovery>2010-05-25</discovery>
<entry>2010-07-13</entry>
<modified>2010-09-17</entry>
</dates>
</vuln>Die Namen der Tags sollten selbsterklärend sein
– also werfen wir einen genaueren Blick auf
die Felder, die Sie selbst ausfüllen
müssen:Dies ist die höchste Tag-Ebene eines
VuXML-Eintrags. Es ist ein vorgeschriebenes Attribut
vid, welches eine allgemein
einzigartige Kennung (universally unique identifier,
UUID) in Anführungszeichen für diesen
Eintrag festlegt. Sie sollten eine UUID für
jeden neuen VuXML-Eintrag erzeugen (und vergessen Sie
nicht die UUID der Vorlage zu ersetzen, es sei denn,
Sie schreiben den Eintrag von Grund auf selbst). Sie
können &man.uuidgen.1; verwenden, um eine VuXML
UUID zu erzeugen. Wahlweise können Sie, wenn Sie
FreeBSD 4.x verwenden, den Port devel/p5-Data-UUID
verwenden und folgenden Befehl aufrufen:perl -MData::UUID -le 'print lc new Data::UUID->create_str'Dies ist eine einzeilige Beschreibung des
gefundenen Fehlers.Hier werden die Namen betroffener Pakete
aufgeführt. Es können mehrere Namen
angegeben werden, da mehrere Pakete von einem einzigen
Master-Port oder Software-Produkt abhängen
können. Das schließt Stable– und
Developement-Zweige, lokalisierte Versionen und
Slave-Ports ein, die verschiedene
Auswahlmöglichkeiten wichtiger
Kompilierungszeit-Optionen bieten.Es liegt in Ihrer Verantwortung all diese
betroffenen Pakete zu finden, wenn Sie den
VuXML-Eintrag schreiben.Behalten Sie im
Hinterkopf, dass make search
name=foo Ihr Freund ist. Die wichtigsten
Punkte, auf die Sie achten sollten, sind die
folgenden:die foo-devel
Variante eines foo
Ports;andere Varianten mit einem Suffix wie
-a4 (für
Druck-betreffende Pakete),
-without-gui (für Pakete
mit deaktivierter X-Unterstützung) oder
ähnlichejp-,
ru-, zh-
und andere, eventuell lokalisierte, Varianten in
den entsprechenden Länderkategorien der
Ports-SammlungBetroffene Versionen der Pakete werden hier als
ein Bereich oder mehrere durch eine Kombination aus
<lt>, <le>
, <eq>,
<ge>, und
<gt>-Elementen ausgegeben.
Die angegebenen Bereiche sollten sich nicht
überschneiden.In einer Bereichsangabe steht
* (Asterisk) für die kleinste
Versionsnummer. Insbesondere ist
2.* kleiner als
2.a. Deshalb kann ein Stern benutzt
werden, um auf alle möglichen Alpha
-, Beta– und
RC -Versionen zuzutreffen. Zum
Beispiel passt
<ge>2.*</ge><lt>3.*
</lt> auf alle Versionen der Form
2.x, während
<ge>
2.0</ge><lt>3.0</lt> das
nicht erfüllt, da es nicht auf 2.r3
passt, auf 3.b aber
schon.Das obige Beispiel legt fest, dass Versionen von
1.6 bis 1.9
betroffen sind – außerdem
Versionen 2.x vor
2.4_1 und Version
3.0b1.Mehrere zusammenhängende Gruppen von
Paketen (im wesentlichen Ports) können im
Abschnitt <affected>
aufgeführt werden. Das kann man benutzen, wenn
sich Programme (sagen wir FooBar, FreeBar und OpenBar)
denselben Quelltext als Grundlage haben und sich noch
dessen Fehler und Sicherheitslücken teilen.
Beachten Sie den Unterschied zum Anführen
mehrerer Namen innerhalb eines <package>
Abschnittes.Die Versionsbereiche sollten, wenn möglich,
sowohl PORTEPOCH als auch
PORTREVISION erlauben. Bitte denken Sie
daran, dass gemäß der Vergleichsregeln eine
Version mit einer PORTEPOCH, die
nicht Null ist, größer ist als jede Version
ohne PORTEPOCH. Das heißt,
3.0,1 ist größer als
3.1 oder sogar
8.9.Das ist die Zusammenfassung des Problems. In
diesem Feld wird XHTML verwendet. Zumindest
umschließende <p> und
</p> sollten auftauchen.
Komplexere Tags sind zwar möglich, aber sollten
nur um der Genauigkeit und Klarheit willen verwendet
werden: Bitte verwenden Sie hier kein
Eye-Candy.Dieser Abschnitt enthält Verweise auf
relevante Dokumente. Es wird empfohlen so viele
Referenzen wie nötig aufzuführen.Das ist ein FreeBSD
Sicherheitshinweis.Das ist ein
FreeBSD Problembericht.Das ist eine Mitre CVE
Kennung.Das ist eine SecurityFocus
Fehler-Kennung.Das ist ein Sicherheitshinweis von US-CERT.Das ist eine Mitteilung über eine
Schwachstelle von US-CERT.Das ist ein Cyber-Sicherheitsalarm von US-CERT.Das ist ein technischer Cyber-Sicherheitsalarm
von US-CERT.Das ist eine URL zu einem archivierten Posting
auf einer Mailingliste. Das Attribut
msgid ist optional und gibt die
Nachrichtenkennung des Postings an.Das ist eine gewöhnliche URL. Sie sollte
nur verwendet werden, wenn keine der anderen
Referenzkategorien verfügbar ist.Das ist das Datum, an dem die
Sicherheitslücke bekannt wurde
(JJJJ-MM-TT).Das ist das Datum, an dem der Eintrag
hinzugefügt wurde
(JJJJ-MM-TT).Das ist das Datum, an dem zuletzt irgendeine
Information des Eintrags verändert wurde
(JJJJ-MM-TT). Neue
Einträge dürfen dieses Feld nicht enthalten.
Es sollte beim Editieren eines existierenden Eintrags
eingefügt werden.Ihre Änderungen an der VuXML-Datenbank
testenNehmen wir an, Sie haben gerade einen Eintrag
für eine Sicherheitslücke in dem Paket
clamav geschrieben oder
ausgefüllt, die in der Version
0.65_7 korrigiert wurde.Als Voraussetzung sollten Sie eine neue Version der
Ports ports-mgmt/portaudit und
ports-mgmt/portaudit-db
installieren.Zuerst überprüfen Sie bitte, ob bereits
ein Eintrag für diese Schwachstelle existiert. Wenn
es einen solchen Eintrag gibt, sollte er auf die vorige
Version 0.65_6 zutreffen:&prompt.user; packaudit
&prompt.user; portaudit clamav-0.65_6Um packaudit auszuführen,
müssen Sie die Berechtigung haben
DATABASEDIR zu
schreiben – üblicherweise ist das
/var/db/portaudit.Wenn keine vorhandenen Einträge gefunden werden
haben Sie grünes Licht einen neuen Eintrag für
diese Sicherheitslücke anzulegen. Sie können nun
eine neue UUID erzeugen (wir nehmen an, diese lautet
74a9541d-5d6c-11d8-80e3-0020ed76ef5a)
und einen neuen Eintrag in der VuXML-Datenbank anlegen.
Bitte überprüfen Sie danach die Syntax mit
folgendem Befehl:&prompt.user; cd ${PORTSDIR}/security/vuxml && make validateSie werden zumindest eines der folgenden Pakete
benötigen: textproc/libxml2, textproc/jade.Jetzt bauen Sie bitte die
portaudit-Datenbank aus der VuXML-Datei
neu:&prompt.user; packauditUm sicherzustellen, dass der Abschnitt
<affected> Ihres Eintrags die
richtigen Pakete betrifft, verwenden Sie bitte den
folgenden Befehl:&prompt.user; portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5aBitte lesen Sie in &man.portaudit.1; nach, um ein
besseres Verständnis der Befehlssyntax zu
entwickeln.Bitte stellen Sie sicher, dass Ihr Eintrag keine
falschen Treffer in der Ausgabe erzeugt.Jetzt überprüfen Sie bitte, dass Ihr
Eintrag die richtigen Versionen des Pakets angibt:&prompt.user; portaudit clamav-0.65_6 clamav-0.65_7
Affected package: clamav-0.65_6 (matched by clamav<0.65_7)
Type of problem: clamav remote denial-of-service.
Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html>
1 problem(s) found.Offensichtlich sollte die erste Version ausgegeben
werden – die zweite jedoch nicht.Abschließend überprüfen Sie bitte,
ob die Webseite, die aus der VuXML-Datenbank erzeugt wird,
wie erwartet aussieht:&prompt.user; mkdir -p ~/public_html/portaudit
&prompt.user; packaudit
&prompt.user; lynx ~/public_html/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.htmlWas man machen respektive vermeiden sollteEinführungHier ist eine Liste von gebräuchlichen Dos and
Don'ts (Dinge, die man machen oder vermeiden sollte), welchen
Sie während des Portierungsprozesses begegnen werden.
Sie sollten Ihren Port anhand dieser Liste
überprüfen. Sie können auch Ports in der PR
Datenbank, welche andere Menschen eingereicht haben,
kontrollieren. Senden Sie bitte Kommentare zu Ports, die Sie
verifizieren wie unter Bug
Reports and General Commentary beschrieben. Der
Abgleich von Ports aus der PR-Datenbank hilft uns diese
schneller zu committen, und zeigt auch, dass Sie wissen, worum
es geht.WRKDIRSchreiben Sie in keine Dateien außerhalb von
WRKDIR. WRKDIR ist der
einzige Ort, welcher während des Erstellen des Ports
garantiert beschreibbar ist (siehe Ports
Installieren von CDROM für ein Beispiel, um Ports
in einem schreibgeschützen Zweig zu erstellen). Wenn Sie
eine der pkg-*
Dateien modifizieren müssen, sollten Sie eine Variable erneut
definieren, anstatt die Datei zu
überschreiben.WRKDIRPREFIXVergewissern Sie sich, dass Ihr Port
WRKDIRPREFIX beachtet. Die meisten Ports
sollten sich darüber keine Sorgen machen. Beachten Sie
bitte, falls auf WRKDIR eines anderen Ports
verwiesen wird, dass die korrekte Position
WRKDIRPREFIXPORTSDIR/subdir/name/work,
und nicht etwa
PORTSDIR/subdir/name/work,
.CURDIR/../../subdir/name/work
oder ähnliches ist.Falls Sie WRKDIR selbst definieren,
sollten Sie sicherstellen, dass Sie
${WRKDIRPREFIX}${.CURDIR} am
Anfang anfügen.Unterschiedliche Betriebssysteme und
BetriebssystemversionenSie können auf Quelltext treffen, welcher
Modifizierungen oder bedingtes Kompilieren, abhängig
davon, unter welcher Unix-Version er läuft,
benötigt. Falls Sie Änderungen an solch einem
Quelltext vornehmen müssen, stellen Sie bitte sicher,
dass Sie Ihre Änderungen so allgemein wie möglich
halten, damit wir den Quelltext auf ältere
FreeBSD-Systeme portieren und zur Quer-Portierung auf andere
BSD-Systeme, wie etwa 4.4BSD von CSRG, BSD/386, 386BSD, NetBSD
und OpenBSD verwenden können.Der bevorzugte Weg, um 4.3BSD/Reno (1990) und neuere
Versionen des BSD-Quelltextes zu unterscheiden, ist das
BSD-Makro zu nutzen, welches in sys/param.h
definiert ist. Hoffentlich ist diese Datei schon
enthalten – falls nicht, so fügen Sie
folgenden Quelltext:#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endifan der richtigen Stelle in der .c
Datei hinzu. Wir glauben, dass jedes System, welches diese
beiden Symbole definiert, die Datei
sys/param.h besitzt. Wenn Sie auf
Systeme stoßen, wo dies nicht so ist, würden wir
gerne davon erfahren. Bitte senden Sie eine E-Mail an
&a.ports;.Eine andere Möglichkeit zur Unterscheidung ist der
GNU Autoconf-Stil:#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endifVergessen Sie nicht
-DHAVE_SYS_PARAM_H zu den
CFLAGS im Makefile
hinzuzufügen, falls Sie diese Methode benutzen
sollten.Sobald Sie sys/param.h
hinzugefügt haben, können Sie mit Hilfe von#if (defined(BSD) && (BSD >= 199103))unterscheiden, ob der Quelltext auf einer 4.3 Net2
Code-Basis oder neuer (z.B. FreeBSD 1.x, 4.3/Reno, NetBSD 0.9,
386BSD, BSD/386 1.1 und niedriger) kompiliert werden
wird.Benutzen Sie:#if (defined(BSD) && (BSD >= 199306))um zu differenzieren, ob der Quelltext auf der Basis von
4.4 Code oder neuer (z.B. FreeBSD 2.x, 4.4, NetBSD 1.0,
BSD/386 2.0 oder höher) kompiliert werden wird.Der Wert des BSD-Makros ist
199506 für die 4.4BSD-Lite2 Codebasis.
Beachten Sie bitte, dass dies hier nur der Information wegen
angegeben ist. Das Makro sollte nicht dazu benutzt werden, um
zwischen Versionen von FreeBSD, welche auf 4.4-Lite basieren,
und Versionen, welche Änderungen von 4.4-Lite2
übernommen haben, zu unterscheiden. Das
__FreeBSD__ Makro sollte stattdessen
verwandt werden.Sparsam sollte eingesetzt werden:__FreeBSD__ ist in allen Versionen
von FreeBSD definiert. Benutzen Sie dieses Makro, falls
die Änderung(en), die Sie machen,
nur FreeBSD betrifft.
Portierungsfallen, wie der Gebrauch von
sys_errlist[] gegenüber
strerror() sind Berkeley-Eigenheiten,
keine FreeBSD Änderungen.In FreeBSD 2.x, ist __FreeBSD__
auf 2 definiert. In älteren
Versionen, ist es 1. Alle späteren
Versionen erhöhen es, damit es mit der
Haupt-Versionsnummer übereinstimmt.Falls Sie zwischen einem FreeBSD 1.x und einem
FreeBSD 2.x (oder höher) System unterscheiden
müssen, ist es normalerweise richtig, die
BSD-Makros (wie oben beschrieben) zu
benutzen. Gibt es tatsächlich eine
FreeBSD-spezifische Änderung (wie z.B. spezielle
Optionen von Shared-Libraries für
ld), ist es nicht zu beanstanden
__FreeBSD__ und #if
__FreeBSD__ > 1 zu nutzen, um FreeBSD 2.x und
spätere Systeme zu erkennen. Falls Sie eine
höhere Genauigkeit benötigen, um FreeBSD Systeme
seit 2.0-RELEASE zu erkennen, können Sie folgendes
nutzen:#if __FreeBSD__ >= 2
#include <osreldate.h>
# if __FreeBSD_version >= 199504
/* 2.0.5+ release specific code here */
# endif
#endifIn den Tausenden von Ports, die bis jetzt erstellt
wurden, gab es nur ein oder zwei Fälle, in denen
__FreeBSD__ hätte benutzt werden
sollen. Nur weil ein früherer Port es an der falschen
Stelle benutzt hatte, bedeutet das nicht, dass Sie dies auch
machen sollten.__FreeBSD_version WerteHier ist eine praktische Liste von
__FreeBSD_version-Werten wie in sys/param.h
definiert:
__FreeBSD_version-WerteRelease__FreeBSD_version2.0-RELEASE1194112.1-CURRENT199501, 1995032.0.5-RELEASE1995042.2-CURRENT vor 2.11995082.1.0-RELEASE1995112.2-CURRENT vor 2.1.51995122.1.5-RELEASE1996072.2-CURRENT vor 2.1.61996082.1.6-RELEASE1996122.1.7-RELEASE1996122.2-RELEASE2200002.2.1-RELEASE220000 (keine Änderung)2.2-STABLE nach 2.2.1-RELEASE220000 (keine Änderung)2.2-STABLE nach texinfo-3.92210012.2-STABLE nach top2210022.2.2-RELEASE2220002.2-STABLE nach 2.2.2-RELEASE2220012.2.5-RELEASE2250002.2-STABLE nach 2.2.5-RELEASE2250012.2-STABLE nach der Aufnahme von ldconfig -R2250022.2.6-RELEASE2260002.2.7-RELEASE2270002.2-STABLE nach 2.2.7-RELEASE2270012.2-STABLE nach &man.semctl.2; Änderung2270022.2.8-RELEASE2280002.2-STABLE nach 2.2.8-RELEASE2280013.0-CURRENT vor &man.mount.2; Änderung3000003.0-CURRENT nach &man.mount.2; Änderung3000013.0-CURRENT nach &man.semctl.2; Änderung3000023.0-CURRENT nach ioctl arg Änderungen3000033.0-CURRENT nach ELF-Konvertierung3000043.0-RELEASE3000053.0-CURRENT nach 3.0-RELEASE3000063.0-STABLE nach 3/4 Zweig3000073.1-RELEASE3100003.1-STABLE nach 3.1-RELEASE3100013.1-STABLE nach Änderung der C++
Konstruktor/Destruktor-Reihenfolge3100023.2-RELEASE3200003.2-STABLE3200013.2-STABLE nach binär-inkompatibler IPFW und
Socket-Änderungen3200023.3-RELEASE3300003.3-STABLE3300013.3-STABLE nach Hinzufügen von &man.mkstemp.3;
zur libc3300023.4-RELEASE3400003.4-STABLE3400013.5-RELEASE3500003.5-STABLE3500014.0-CURRENT nach 3.4 Zweig4000004.0-CURRENT nach der Änderung im Verhalten des
dynamischen Linkers.4000014.0-CURRENT nach Änderung der C++
Konstruktor/Destruktor Reihenfolge.4000024.0-CURRENT nach funktionierendem &man.dladdr.3;.4000034.0-CURRENT nach der __deregister_frame_info
Fehlerbehebung für den dynamischen Linker (auch
4.0-CURRENT nach EGCS 1.1.2 Integration).4000044.0-CURRENT nach &man.suser.9; API Änderung
(auch 4.0-CURRENT nach newbus).4000054.0-CURRENT nach Änderung der
cdevsw-Registrierung.4000064.0-CURRENT nach Hinzufügen von so_cred
für Zugangsberechtigungen auf Socket-Ebene.4000074.0-CURRENT nach Hinzufügen eines poll
Syscall-Wrappers zur libc_r.4000084.0-CURRENT nach der Änderung des Kernel
dev_t-Typs zum struct
specinfo-Zeiger.4000094.0-CURRENT nach dem Beseitigen eines Fehlers in
&man.jail.2;.4000104.0-CURRENT nach der sigset_t
Datentyp Änderung.4000114.0-CURRENT nach dem Wechsel zum GCC
2.95.2-Compiler.4000124.0-CURRENT nach Hinzufügen der erweiterbaren
Linux Mode ioctl-Routinen.4000134.0-CURRENT nach dem OpenSSL-Import.4000144.0-CURRENT nach der C++ ABI Änderung in GCC
2.95.2 von -fvtable-thunks zu -fno-vtable-thunks als
Standard.4000154.0-CURRENT nach OpenSSH-Import.4000164.0-RELEASE4000174.0-STABLE nach 4.0-RELEASE4000184.0-STABLE nach der Einführung von
verzögerten Prüfsummen.4000194.0-STABLE nach dem Einpflegen des
libxpg4-Quelltextes in die libc.4000204.0-STABLE nach der Aktualisierung von Binutils auf
2.10.0, Änderungen der binären ELF-Markierungen,
Aufnahme von tcsh ins Basissystem.4000214.1-RELEASE4100004.1-STABLE nach 4.1-RELEASE4100014.1-STABLE nachdem &man.setproctitle.3; von der
libutil in die libc verschoben wurde.4100024.1.1-RELEASE4110004.1.1-STABLE nach 4.1.1-RELEASE4110014.2-RELEASE4200004.2-STABLE nach Kombinaion von libgcc.a und
libgcc_r.a und zugehörigen Änderungen der
GCC-Bindungen.4200014.3-RELEASE4300004.3-STABLE nach der Einführung von
wint_t.4300014.3-STABLE nach dem Einpflegen der PCI
Stromstatus-API.4300024.4-RELEASE4400004.4-STABLE nach der Einführung von
d_thread_t.4400014.4-STABLE nach den Änderungen der
mount-Struktur (betrifft Dateisystem-Kernelmodule).
4400024.4-STABLE nachdem die Userland-Komponenten von
smbfs importiert worden sind.4400034.5-RELEASE4500004.5-STABLE nach der Umbenennung von Elementen der
USB-Struktur.4500014.5-STABLE nachdem die
sendmail_enable &man.rc.conf.5;
Variable geändert worden ist, um den Wert
- NONE zu akzeptieren.
+ NONE zu akzeptieren.
4500044.5-STABLE nachdem XFree86 4 als Standard zum Bauen
der Pakete benutzt wird.4500054.5-STABLE nach dem Reparieren des Empfangsfilters,
welcher anfällig für einfache DoS-Attacken
war.4500064.6-RELEASE4600004.6-STABLE &man.sendfile.2; repariert, um mit der
Dokumentation übereinzustimmen, und nicht mehr die
Anzahl der gesendeten Header mit der Anzahl der Daten,
welche aus der Datei geschickt werden, gegenzurechnen.4600014.6.2-RELEASE4600024.6-STABLE4601004.6-STABLE nach dem Einfließen von `sed -i' aus
CURRENT.4601014.6-STABLE nach dem Einfließen von vielen
neuen pkg_install-Funktionen aus HEAD (HEAD = die
aktuellste und letzte Version des
Quellverzeichnisbaumes).4601024.7-RELEASE4700004.7-STABLE470100Beginn von generierten __std{in,out,err}p
Referenzen statt __sF. Dies ändert std{in,out,err}
von einem Ausdruck während des Kompilierens zu einem
Laufzeitausdruck.4701014.7-STABLE nach dem Einfliessen von
mbuf-Änderungen, um m_aux mbufs mit denen von m_tag
zu ersetzen4701024.7-STABLE erhält OpenSSL 0.9.74701034.8-RELEASE4800004.8-STABLE4801004.8-STABLE nachdem &man.realpath.3; Thread-sicher
gemacht wurde.4801014.8-STABLE Änderung der 3ware-API in twe.4801024.9-RELEASE4900004.9-STABLE4901004.9-STABLE nachdem e_sid zu der Struktur
kinfo_eproc hinzugefügt wurde.4901014.9-STABLE nach dem Einfliessen der
libmap-Funktionalität für rtld.4901024.10-RELEASE4910004.10-STABLE4911004.10-STABLE nach dem Einfliessen von Revision
20040629 der Paket-Werkzeuge aus CURRENT.4911014.10-STABLE nach der Fehlerbehebung in der VM, um
das Freigeben von fiktiven Speicherseiten korrekt zu
handhaben.4911024.11-RELEASE4920004.11-STABLE4921004.11-STABLE nach dem Hinzufügen von
libdata/ldconfig Verzeichnissen zu den
mtree-Dateien.4921015.0-CURRENT5000005.0-CURRENT nach Hinzufügen von
zusätzlichen Feldern in den ELF-Headern und
Ändern der Methode zur ELF-Markierung von
Binärdateien.5000015.0-CURRENT nach kld-Metadaten
Änderungen.5000025.0-CURRENT nach buf/bio Änderungen.5000035.0-CURRENT nach binutils Aktualisierung.5000045.0-CURRENT nach dem Einfliessen des libxpg4
Quelltextes in die libc und der Einführung der
TASKQ-Schnittstelle.5000055.0-CURRENT nach dem Hinzufügen der
AGP-Schnittstellen.5000065.0-CURRENT nach der Aktualisierung von Perl auf
Version 5.6.0.5000075.0-CURRENT nach der Aktualisierung des
KAME-Quelltextes zu den 2000/07-Quellen.5000085.0-CURRENT nach ether_ifattach() und
ether_ifdetach() Änderungen.5000095.0-CURRENT nachdem die mtree-Standards zurück
zur ursprünglichen Variante geändert wurden; -L
hinzugefügt, um Symlinks zu folgen.5000105.0-CURRENT nachdem die kqueue-API geändert
worden ist.5000115.0-CURRENT nachdem &man.setproctitle.3; von
libutil nach libc verschoben worden ist.5000125.0-CURRENT nach dem ersten SMPng-Commit.5000135.0-CURRENT nachdem <sys/select.h> nach
<sys/selinfo.h> verschoben worden ist.5000145.0-CURRENT nach dem Kombinieren von libgcc.a und
libgcc_r.a und damit verbundene Änderungen an
GCC-Bindungen.5000155.0-CURRENT nach der Änderung das
Zusammenbinden von libc und libc_r zu erlauben, womit die
-pthread Option veraltet ist.5000165.0-CURRENT nach dem Umschalten von struct ucred zu
struct xucred, um die vom Kernel exportierte API für
mount u.a.zu stabilisieren.5000175.0-CURRENT nach dem Hinzufügen der CPUTYPE
make Variable zum Kontrollieren von CPU-spezifischen
Optimierungen.5000185.0-CURRENT nach dem Verschieben von
machine/ioctl_fd.h nach sys/fdcio.h5000195.0-CURRENT nach der Umbenennung der
locale-Namen.5000205.0-CURRENT nach dem Bzip2-Import. Kennzeichnet
auch, dass S/Key entfernt wurde.5000215.0-CURRENT nach SSE Unterstützung.5000225.0-CURRENT nach KSE-Meilenstein 2.5000235.0-CURRENT nach d_thread_t, und nachdem UUCP in
die Ports verschoben worden ist.5000245.0-CURRENT nach Änderungen in der ABI bei der
Weitergabe von Deskriptoren und Berechtigungen auf 64 Bit
Plattformen.5000255.0-CURRENT nachdem XFree86 4 als Standard zum
Erstellen der Pakete benutzt wird und die neue libc
strnstr()-Funktion hinzugefügt wurde.5000265.0-CURRENT nachdem die neue libc
strcasestr()-Funktion hinzugefügt wurde.5000275.0-CURRENT nachdem die Userland-Komponenten von
smbfs importiert wurden.5000285.0-CURRENT nachdem die neuen C99-Ganzzahlen mit
spezifischer Breite hinzugefügt wurden.(Nicht hochgezählt.)5.0-CURRENT nachdem eine Änderung im
Rückgabewert von &man.sendfile.2; gemacht
wurde.5000295.0-CURRENT nach der Einführung des Types
fflags_t, welches die passende
Größe für Dateiflags hat.5000305.0-CURRENT nach der Umbenennung der USB
elements-Struktur.5000315.0-CURRENT nach der Einführung von Perl
5.6.1.5000325.0-CURRENT nachdem die
sendmail_enable &man.rc.conf.5;
Variable geändert worden ist, um den Wert
NONE zu akzeptieren.5000335.0-CURRENT nachdem mtx_init() einen dritten
Parameter entgegen nimmt.5000345.0-CURRENT mit GCC 3.1.5000355.0-CURRENT ohne Perl in /usr/src5000365.0-CURRENT nach dem Hinzufügen von
&man.dlfunc.3;5000375.0-CURRENT nachdem die Typen von einigen Elementen
der sockbuf-Struktur geändert wurden und nachdem die
Struktur neu geordnet wurde.5000385.0-CURRENT nach dem GCC 3.2.1 Import. Und auch
nachdem die Header nicht mehr _BSD_FOO_T_ sondern
_FOO_T_DECLARED benutzen. Dieser Wert kann auch als
konservative Schätzung für den Beginn der
Unterstützung des &man.bzip2.1; Pakets verwendet
werden.5000395.0-CURRENT nachdem verschiedene Änderungen an
Plattenfunktionen gemacht wurden, um die Anhängigkeit
von Interna der disklabel-Struktur zu entfernen.5000405.0-CURRENT nach dem Hinzufügen von
&man.getopt.long.3; zur libc.5000415.0-CURRENT nach der Aktualisierung von Binutils
auf 2.13, bei denen die FreeBSD-Emulation, vec und das
Ausgabeformat geändert wurden.5000425.0-CURRENT nach dem Hinzufügen schwacher
pthread_XXX Stubs zur libc, womit libXThrStub.so veraltet
ist. 5.0-RELEASE.5000435.0-CURRENT nach dem Erstellen des
RELENG_5_0-Zweiges500100<sys/dkstat.h> ist leer und sollte nicht
inkludiert werden.5001015.0-CURRENT nach der Änderung in der
d_mmap_t-Schnittstelle.5001025.0-CURRENT nachdem taskqueue_swi geädert
wurde, um ohne Giant zu arbeiten, und taskqueue_swi_giant
hinzugefügt wurde, um Giant zu verwenden.500103cdevsw_add() und cdevsw_remove() gibt es nicht
länger. Auftauchen der
MAJOR_AUTO-Allokationsmöglichkeit.5001045.0-CURRENT nach der neuen
cdevsw-Initialisierungsmethode.500105devstat_add_entry() wurde durch
devstat_new_entry() ersetzt.500106Devstat Schnittstellenänderung; siehe
sys/sys/param.h 1.149.500107Token-Ring Schnittstellenänderungen.500108Hinzufügen von vm_paddr_t.5001095.0-CURRENT nachdem &man.realpath.3;
Thread-sicher gemacht wurde.5001105.0-CURRENT nachdem &man.usbhid.3; mit
NetBSD synchronisiert wurde.5001115.0-CURRENT nach der neuen NSS Implementierung
und Hinzufügen der POSIX.1 getpw*_r, getgr*_r
Funktionen.5001125.0-CURRENT nach Entfernen des alten
rc-Systems.5001135.1-RELEASE.5010005.1-CURRENT nach dem Erstellen des RELENG_5_1
Zweiges.5011005.1-CURRENT nachdem die Semantik von
sigtimedwait(2) and sigwaitinfo(2) korrigiert
wurden.5011015.1-CURRENT nach dem Hinzufügen der lockfunc und
lockfuncarg-Felder zu &man.bus.dma.tag.create.9;.5011025.1-CURRENT nach der Integration des GCC 3.3.1-pre
20030711 Snapshots.5011035.1-CURRENT 3ware-API Änderungen in twe.5011045.1-CURRENT Unterstützung von dynamisch
gebundenen /bin und /sbin und Verschieben von Bibliotheken
nach /lib.5011055.1-CURRENT nachdem im Kernel Unterstützung
für Coda 6.x hinzugefügt wurden.5011065.1-CURRENT nachdem die 16550 UART-Konstanten von
<dev/sio/sioreg.h> nach
<dev/ic/ns16550.h> verschoben
wurden. Und nachdem die libmap Funktionalität
vorbehaltlos vom rtld unterstützt wurde.5011075.1-CURRENT nach Aktualisierung der PFIL_HOOKS API.5011085.1-CURRENT nachdem kiconv(3) hinzugefügt
wurde.5011095.1-CURRENT nachdem der standardmäßige
Ablauf von open und close in cdevsw geändert
wurde.5011105.1-CURRENT nachdem das Layout von cdevsw
geändert wurde.5011115.1-CURRENT nach dem Hinzufügen von
Mehrfachvererbung in kobj.5011125.1-CURRENT nach der if_xname Änderung in der
Struktur ifnet5011135.1-CURRENT nachdem /bin und /sbin geändert
wurden, um sie dynamisch zu binden.5011145.2-RELEASE5020005.2.1-RELEASE5020105.2-CURRENT nach dem Erstellen des RELENG_5_2-Zweiges.5021005.2-CURRENT nachdem die
__cxa_atexit/__cxa_finalize Funktionen zur libc
hinzugefügt wurden.5021015.2-CURRENT nachdem die Standard-Thread Bibliothek
von libc_r zu libpthread geändert wurde.5021025.2-CURRENT nach dem Gerätetreiber API
Megapatch.5021035.2-CURRENT nachdem getopt_long_only()
hinzugefügt wurde.5021045.2-CURRENT nachdem NULL für C in ((void *)0)
geändert wurde, was mehr Warnungen erzeugt.5021055.2-CURRENT nachdem pf beim Bauen und Installieren
mit eingebunden wird.5021065.2-CURRENT nachdem time_t auf der sparc64-Plattform
in einen 64-bit Wert geändert wurde.5021075.2-CURRENT nachdem sich die Unterstützung
für den Intel C/C++-Compiler in einigen Headern und
execve(2) geändert hat, um sich strikter an POSIX zu
halten.5021085.2-CURRENT nach der Einführung der
bus_alloc_resource_any API5021095.2-CURRENT nach dem Hinzufügen von UTF-8
locales5021105.2-CURRENT nach dem Entfernen der getvfsent(3)
API5021115.2-CURRENT nach dem Hinzufügen der .warning
Directive für make.5021125.2-CURRENT nachdem ttyioctl() zwingend erforderlich
für serielle Treiber gemacht wurde.5021135.2-CURRENT nach dem Import des
ALTQ-Frameworks.5021145.2-CURRENT nachdem sema_timedwait(9) geändert
wurde, 0 bei Erfolg und einen von 0 verschiedenen
Fehlercode im Falle eines Fehlers
zurückzuliefern.5021155.2-CURRENT nach dem Ändern der Kernel
Struktur dev_t, in ein Zeiger auf die Struktur cdev *5021165.2-CURRENT nach dem Ändern der Kernelstruktur
udev_t in dev_t.5021175.2-CURRENT nachdem Unterstützung für
CLOCK_VIRTUAL und CLOCK_PROF zu clock_gettime(2) und
clock_getres(2) hinzugefügt wurde.5021185.2-CURRENT nachdem die Überprüfung des
Klonens von Netzwerk-Schnittstellen geändert
wurde.5021195.2-CURRENT nach dem Einfliessen von Revision
20040629 der Paket-Werkzeuge.5021205.2-CURRENT nachdem Bluetooth-Quelltext als nicht
i386-spezifisch markiert wurde.5021215.2-CURRENT nach der Einführung des KDB
Debugger Frameworks, der Umwandlung des DDB in ein Backend
und der Einführung des GDB-Backends.5021225.2-CURRENT nachdem VFS_ROOT geändert wurde,
eine Struktur thread als Argument zu aktzeptieren, wie
vflush. Die Struktur kinfo_proc enthält nun einen Zeiger
auf Benutzer Daten. Der Umstieg auf
xorg als standardmäßige X
Implementierung wurde auch zu dieser Zeit
durchgeführt.5021235.2-CURRENT nachdem die Art und Weise, wie rc.d-Skripte
von Ports und Altlasten gestartet werden, getrennt wurde.5021245.2-CURRENT nachdem die vorherige Änderung
rückgängig gemacht wurde.5021255.2-CURRENT nach dem Entfernen von
kmem_alloc_pageable() und dem Import von GCC 3.4.2.5021265.2-CURRENT nachdem die UMA Kernel API
geändert wurde, um Konstruktoren und
Initialisierungsmethoden zu erlauben
fehlzuschlagen.5021275.2-CURRENT nach der Änderung in der vfs_mount
Signatur sowie allgemeines Ersetzen von PRISON_ROOT durch
SUSER_ALLOWJAIL in der suser(9) API.5021285.3-BETA/RC vor der Änderung der pfil-API.5030005.3-RELEASE5030015.3-STABLE nach dem Erstellen des RELENG_5_3-Zweiges.5031005.3-STABLE nach dem Hinzufügen von
Fülloptionen im Stile der libc zu
&man.strftime.3;.5031015.3-STABLE nachdem OpenBSD's nc(1) von CURRENT
importiert wurde.5031025.4-PRERELEASE nach dem Einfliessen der Reparaturen
aus CURRENT, in
<src/include/stdbool.h> und
<src/sys/i386/include/_types.h>,
um die GCC-Kompatibilität des Intel C/C++-Compilers
zu benutzen.5031035.4-PRERELEASE nach dem Einfliessen der
Änderung aus CURRENT in ifi_epoch statt der lokalen
Zeit die Betriebszeit des Systems zu benutzen.5031045.4-PRERELEASE nach dem Einfliessen der Reparaturen
von EOVERFLOW in vswprintf(3) aus CURRENT.5031055.4-RELEASE.5040005.4-STABLE nach dem Erstellen des
RELENG_5_4-Zweiges.5041005.4-STABLE nach dem Vergrößern der
standardmäßigen Stackgröße für
Threads.5041015.4-STABLE nach dem Hinzufügen von sha256.5041025.4-STABLE nach dem Einfliessen von if_bridge aus
CURRENT.5041035.4-STABLE nach dem Einfliessen von bsdiff und
portsnap aus CURRENT.5041045.4-STABLE nach dem Einfliessen der Änderung
von ldconfig_local_dirs aus CURRENT.5041055.5-RELEASE.5050005.5-STABLE nach dem Erstellen des RELENG_5_5-Zweiges.5051006.0-CURRENT6000006.0-CURRENT nach der festen Aktivierung von
PFIL_HOOKS im Kernel.6000016.0-CURRENT nach der anfänglichen
Einführung von ifi_epoch zur Struktur if_data. Wurde
nach ein paar Tagen wieder rückgängig gemacht.
Benutzen Sie diesen Wert bitte nicht.6000026.0-CURRENT nach dem erneuten Hinzufügen des
Elements ifi_epoch zur Struktur if_data.6000036.0-CURRENT nach dem Hinzufügen der Struktur
inpcb als Argument in der pfil API.6000046.0-CURRENT nach dem Hinzufügen des "-d
DESTDIR" Schalters zu newsyslog.6000056.0-CURRENT nach dem Hinzufügen von
Fülloptionen im Style der libc zu
&man.strftime.3;.6000066.0-CURRENT nach dem Hinzufügen von 802.11
Framework Neuerungen.6000076.0-CURRENT Änderung an den VOP_*VOBJECT()
Funktionen und Einführung des MNTK_MPSAFE Schalters
für Dateisysteme, welche ohne Giant arbeiten.6000086.0-CURRENT nach dem Hinzufügen von cpufreq
Framework und Treibern.6000096.0-CURRENT nachdem OpenBSD's nc(1) importiert
wurde.6000106.0-CURRENT nachdem der Anschein von
matherr() Unterstützung in SVID2
entfernt wurde.6000116.0-CURRENT nach dem Vergrößern der
standardmäßigen Stackgröße für
Threads.6000126.0-CURRENT nach dem Einfliessen der Reparaturen in
<src/include/stdbool.h> und
<src/sys/i386/include/_types.h>,
um die GCC-Kompatibilität des Intel C/C++-Compilers
zu benutzen.6000136.0-CURRENT nachdem die Überprüfungen auf
EOVERFLOW in vswprintf(3) korrigiert wurden.6000146.0-CURRENT nach dem Einfliessen der Änderung,
in ifi_epoch, statt der lokalen Zeit, die Betriebzeit des
Systems zu benutzen.6000156.0-CURRENT nachdem das Format von LC_CTYPE auf der
Festplatte verändert wurde.6000166.0-CURRENT nachdem das Format der NLS-Kataloge auf
der Festplatte verändert wurde.6000176.0-CURRENT nachdem das Format von LC_COLLATE auf
der Festplatte verändert wurde.600018Installation der acpica Include-Dateien in
/usr/include.600019Hinzufügen des MSG_NOSIGNAL Schalters zur
send(2) API.600020Hinzufügen von Feldern zu cdevsw600021gtar wurde aus dem Basissystem entfernt.600022Die Optionen LOCAL_CREDS, LOCAL_CONNWAIT für
Sockets wurde zu unix(4) hinzugefügt.600023&man.hwpmc.4; und zugehörige Werkzeuge wurden
zu 6.0-CURRENT hinzugefügt.600024Die Struktur icmphdr wurden zu 6.0-CURRENT
hinzugefügt.600025pf Aktualisierung auf 3.7.600026Kernel libalias und ng_nat wurden
eingeführt.600027POSIX ttyname_r(3) wurde über unistd.h und
libc zur Verfügung gestellt.6000286.0-CURRENT nachdem libpcap zu Version v0.9.1 alpha
096 aktualisiert wurde.6000296.0-CURRENT nach dem Import von NetBSDs
if_bridge(4).6000306.0-CURRENT nachdem die Struktur ifnet aus dem
Treiber softcs herausgelöst wurde.6000316.0-CURRENT nach dem Import von libpcap
v0.9.1.6000326.0-STABLE nachdem die Versionen aller gemeinsam
genutzten Bibliotheken, welche seit RELENG_5 nicht
geändert wurden, erhöht wurden.6000336.0-STABLE nachdem das Argument credential zu der
dev_clone-Ereignisbehandlung hinzugefügt wurde.
6.0-RELEASE.6000346.0-STABLE nach dem Erstellen des
6.0-RELEASE-Zweiges.6001006.0-STABLE nach dem Aufnehmen von Skripten aus den
local_startup-Verzeichnissen in &man.rcorder.8; des
Basissystems.6001016.0-STABLE nach dem Aktualisieren der ELF-Typen und
Konstanten.6001026.0-STABLE nach dem Einfliessen der pidfile(3)-API
aus CURRENT.6001036.0-STABLE nach dem Einfliessen der Änderung
von ldconfig_local_dirs aus CURRENT.6001046.0-STABLE nach der NLS-Katalogunterstützung
von csh(1).6001056.1-RELEASE6010006.1-STABLE nach 6.1-RELEASE.6011006.1-STABLE nach dem Import von csup.6011016.1-STABLE nach der iwi(4)-Aktualisierung.6011026.1-STABLE nach der Aktualisierung der
Namensauflösung zu BIND9 und Aufnahme der
ablaufinvarianten Versionen der netdb-Funktionen.6011036.1-STABLE nachdem Unterstützung für DSO
(dynamic shared objects - gemeinsam genutzte, dynamische
Objekte) in OpenSSL aktiviert wurde.6011046.1-STABLE nachdem 802.11 Reparaturen die API der
IEEE80211_IOC_STA_INFO ioctl geändert haben.6011056.2-RELEASE6020006.2-STABLE nach 6.2-RELEASE.6021006.2-STABLE nach dem Hinzufügen der Wi-Spy
Eigenart.6021016.2-STABLE nachdem pci_find_extcap() hinzugefügt
wurde.6021026.2-STABLE nach dem Einpflegen der dlsym
Änderung aus CURRENT, ein angefordertes Symbol sowohl
in der spezifizierten dso, als auch in den impliziten
Abhängigkeiten nachzuschlagen.6021036.2-STABLE nach dem Einpflegen von ng_deflate(4)
und ng_pred1(4) netgraph Knoten und neuen Kompressions-
und -Verschlüsselungmodi für den ng_ppp(4)
Knoten aus CURRENT.6021046.2-STABLE nach dem Einpflegen der BSD lizensierten
Version von &man.gzip.1;, welche von NetBSD portiert wurde
aus CURRENT.6021056.2-STABLE nach dem Einpflegen der PCI MSI und
MSI-X Unterstützung aus CURRENT.6021066.2-STABLE nach dem Einpflegen von ncurses 5.6 und
Unterstützung für Multibyte-Zeichen aus
CURRENT.6021076.2-STABLE nach dem Einpflegen des 'SG'
Peripheriegerätes aus CURRENT in CAM, welches einen
Teil der SCSI SG passthrough Geräte API von Linux
enthält.6021086.2-STABLE nach dem Einpflegen von readline 5.2
Patchset 002 aus CURRENT.6021096.2-STABLE nach dem Einpflegen von
pmap_invalidate_cache(), pmap_change_attr(),
pmap_mapbios(), pmap_mapdev_attr(), und pmap_unmapbios()
für amd64 und i386 aus CURRENT.6021106.2-STABLE nach dem Einpflegen von BOP_BDFLUSH aus
CURRENT und dem daraus resultierendem Bruch mit dem
Dateisystemmodul KBI.6021116.2-STABLE nach dem Einpflegen von libutil(3) aus
CURRENT.6021126.2-STABLE, nach der Trennung in "wide und
single byte ctype". Neu kompilierte Binärdateien,
die ctype.h referenzieren, erfordern möglicherweise
ein neues Symbol, __mb_sb_limit, das auf älteren
Systemen nicht verfügbar ist.6021136.2-STABLE, nachdem die ctype
ABI-Aufwärtskompatibilität wiederhergestellt
wurde.602114
+
+
+ FreeBSD 6.2-STABLE nach der Entfernung/Eliminierung
+ der wide und single Byte ctype-Trennung
+ 602115
+
+
+ 6.3-RELEASE
+ 603000
+
+
+ 6.3-STABLE nach 6.3-RELEASE.
+ 603100
+ 7.0-CURRENT.7000007.0-CURRENT nachdem die Versionen aller gemeinsam
genutzten Bibliothken, welche seit RELENG_5 nicht
geändert wurden, erhöht wurden.7000017.0-CURRENT nachdem ein Berechtigungs-Argument zur
dev_clone-Ereignisroutine hinzugefügt wurde.7000027.0-CURRENT nachdem memmem(3) zur libc
hinzugefügt wurde.7000037.0-CURRENT nachdem die Argumente der
Kernelfunktion solisten(9) modifiziert wurden, um einen
Backlog-Parameter (Anzahl der maximalen wartenden
Verbindungen) zu akzeptieren.7000047.0-CURRENT nachdem IFP2ENADDR() geändert
wurde, einen Zeiger auf IF_LLADDR()
zurückzugeben.7000057.0-CURRENT nach dem Hinzufügen des
if_addr-Elements zur Struktur
ifnet und dem Entfernen von
IFP2ENADDR().7000067.0-CURRENT nach dem Aufnehmen von Skripten aus den
local_startup Verzeichnissen in &man.rcorder.8; des
Basissystems.7000077.0-CURRENT nach dem Entfernen der MNT_NODEV
mount-Option.7000087.0-CURRENT nach ELF-64 Typen Änderungen und
Symbol Versionierung.7000097.0-CURRENT nach Hinzufügen der hostb und
vgapci Treiber, Hinzufügen von pci_find_extcap() und
Änderung der AGP Treiber die Apertur nicht
länger abzubilden.7000107.0-CURRENT nachdem auf allen Plattformen
außer Alpha tv_sec in time_t umgewandelt
wurde.7000117.0-CURRENT nach Änderung von
ldconfig_local_dirs.7000127.0-CURRENT nach Änderung in
/etc/rc.d/abi um
/compat/linux/etc/ld.so.cache als
Symlink in ein schreibgeschütztes Dateisystem zu
unterstützen.7000137.0-CURRENT nach pts Import.7000147.0-CURRENT nach Einführung von Version 2 der
&man.hwpmc.4;'s ABI.7000157.0-CURRENT nach dem Hinzufügen von
&man.fcloseall.3; zur libc.7000167.0-CURRENT nach dem Entfernen von ip6fw.7000177.0-CURRENT nach dem Import von snd_emu10kx.7000187.0-CURRENT nach dem Import von OpenSSL
0.9.8b.7000197.0-CURRENT nach dem Hinzufügen der
bus_dma_get_tag-Funktion7000207.0-CURRENT nach dem Import von libpcap 0.9.4 und
tcpdump 3.9.4.7000217.0-CURRENT nach der dlsym Änderung, ein
angefordertes Symbol sowohl in der spezifizierten dso, als
auch in den impliziten Abhängigkeiten
nachzuschlagen.7000227.0-CURRENT nach dem Hinzufügen neuer
Sound-IOCTLs.7000237.0-CURRENT nach dem Import von OpenSSL
0.9.8d.7000247.0-CURRENT nach dem Hinzufügen der
libelf.7000257.0-CURRENT nach größeren
Änderungen an den Sound sysctls.7000267.0-CURRENT nach dem Hinzufügen der
Wi-Spy-Eigenart.7000277.0-CURRENT nach dem Hinzufügen von
sctp-Aufrufen zur libc.7000287.0-CURRENT nach dem Ersetzen von GNU &man.gzip.1;
durch eine von NetBSD portierte Version, die unter
BSD-Lizenz steht.7000297.0-CURRENT nach dem Entfernen der IPIP
Tunnelkapselung (VIFF_TUNNEL) aus dem IPv4
Multicast-Forwarding-Quelltext.7000307.0-CURRENT nach den Modifizierungen an
bus_setup_intr() (newbus).7000317.0-CURRENT nach der Aufnahme der Firmware für
ipw(4) und iwi(4).7000327.0-CURRENT nach Unterstützung für
Multibyte-Zeichen.7000337.0-CURRENT nach Änderungen, wie insmntque(),
getnewvnode() und vfs_hash_insert() arbeiten.7000347.0-CURRENT nach Hinzufügen eines
Benachrichtigungsmechanismus für CPU
Frequenzänderungen.7000357.0-CURRENT nach dem Import des ZFS
Dateisystemes.7000367.0-CURRENT nach dem Einpflegen des 'SG'
Peripheriegerätes in CAM, welches einen Teil der SCSI
SG passthrough Geräte API von Linux
enthält.7000377.0-CURRENT nachdem &man.getenv.3;, &man.putenv.3;,
&man.setenv.3; und &man.unsetenv.3; geändert wurden,
um POSIX konform zu sein.7000387.0-CURRENT nachdem die Änderungen von 700038
rückgängig gemacht wurden.7000397.0-CURRENT nach dem Hinzufügen von
&man.flopen.3; zur libutil.7000407.0-CURRENT nachdem Symbol Versionierung aktiviert
und die standardmäßige Thread-Bibliothek zu
libthr geändert wurde.7000417.0-CURRENT nach dem Import von GCC 4.2.0.7000427.0-CURRENT nachdem die Versionen aller
Shared-Libraries, welche seit RELENG_6 nicht geändert
wurden, erhöht worden sind.7000437.0-CURRENT nachdem das Argument für
vn_open()/VOP_OPEN() vom Dateideskriptorindex zur Struktur
file * geädert wurde.7000447.0-CURRENT nachdem &man.pam.nologin.8;
geädert wurde, eine Kontoverwaltungs-Funktion statt
einer Authentifizierungsfunktion für das
PAM-Framework zur Verfügung zu stellen.7000457.0-CURRENT nach aktualisierter 802.11 wireless
Unterstützung.7000467.0-CURRENT, nachdem
TCP-LRO-Schnittstellen-Ressourcen hinzugefügt
wurden.7000477.0-CURRENT, nachdem die RFC 3678
API-Unterstützung zum IPv4-Stack hinzugefügt
wurde. Veraltetes RFC 1724-Verhalten
des IP_MULTICAST_IF ioctl wurde entfernt;
0.0.0.0/8 darf nicht länger als Schnittstellen-Index
benutzt werden. Stattdessen sollte die Struktur ipmreqn
verwendet werden.7000487.0-CURRENT, nachdem pf von OpenBSD 4.1
importiert wurde7000497.0-CURRENT, nachdem die IPv6-Unterstützung
um FAST_IPSEC erweitert, KAME IPSEC entfernt und
FAST_IPSEC in IPSEC umbenannt wurde.(nicht geändert)7.0-CURRENT, nachdem Aufrufe von
setenv/putenv/usw. von der traditionellen
BSD-Art und Weise nach POSIX konvertiert
wurden.7000507.0-CURRENT, nachdem neue Systemaufrufe
(mmap/lseek/usw.) implementiert wurden.7000517.0-CURRENT, nachdem die I4B-Header nach
include/i4b verschoben wurden.7000527.0-CURRENT, nachdem die Unterstützung
für PCI Domänen hinzugefügt
wurde.700053
- 7.0-STABLE, nach der Trennung in "wide und
+ 7.0-CURRENT, nach der Trennung in "wide und
single byte ctype".700054
- 7.0-STABLE, nachdem die
+ 7.0-CURRENT, nachdem die
ABI-Abwärtskompatibilität für die
FreeBSD 4/5/6-Versionen der PCIOCGETCONF-, PCIOCREAD-
sowie PCIOCWRITE IOCTLs hinzugefügt wurde. Damit
verbunden war, dass die ABI der PCIOCGETCONF IOCTL
erneut deaktiviert werden musste.7000558.0-CURRENT. Nach der Trennung in "wide und
single byte ctype".8000008.0-CURRENT, nachdem libpcap 0.9.8 und
tcpdump 3.9.8 importiert wurden.8000018.0-CURRENT, nachdem kthread_create() und
Konsorten in kproc_create() usw. umbenannt
wurden.8000028.0-CURRENT, nachdem die
ABI-Abwärtskompatibilität für die
FreeBSD 4/5/6-Versionen der PCIOCGETCONF-, PCIOCREAD-
sowie PCIOCWRITE IOCTLs hinzugefügt wurde. Damit
verbunden war, dass die ABI der PCIOCGETCONF IOCTL
erneut deaktiviert werden musste.800003
+
+ 8.0-CURRENT, nachdem der agp(4) Treiber verschoben
+ wurde von src/sys/pci nach src/sys/dev/agp.
+ 800004
+
Beachten Sie, dass 2.2-STABLE sich nach dem
2.2.5-RELEASE manchmal als 2.2.5-STABLE
identifiziert. Das Muster war früher das Jahr gefolgt
von dem Monat, aber wir haben uns entschieden, ab 2.2. einen
geradlinigeren Ansatz mit major/minor-Nummern zu benutzen.
Dies liegt daran, dass gleichzeitiges Entwickeln an mehreren
Zweigen es unmöglich macht, die Versionen nur mit Hilfe
des Datums des Releases zu unterteilen. Wenn Sie jetzt einen
Port erstellen brauchen Sie sich nicht um alte -CURRENTs zu
kümmern; diese sind hier nur als Referenz
augeführt.Etwas hinter die
bsd.port.mk-Anweisung schreibenSchreiben Sie bitte nichts hinter die .include
<bsd.port.mk>-Zeile. Normalerweise kann dies
vermieden werden, indem Sie die Datei
bsd.port.pre.mk irgendwo in der Mitte
Ihres Makefiles und
bsd.port.post.mk am Ende
einfügen.Sie dürfen entweder nur das
bsd.port.pre.mk/bsd.port.post.mk-Paar
oder bsd.port.mk alleine
hinzufügen; vermischen Sie diese Verwendungen
nicht!bsd.port.pre.mk definiert nur
einige Variablen, welche in Tests im
Makefile benutzt werden können,
bsd.port.post.mk definiert den
Rest.Hier sind einige wichtige Variablen, welche in
bsd.port.pre.mk definiert sind (dies ist
keine vollständige Liste, lesen Sie bitte
bsd.port.mk für eine
vollständige Auflistung).VariableBeschreibungARCHDie Architektur, wie von uname
-m zurückgegeben (z.B.
i386)OPSYSDer Typ des Betriebsystems, wie von uname
-s zurückgegeben (z.B.
FreeBSD)OSRELDie Release Version des Betriebssystems (z.B.,
2.1.5 oder
2.2.7)OSVERSIONDie numerische Version des Betriebssystems;
gleichbedeutend mit __FreeBSD_version.PORTOBJFORMATDas Objektformat des Systems
(elf oder aout;
beachten Sie, dass für moderne
Versionen von FreeBSD aout veraltet
ist).LOCALBASEDie Basis des local
Verzeichnisbaumes (z.B.
/usr/local/)X11BASEDie Basis des X11 Verzeichnisbaumes
(z.B., /usr/X11R6)PREFIXWo der Port sich selbst installiert (siehe Mehr Informationen über
PREFIX).Falls Sie die Variablen USE_IMAKE,
USE_X_PREFIX, oder
MASTERDIR definieren müssen, sollten
Sie dies vor dem Einfügen von
bsd.port.pre.mk machen.Hier sind ein paar Beispiele von Dingen, die Sie hinter
die Anweisung bsd.port.pre.mk schreiben
können:# lang/perl5 muss nicht kompliliert werden, falls perl5 schon auf dem System ist
.if ${OSVERSION} > 300003
BROKEN= perl ist im System
.endif
# nur eine Versionsnummer für die ELF Version der shlib
.if ${PORTOBJFORMAT} == "elf"
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}
.else
TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif
# die Software erstellt schon eine Verknüpfung fü ELF, aber nicht fü a.out
post-install:
.if ${PORTOBJFORMAT} == "aout"
${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endifSie haben sich daran erinnert Tabulator statt
Leerzeichen nach BROKEN= und
TCL_LIB_FILE= zu benutzen, oder?
:-).Benutzen Sie die exec-Anweisung in
Wrapper-SkriptenFalls der Port ein Shellskript installiert, dessen Zweck
es ist ein anderes Programm zu starten, und falls das Starten
des Programmes die letzte Aktion des Skripts ist, sollten Sie
sicherstellen, dass Sie die Funktion exec
dafür benutzen; zum Beispiel:#!/bin/sh
exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"Die Funktion exec ersetzt den
Shell-Prozess mit dem angegebenen Programm. Falls
exec ausgelassen wird, verbleibt der
Shell-Prozess im Speicher während das Programm
ausgefährt wird und verbraucht unnötig
Systemressourcen.UIDs und GIDsDie aktuellen Listen von reservierten UIDs und GIDs sind
in ports/UIDs und
ports/GIDs zu finden.Falls Ihr Port einen bestimmten Benutzer auf dem zu
installierendem System benötigt, lassen Sie das
pkg-install-Skript den Aufruf von
pw machen, um ihn automatisch anzulegen.
Schauen Sie sich für ein Beispiel net/cvsup-mirror an. Beachten Sie
bitte, dass wir von diesem Vorgehen stark abraten! Bitte
registrieren Sie Benutzer/Gruppen wie unten
beschrieben.Falls Ihr Port die gleichen Benutzer/Gruppen IDs
benutzen muss, egal ob als Binär-Paket installiert oder
als Port kompiliert, müssen Sie eine nicht benutzte UID
zwischen 50 und 999 benutzen und entweder in
ports/UIDs (für Benutzer) oder in
ports/GIDs (für Gruppen)
registrieren. Für ein Beispiel schauen Sie sich bitte
japanese/Wnn6 an.Stellen Sie sicher, dass Sie keine UIDs verwenden,
welche schon vom System oder von einem anderen Port gebraucht
werden.Bitte fügen Sie einen Patch für diese beiden
Datei hinzu, falls für Ihren Port ein neuer Benutzer oder
Gruppe angelegt werden muss.Aufgaben vernünftig lösenDas Makefile sollte die
nötigen Schritte einfach und vernünftig
durchführen. Wenn Sie ein einige Zeilen einsparen oder
die Lesbarkeit verbessern können, dann machen Sie dies
bitte. Beispiele sind: Ein make-Konstrukt
.if anstatt eines Shellkonstrukt
if zu verwenden, anstatt
do-extract neu zu definieren, dies
mit EXTRACT* machen, oder
GNU_CONFIGURE anstelle von
CONFIGURE_ARGS += --prefix=${PREFIX}
zu verwenden.Falls Sie sich in einer Situation wiederfinden, in der
Sie viel Code neu schreiben müssen, um etwas zu testen,
sollten Sie zuerst bsd.port.mk erneut
konsultieren und nachprüfen ob es nicht bereits eine
Lösung für Ihr Problem enthält. Es ist zwar
schwer zu lesen, beinhaltet jedoch eine Menge kurzer
Lösungen für viele scheinbar schwierige
Probleme.Berücksichtigen Sie sowohl CC als
auch CXXDer Port sollte sowohl die CC- wie
auch die CXX-Variable berücksichtigen.
Damit ist gemeint, dass der Port diese Variablen nicht ohne
Rücksicht auf eventuell schon gesetzte Werte einfach
überschreiben sollte; stattdessen sollten neue Werte an
schon existierende angehängt werden. Dadurch können
Build-Optionen, die alle Ports betreffen, global definiert
werden.Falls der Port diese Variablen nicht
berücksichtigt, sollte NO_PACKAGE=ignores either
cc or cxx ins Makefile
eingefügt werden.Im Folgenden wird ein Beispiel eines
Makefiles gezeigt, welches die beiden
Variablen CC und CXX
berücksichtigt. Beachten Sie das
?=:CC?= gccCXX?= g++Nachfolgend ein Beispiel, welches weder
CC noch CXX
berücksichtigt:CC= gccCXX= g++Die Variablen CC und
CXX können auf FreeBSD-Systemen in
/etc/make.conf definiert werden. Im
ersten Beispiel wird ein Wert nur dann gesetzt, falls dieser
vorher noch nicht gesetzt war, um so systemweite Definitionen
zu berücksichtigen. Im zweiten Beispiel werden die
Variablen ohne Rücksicht überschrieben.Berücksichtigen Sie
CFLAGSDer Port sollte die Variable CFLAGS
berücksichtigen. Damit ist gemeint, dass der Port den
Wert dieser Variablen nicht absolut setzen und damit
existierende Werte überschreiben sollte; stattdessen
sollte er weitere Werte der Variablen durch Anhängen
hinzufügen. Dadurch können Build-Optionen, die alle
Ports betreffen, global definiert werden.Falls der Port diese Variablen nicht
berücksichtigt, sollte NO_PACKAGE=ignores
cflags ins Makefile
eingefügt werden.Im Folgenden wird ein Beispiel eines
Makefiles gezeigt, welches die Variable
CFLAGS berücksichtigt. Beachten Sie
das +=:CFLAGS+= -Wall -WerrorNachfolgend finden Sie ein Beispiel, welches die
CFLAGS-Variable nicht
berücksichtigt:CFLAGS= -Wall -WerrorDie Variable CFLAGS wird auf
FreeBSD-Systemen in /etc/make.conf
definiert. Im ersten Beispiel werden weitere Flags an die
Variable CFLAGS angehängt und somit
der bestehende Wert nicht gelöscht. Im zweiten Beispiel
wird die Variable ohne Rücksicht
überschrieben.Sie sollten Optimierungsflags aus
Makefiles Dritter entfernen. Die
CFLAGS des Systems beinhalten systemweite
Optimierungsflags. Ein Beispiel eines unveränderten
Makefiles:CFLAGS= -O3 -funroll-loops -DHAVE_SOUNDWerden nun systemweite Optimierungsflags verwendet so
würde das Makefile in etwa
folgendermaßen aussehen:CFLAGS+= -DHAVE_SOUNDThreading-BibliothekenDie Threading-Bibliothek muss mit Hilfe eines speziellen
Linker-Flags -pthread in die
Binärdateien unter &os; gebunden werden. Falls ein Port
auf ein direktes Verlinken gegen -lpthread
oder -lc_r besteht, passen Sie den Port
bitte so an, dass er die durch das Port-Framework
bereitgestellte Variable PTHREAD_LIBS
verwendet. Diese Variable hat üblicherweise den Wert
-pthread, kann aber auf einigen
Architekturen und &os;-Versionen abweichende Werte haben und
daher sollte nie -pthread direkt in Patches
geschrieben werden, sondern immer
PTHREAD_LIBS.Falls durch das Setzen von
PTHREAD_LIBS der Bau des Ports mit der
Fehlermeldung unrecognized option
'-pthread' abbricht, kann die Verwendung des
gcc als Linker durch setzen von
CONFIGURE_ENV auf
LD=${CC} helfen. Die Option
-pthread wird nicht direkt von
ld unterstützt.RückmeldungenBrauchbare Änderungen/Patches sollten an den
ursprünglichen Autor/Maintainer der Software geschickt
werden, damit diese in der nächsten Version der Software
mit aufgenommen werden können. Dadurch wird Ihre Aufgabe
für die nächste Version der Software deutlich
einfacher.README.htmlNehmen Sie bitte keine README.html
in den Port auf. Diese Datei ist kein Bestandteil der
CVS-Sammlung sondern wird durch make readme
erzeugt.Einen Port durch BROKEN,
FORBIDDEN oder IGNORE als
nicht installierbar markierenIn manchen Fällen sollten Benutzer davon abgehalten
werden einen Port zu installieren. Um einem Benutzer
mitzuteilen, dass ein Port nicht installiert werden sollte,
gibt es mehrere Variablen für make,
die im Makefile des Ports genutzt werden
können. Der Wert der folgenden
make-Variablen wird dem Benutzer als Grund
für die Ablehnung der Installation des Ports
zurückgegeben. Bitte benutzen Sie die richtige
make-Variable, denn jede enthält eine
völlig andere Bedeutung für den Benutzer und das
automatische System, das von dem Makefile
abhängt, wie der
Ports-Build-Custer, FreshPorts und portsmon.VariablenBROKEN ist reserviert für
Ports, welche momentan nicht korrekt kompiliert,
installiert oder deinstalliert werden. Es sollte
für Ports benutzt werden, von denen man annimmt,
dass dies ein temporäres Problem ist.Falls angegeben, wird der Build-Cluster dennoch
versuchen den Port zu bauen, um zu sehen, ob das
zugrunde liegende Problem behoben wurde (das ist jedoch
im Allgemeinen nicht der Fall).Benutzen Sie BROKEN zum
Beispiel, wenn ein Port:nicht kompiliertbeim Konfiguration- oder Installation-Prozess
scheitertDateien außerhalb von
${LOCALBASE} und
${X11BASE} installiertbeim Deinstallieren nicht alle seine Dateien
sauber entfernt (jedoch kann es akzeptable und
wünschenswert sein, Dateien, die vom Nutzer
verändert wurden, nicht zu entfernen)FORBIDDEN wird für Ports
verwendet, die Sicherheitslücken enthalten oder die
ernste Sicherheitsbedenken für das FreeBSD-System
aufwerfen, wenn sie installiert sind (z.B. ein als
unsicher bekanntes Programm, oder ein Programm, das
einen Dienst zur Verfügung stellt, der leicht
kompromittiert werden kann). Ports sollten als
FORBIDDEN gekennzeichnet werden,
sobald ein Programm eine Schwachstelle hat und kein
Update veröffentlicht wurde. Idealerweise sollten
Ports so bald wie möglich aktualisiert werden wenn
eine Sicherheitslücke entdeckt wurde, um die Zahl
verwundbarer FreeBSD-Hosts zu verringern (wir
schätzen es für unsere Sicherheit bekannt zu
sein), obwohl es manchmal einen beachtlichen Zeitabstand
zwischen der Bekanntmachung einer Schwachstelle und dem
entsprechenden Update gibt. Bitte kennzeichnen Sie einen
Port nicht aus irgendeinem Grund außer Sicherheit
als FORBIDDEN.IGNORE ist für Ports
reserviert, die aus anderen Gründen nicht gebaut
werden sollten. Es sollte für Ports verwendet
werden, in denen ein strukturelles Problem vermutet
wird. Der Build-Cluster wird unter keinen Umständen
Ports, die mit IGNORE markiert sind,
erstellen. Verwenden Sie IGNORE zum
Beispiel, wenn ein Port:kompiliert, aber nicht richtig läuftnicht auf der installierten Version von &os;
läuft&os; Kernelquelltext zum Bauen benötigt,
aber der Benutzer diese nicht installiert hatein Distfile benötigt, welches aufgrund
von Lizenzbeschränkungen nicht automatisch
abgerufen werden kannnicht korrekt mit einem momentan installiertem
Port arbeitet (der Port hängt zum Beispiel von
www/apache21 ab,
aber www/apache13 ist
installiert)Wenn ein Port mit einem momentan installiertem
Port kollidiert (zum Beispiel, wenn beide eine Datei
an die selbe Stelle installieren, diese aber eine
andere Funktion hat), benutzen Sie stattdessen
CONFLICTS.
CONFLICTS setzt
IGNORE dann
selbstständig.Um einen Port nur auf bestimmte
Systemarchitekturen mit IGNORE zu
markieren, gibt es zwei Variablen, die automatisch
IGNORE für Sie setzen:
ONLY_FOR_ARCHS und
NOT_FOR_ARCHS. Beispiele:ONLY_FOR_ARCHS= i386 amd64NOT_FOR_ARCHS= alpha ia64 sparc64Eine eigene IGNORE-Ausgabe kann
mit ONLY_FOR_ARCHS_REASON und
NOT_FOR_ARCHS_REASON festgelegt
werden. Für eine bestimmte Architektur sind
Angaben durch
ONLY_FOR_ARCHS_REASON_ARCH
und
NOT_FOR_ARCHS_REASON_ARCH
möglich.Wenn ein Port i386-Binärdateien
herunterlädt und installiert, sollte
IA32_BINARY_PORT gesetzt werden. Wenn
die Variable gesetzt ist, wird überprüft, ob
das Verzeichnis /usr/lib32 für
IA32-Versionen der Bibliotheken vorhanden ist, und ob
der Kernel mit IA32-Kompatibilität gebaut wurde.
Wenn eine dieser zwei Voraussetzungen nicht erfüllt
ist, wird IGNORE automatisch
gesetzt.Anmerkungen zur ImplementierungZeichenketten sollten nicht in Anführungszeichen
gesetzt werden. Auch die Wortwahl der Zeichenketten sollte
die Art und Weise beachten, wie die Informationen dem Nutzer
angezeigt werden. Beispiele:BROKEN= this port is unsupported on FreeBSD 5.xIGNORE= is unsupported on FreeBSD 5.xresultieren in den folgenden Ausgaben von
make describe:===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.===> foobar-0.1 is unsupported on FreeBSD 5.x.Kennzeichnen eines Ports zur Entfernung durch
DEPRECATED oder
EXPIRATION_DATEDenken Sie bitte daran, dass BROKEN
und FORBIDDEN nur als temporärer
Ausweg verwendet werden sollten, wenn ein Port nicht
funktioniert. Dauerhaft defekte Ports sollten komplett aus der
Ports-Sammlung entfernt werden.Wenn es sinnvoll ist, können Benutzer vor der
anstehenden Entfernung eines Ports mit
DEPRECATED und
EXPIRATION_DATE gewarnt werden. Ersteres
ist einfach eine Zeichenkette, die angibt, warum der Port
entfernt werden soll. Letzteres ist eine Zeichenkette im ISO
8601-Format (JJJJ-MM-TT). Beides wird dem Benutzer
gezeigt.Es ist möglich DEPRECATED ohne
EXPIRATION_DATE zu setzen (zum Beispiel, um
eine neuere Version des Ports zu empfehlen), aber das
Gegenteil ist sinnlos.Es gibt keine Vorschrift wie lange die Vorwarnzeit sein
muss. Gegenwärtig ist es üblich einen Monat für
sicherheitsrelevante Probleme und zwei Monate für
Build-Probleme anzusetzen. Dies gibt allen interessierten
Committern ein wenig Zeit die Probleme zu beheben.Vermeiden Sie den Gebrauch des
.error-KonstruktesDer korrekte Weg eines Makefile
anzuzeigen, dass der Port aufgrund eines externen Grundes
nicht installiert werden kann (zum Beispiel, weil der Benutzer
eine ungültige Kombination von Build-Optionen angegeben
hat), ist IGNORE auf einen nicht leeren
Wert zu setzen. Dieser wird dann formatiert und dem Benutzer
von make install ausgegeben.Es ist ein verbreiteter Fehler .error
für diesem Zweck zu verwenden. Das Problem dabei ist,
dass viele automatisierte Werkzeuge, die mit dem Ports-Baum
arbeiten, in dieser Situation fehlschlagen. Am Häufigsten
tritt das Problem beim Versuch
/usr/ports/INDEX zu bauen auf (siehe
). Jedoch schlagen auch
trivialere Befehle wie make -V maintainer
in diesem Fall fehl. Dies ist nicht akzeptabel!Wie vermeidet man die Verwendung von
.errorNehmen Sie an, dass die Zeile
USE_POINTYHAT=yes in
make.conf enthalten ist. Der erste der
folgenden zwei Makefile-Schnipsel
lässt make index fehlschlagen,
während der zweite dies nicht tut..if USE_POINTYHAT
.error "POINTYHAT is not supported"
.endif.if USE_POINTYHAT
IGNORE=POINTYHAT is not supported
.endifVerwendung von sysctlVom Gebrauch von sysctl wird, außer in Targets,
abgeraten. Das liegt daran, dass die Auswertung aller
makevars, wie sie während
make index verwendet werden, dann den
Befehl ausführen muss, welches den Prozess weiter
verlangsamt.Die Verwendung von &man.sysctl.8; sollte immer durch die
Variable SYSCTL erfolgen, da diese den
vollständigen Pfad enthält und überschrieben
werden kann, so dies als notwendig erachtet wird.Erneutes Ausliefern von DistfilesManchmal ändern die Autoren der Software den Inhalt
veröffentlichter Distfiles, ohne den Dateinamen zu
ändern. Sie müssen überprüfen, ob die
Änderungen offizell sind und vom Autor durchgeführt
wurden. Es ist in der Vergangenheit vorgekommen, dass
Distfiles still und heimlich auf dem Download-Server
geändert wurden, um Schaden zu verursachen oder die
Sicherheit der Nutzer zu kompromittieren.Verschieben Sie das alte Distfile und laden Sie das neue
herunter. Entpacken Sie es und vergleichen Sie den Inhalt
mittels &man.diff.1;. Wenn Sie nichts Verdächtiges sehen
können Sie distinfo aktualisieren.
Stellen Sie sicher, dass die Änderungen in Ihrem PR oder
Commit-Protokoll zusammengefasst sind, um zu
Gewährleisten, dass nichts Negatives passiert ist.Sie können auch mit den Autoren der Software in
Verbindung treten und sich die Änderungen bestätigen
lassen.Notwendige Abhilfen (Workarounds)Manchmal ist es nötig Fehler in Programmen, die mit
älteren Versionen von &os; ausgeliefert werden, zu
umgehen.Einige Versionen von &man.make.1; waren zumindest
auf &os; 4.8 und 5.0 in Bezug auf die Behandlung von
Vergleichen mit OSVERSION defekt. Dies
führte häufig zu Fehlern während
make describe (und damit auch
während des make index für
alle Ports). Abhilfe schafft hier, den bedingten Vergleich
in Leerzeichen einzuschließen, z.B.:
if ( ${OSVERSION} > 500023
) Beachten Sie, dass eine
Test-Installation eines Ports auf 4.9 oder 5.2 dieses
Problem nicht aufspürt.VerschiedenesDie Dateien pkg-descr und
pkg-plist sollten beide doppelt
kontrolliert werden. Wenn Sie einen Port nachprüfen und
glauben, dass man es besser machen kann, dann verbessern Sie
ihn bitte.Bitte kopieren Sie nicht noch mehr Exemplare der
GNU General Public License in unser System.Bitte überprüfen Sie alle gesetzlichen Punkte
gründlich! Lassen Sie uns bitte keine illegale Software
verbreiten!Beispiel eines MakefileHier ein Beispiel für ein
Makefile, welches als Vorlage für
einen neuen Port dienen kann. Alle zusätzlichen Kommentare
in eckigen Klammern müssen entfernt werden!Es wird empfohlen, die hier gezeigte Formatierung zu
übernehmen (Reihenfolge der Variablen, Leerzeichen zwischen
einzelnen Abschnitten, usw.). Dadurch werden die wichtigen
Informationen sofort ersichtlich. Zur Überprüfung
Ihres Makefiles sollten Sie portlint verwenden.[the header...just to make it easier for us to identify the ports.]
# New ports collection makefile for: xdvi
[the "version required" line is only needed when the PORTVERSION
variable is not specific enough to describe the port.]
# Date created: 26 May 1995
[this is the person who did the original port to FreeBSD, in particular, the
person who wrote the first version of this Makefile. Remember, this should
not be changed when upgrading the port later.]
# Whom: Satoshi Asami <asami@FreeBSD.org>
#
# $FreeBSD$
[ ^^^^^^^^^ This will be automatically replaced with RCS ID string by CVS
when it is committed to our repository. If upgrading a port, do not alter
this line back to "$FreeBSD$". CVS deals with it automatically.]
#
[section to describe the port itself and the master site - PORTNAME
and PORTVERSION are always first, followed by CATEGORIES,
and then MASTER_SITES, which can be followed by MASTER_SITE_SUBDIR.
PKGNAMEPREFIX and PKGNAMESUFFIX, if needed, will be after that.
Then comes DISTNAME, EXTRACT_SUFX and/or DISTFILES, and then
EXTRACT_ONLY, as necessary.]
PORTNAME= xdvi
PORTVERSION= 18.2
CATEGORIES= print
[do not forget the trailing slash ("/")!
if you are not using MASTER_SITE_* macros]
MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
PKGNAMEPREFIX= ja-
DISTNAME= xdvi-pl18
[set this if the source is not in the standard ".tar.gz" form]
EXTRACT_SUFX= .tar.Z
[section for distributed patches -- can be empty]
PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/
PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz
[maintainer; *mandatory*! This is the person who is volunteering to
handle port updates, build breakages, and to whom a users can direct
questions and bug reports. To keep the quality of the Ports Collection
as high as possible, we no longer accept new ports that are assigned to
"ports@FreeBSD.org".]
MAINTAINER= asami@FreeBSD.org
COMMENT= A DVI Previewer for the X Window System
[dependencies -- can be empty]
RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript
LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm
[this section is for other standard bsd.port.mk variables that do not
belong to any of the above]
[If it asks questions during configure, build, install...]
IS_INTERACTIVE= yes
[If it extracts to a directory other than ${DISTNAME}...]
WRKSRC= ${WRKDIR}/xdvi-new
[If the distributed patches were not made relative to ${WRKSRC}, you
may need to tweak this]
PATCH_DIST_STRIP= -p1
[If it requires a "configure" script generated by GNU autoconf to be run]
GNU_CONFIGURE= yes
[If it requires GNU make, not /usr/bin/make, to build...]
USE_GMAKE= yes
[If it is an X application and requires "xmkmf -a" to be run...]
USE_IMAKE= yes
[et cetera.]
[non-standard variables to be used in the rules below]
MY_FAVORITE_RESPONSE= "yeah, right"
[then the special rules, in the order they are called]
pre-fetch:
i go fetch something, yeah
post-patch:
i need to do something after patch, great
pre-install:
and then some more stuff before installing, wow
[and then the epilogue]
.include <bsd.port.mk>Auf dem Laufenden bleibenDie &os; Ports-Sammlung verändert sich ständig.
Hier finden Sie einige Informationen, wie Sie auf dem Laufenden
bleiben.
FreshPortsEiner der einfachsten Wege, um sich über
Aktualisierungen, die bereits durchgeführt wurden, zu
informieren, ist sich bei FreshPorts
anzumelden. Sie können dort beliebige Ports
auswählen, die Sie beobachten möchten. Maintainern
wird ausdrücklich empfohlen sich anzumelden, da Sie nicht
nur über Ihre eigenen Änderungen informiert werden,
sondern auch über die aller anderen Committer (Diese sind
oft nötig, um über Änderungen des zugrunde
liegenden Frameworks informiert zu bleiben. Obwohl es
höflich wäre, vorher über solche
Änderungen benachrichtigt zu werden, wird es manchmal
vergessen oder ist einfach nicht möglich. Außerdem
sind die Änderungen manchmal nur sehr klein. Wir erwarten
von jedem in solchen Fällen nach bestem Gewissen zu
urteilen).Wenn Sie Fresh-Ports benutzen möchten,
benötigen Sie nur einen Account. Falls Sie sich mit einer
@FreeBSD.org E-Mailadresse registriert
haben, werden Sie den Anmeldelink am rechten Rand der Seite
finden. Diejenigen, die bereits einen FeshPorts-Account
haben, aber nicht Ihre @FreeBSD.org
E-Mailadresse benutzen, können einfach Ihre E-Mailadresse
auf @FreeBSD.org ändern, sich
anmelden, und dann die Änderung rückgängig
machen.FreshPorts bietet auch eine
Überprüfungsfunktion, die automatisch alle Committs
zum &os; Ports-Baum testet. Wenn Sie sich für diesen
Dienst anmelden, werden Sie über alle Fehler, die bei der
Überprüfung Ihres Committs auftreten,
informiert.Die Webschnittstelle zum Quelltext-RepositoryEs ist möglich die Dateien des Quellen-Repositories
mit Hilfe einer Webschnittstelle durchzusehen.
Änderungen, die das gesamte Ports-System betreffen,
werden jetzt in der Datei CHANGES
dokumentiert. Solche, die nur bestimmte Ports betreffen, in
der Datei UPDATING.
Aber die maßgebliche Antwort auf alle Fragen liegt
zweifellos darin, den Quelltext von bsd.port.mk
und dazugehörige Dateien zu lesen.Die &os; Ports-MailinglisteWenn Sie Maintainer sind, sollten Sie in Erwägung
ziehen die &a.ports;-Mailingliste zu verfolgen. Wichtige
Änderungen an der grundlegenden Funktionsweise von Ports
werden dort angekündigt und dann in
CHANGES committet.Der Cluster zum Bauen von &os;-Ports auf pointyhat.FreeBSD.orgEine der weniger bekannten Stärken von &os; ist es,
dass ein ganzer Cluster von Maschinen nur dafür
reserviert ist, andauernd die Ports-Sammlung zu bauen, und
zwar für jedes große &os; Release und jede
Tier-1-Architektur. Die Ergebnisse können Sie unter
package building
logs and errors finden.Alle Ports ausser denjenigen, die als
IGNORE markiert sind, werden gebaut. Ports,
die als BROKEN markiert sind, werden
dennoch ausprobiert, um zu sehen, ob das zugrunde liegende
Problem gelöst wurde (Dies wird erreicht, indem
TRYBROKEN an das
Makefile des Ports übergeben
wird).Die &os; Port-Distfile-PrüfungDer Build-Cluster ist dazu bestimmt, das neueste Release
jedes Ports aus bereits heruntergeladenden Distfiles zu bauen.
Da sich das Internet aber ständig verändert,
können Distfiles schnell verloren gehen. Die FreeBSD
Ports Distfiles Prüfung versucht jeden
Download-Standort für jeden Port anzufragen, um
herauszufinden, ob jedes Distfile noch verfügbar ist.
Maintainer werden gebeten diesen Bericht regelmäßig
durchzusehen, nicht nur, um den Build-Prozess für die
Nutzer zu beschleunigen, sondern auch um zu vermeiden, dass
auf den Maschinen, die freiwillig zur Verfügung gestellt
werden, um all diese Dateien anzubieten, Ressourcen
verschwendet werden.Das &os; Ports-Monitoring-SystemEine weitere praktische Ressource ist das FreeBSD
Ports-Monitoring-System (auch bekannt als
portsmon). Dieses System besteht aus einer
Datenbank, die Informationen von mehreren Quellen bezieht und
es erlaubt diese über ein Webinterface abzufragen.
Momentan werden die Ports-Problemberichte (PRs), die
Fehlerprotokolle des Build-Clusters und die einzelnen Dateien
der Ports-Sammlung verwendet. In Zukunft soll das auf die
Distfile-Prüfung und weitere Informationsquellen
ausgedehnt werden.Als Ausgangspunkt können Sie alle Informationen
eines Ports mit Hilfe der Übersicht
eines Ports betrachten.Zum Zeitpunkt des Schreibens ist dies die einzige
Quelle, die GNATS PR-Einträge auf Portnamen abbildet
(PR-Einreicher geben den Portnamen nicht immer in der
Zusammenfassung an, obwohl wir uns das wünschen
würden). Also ist portsmon ein guter
Anlaufpunkt, wenn Sie herausfinden wollen, ob zu einem
existierenden Port PRs oder Buildfehler eingetragen sind. Oder
um herauszufinden, ob ein neuer Port, den Sie erstellen
wollen, bereits eingereicht wurde.