Index: head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml (revision 48014)
+++ head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml (revision 48015)
@@ -1,1059 +1,1060 @@
JailsMatteoRiondatoBeigetragen von OliverPeterÜbersetzt von DirkArltJohannKoisjailsÜbersichtDieses Kapitel erklärt, was &os;-Jails sind und wie man sie
einsetzt. Jails, manchmal als Ersatz für
chroot-Umgebungen bezeichnet, sind ein sehr
mächtiges Werkzeug für Systemadministratoren, jedoch kann deren
grundlegende Verwendung auch für fortgeschrittene Anwender
nützlich sein.Jails sind ein mächtiges Werkzeug, aber sie sind kein
Sicherheits-"Allheilmittel". Es ist wichtig zu beachten, dass
es für einen Prozess in der Jail nicht möglich ist, von selbst
auszubrechen. Es gibt jedoch Möglichkeiten, in denen ein
unpriviligierter Benutzer außerhalb der Jail, mit einem
priviligierten Benutzer innerhalb der Jail kooperiert, und
somit erhöhte Rechte in der Host-Umgebung erlangt.Den meisten dieser Angriffe kann vorgebeugt werden, indem
sichergestellt wird, dass das Rootverzeichnis der Jail für
unpriviligierte Benutzer der Host-Umgebung nicht zugänglich
ist.Nachdem Sie dieses Kapitel gelesen haben, werden SieWissen, was eine Jail ist und welche Verwendungszwecke
es dafür unter &os; gibt.Wissen, wie man eine Jail erstellt, startet und
und anhält.Die Grundlagen der Jail-Administration (sowohl
innerhalb als auch ausserhalb des Jails) kennen.Weitere nützliche Informationen über Jails
sind beispielsweise in folgenden Quellen zu finden:Der &man.jail.8; Manualpage. Diese umfassende Referenz
beschreibt, wie man unter &os; eine Jail startet, anhält
und kontrolliert.Den Mailinglisten und deren Archive. Die Archive der
Mailingliste &a.questions; und anderen Mailinglisten, welche
vom &a.mailman.lists; bereitgestellt werden, beinhalten
bereits umfangreiche Informationen zu Jails. Daher ist es
sinnvoll, bei Problemen mit Jails zuerst die Archive der
Mailinglisten zu durchsuchen, bevor Sie eine neue Anfrage
auf der Mailingliste &a.questions.name; stellen.Jails - DefinitionenUm die für den Einsatz von Jails benötigten
FreeBSD-Funktionen, deren Interna sowie die Art und Weise, mit der
diese mit anderen Teilen des Betriebssystems interagieren, zu
erläutern, werden in diesem Kapitel folgende Definitionen
verwendet:&man.chroot.8; (-Befehl)Ein Werkzeug, das den &os;-Systemaufruf &man.chroot.2;
verwendet, um das Wurzelverzeichnis eines Prozesses und all
seiner Nachkömmlinge zu ändern.&man.chroot.2; (-Umgebung)Die Umgebung eines Prozesses, der in einem
chroot läuft. Diese beinhaltet
Ressourcen, wie zum Beispiel sichtbare Abschnitte
des Dateisystems, verfügbare Benutzer- und
Gruppenkennungen, Netzwerkschnittstellen und weitere
IPC-Mechanismen und so weiter.&man.jail.8; (-Befehl)Das Systemadministrationswerkzeug, welches es erlaubt,
Prozesse innerhalb der Jail-Umgebung zu starten.Host (-Benutzer, -Prozess, -System)Das verwaltende System einer Jail-Umgebung. Das
Host-System hat Zugriff auf alle verfügbaren
Hardwareressourcen und kann sowohl innerhalb als auch
ausserhalb der Jail-Umgebung Prozesse steuern. Einer der
wichtigsten Unterschiede des Host-System einer Jails ist,
dass die Einschränkungen, welche für die
Superuser-Prozesse innerhalb eines Jails gelten, nicht
für die Prozesse des Host-Systems gelten.Gast (-Benutzer, -Prozess, -System)Ein Prozess, ein Benutzer oder eine andere Instanz,
deren Zugriff durch eine &os;-Jail eingeschränkt
ist.EinführungDa die Systemadministration oft eine schwierige Aufgabe ist,
wurden viele mächtige Werkzeuge entwickelt, die
Administratoren bei Installation, Konfiguration und Wartung ihrer
Systeme unterstützen sollen. Eine wichtige Aufgabe eines
Administrators ist es, Systeme so abzusichern, dass es im
regulären Betrieb zu keinen Sicherheitsverstößen
kommt.Eines der Werkzeuge, mit dem die Sicherheit eines &os;-Systems
verbessert werden kann, sind Jails. Jails wurden schon in
&os; 4.X von &a.phk.email; eingeführt, wurden jedoch mit
&os; 5.X stark verbessert, sodass sie inzwischen zu einem
mächtigen und flexiblen Subsystem herangereift sind. Trotzdem
geht die Entwicklung nach wie vor weiter. Wichtige Ziele sind
derzeit: Bessere Zweckmäßigkeit, Leistung,
Ausfallsicherheit und allgemeine Sicherheit.Was ist eine Jail?BSD-ähnliche Betriebssysteme besitzen seit den Zeiten
von 4.2BSD &man.chroot.2;. Das Werkzeug &man.chroot.2; kann dazu
benutzt werden, das root-Verzeichnis einer Reihe von Prozessen
zu ändern, um so eine seperate sichere Umgebung (abgeschnitten
vom Rest des Systems) zu schaffen. Prozesse, die in einer
chroot-Umgebung erstellt wurden, können nicht auf Dateien
oder Ressourcen zugreifen, die sich ausserhalb der Umgebung
befinden. Dadurch ist es einem kompromittierten Dienst nicht
möglich, das gesamte System zu kompromittieren.
&man.chroot.8; eignet sich für einfache Aufgaben, die keine
flexiblen, komplexen oder fortgeschrittenen Funktionen
benötigen. Obwohl seit der Entwicklung des chroot-Konzepts
zahlreiche Sicherheitslöcher geschlossen wurden, die es
einem Prozess erlauben konnten, aus einer Jail auszubrechen,
war seit langer Zeit klar, dass &man.chroot.2; nicht die ideale
Lösung ist, einen Dienst sicher zu machen.Dies ist einer der Hauptgründe, warum
Jails entwickelt wurden.Jails setzen auf dem traditionellen &man.chroot.2;-Konzept
auf und verbessern es auf unterschiedlichste Art und Weise. In
einer traditionellen &man.chroot.2;-Umgebung sind Prozesse auf
den Bereich des Dateisystems beschränkt, auf den sie
zugreifen können. Der Rest der Systemressourcen (wie zum
Beispiel eine Reihe von Systembenutzern, die laufenden Prozesse
oder das Netzwerk-Subsystem) teilen sich die chroot-Prozesse mit
dem Host-System. Jails dehnen dieses Modell nicht nur auf die
Virtualisierung des Zugriffs auf das Dateisystem, sondern auch
auf eine Reihe von Benutzern, das Netzwerk-Subsystem des
&os;-Kernels und weitere Bereiche aus. Eine ausführlichere
Übersicht der ausgefeilten Bedienelemente zur Konfiguration
einer Jail-Umgebung finden Sie im Abschnitt des Handbuchs.Eine Jail zeichnet sich durch folgende Merkmale aus:Einen Unterverzeichnisbaum, der die Jail enthält.
Einem Prozess, der innerhalb der Jail läuft, ist es
nicht mehr möglich, aus diesem auszubrechen. Von
der traditionellen &man.chroot.2;-Umgebung bekannte
Sicherheitsprobleme existieren bei &os;-Jails nicht
mehr.Einen Hostname, der innerhalb der Jail verwendet wird.
Jails werden vor allem dazu verwendet, Netzwerkdienste
anzubieten, daher ist es für Systemadministratoren
von großem Nutzen, dass jede Jail einen beschreibenden
Hostname haben kann.Eine IP Adresse, die der Jail
zugewiesen wird und nicht verändert werden kann,
solange das Jail läuft. Die IP-Adresse einer Jails
ist üblicherweise ein Adress-Alias auf eine
existierende Netzwerkschnittstelle. Dies ist jedoch
nicht zwingend erforderlich.Einen Befehl (genauer den Pfad einer ausführbaren
Datei) der innerhalb der Jail ausgeführt werden soll.
Dieser Pfad wird relativ zum root-Verzeichnis einer
Jail-Umgebung angegeben.Unabhängig davon können Jails eine Reihe eigener
Benutzer und einen eigenen Benutzer root
haben. Selbstverständlich sind die Rechte des Benutzers
root nur auf die Jail-Umgebung
beschränkt. Aus der Sicht des Host-Systems ist der
Benutzer root der Jail-Umgebung kein
allmächtiger Benutzer, da der Benutzer
root der Jail-Umgebung nicht dazu
berechtigt ist, kritische Operationen am System ausserhalb der
angebundenen &man.jail.8;-Umgebung durchzuführen.
Weitere Informationen über die Einsatzmöglichkeiten
und Beschränkungen des Benutzers root
werden im Abschnitt des
Handbuchs besprochen.Einrichtung und Verwaltung von JailsEinige Administratoren unterscheiden zwei verschiedene
Jail-Arten: Komplette Jails, die ein echtes
&os; darstellen und Jails für einen bestimmten
Dienst, die nur einer bestimmten Anwendung
oder einem Dienst (der möglicherweise mit besonderen
Privilegien laufen soll) gewidmet sind. Dies ist aber nur
eine konzeptuelle Unterscheidung, die Einrichtung einer
Jail bleibt davon gänzlich unberührt.&prompt.root; setenv D /hier/ist/die/jail
&prompt.root; mkdir -p $D
&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make installworld DESTDIR=$D
&prompt.root; make distribution DESTDIR=$D
&prompt.root; mount -t devfs devfs $D/devDas Festlegen des Installationsorts für das Jail
eignet sich am besten als Startpunkt. Hier wird sich die
Jail innerhalb des Host-Dateisystems befinden. Eine gute
Möglichkeit wäre etwa /usr/jail/name_der_jail,
wobei name_der_jail den Hostname
darstellt, über den die Jail identifiziert werden
soll. Das Dateisystem unterhalb von /usr/ stellt normalerweise
aussreichend Platz für eine Jail zur Verfügung
(bedenken Sie, dass eine komplette Jail
ein Replikat einer jeden Datei der Standardinstallation des
&os;-Basissystems enthält.Wenn Sie bereits ihre Systemanwendungen mittels
make world oder make buildworld
neu erstellt haben, können Sie diesen Schritt überspringen
und die Systemanwendungen in die neue Jail installieren.Dieser Befehl wird den Verzeichnisbaum mit allen
notwendigen Binärdateien, Bibliotheken, Manualpages
usw. erstellen.Der distribution-Befehl
lässt make alle
benötigten Konfigurationsdateien installieren, es
werden also alle installierbaren Dateien aus
/usr/src/etc/ in
das Verzeichnis /etc
der Jail installiert (also nach $D/etc/).Das Einhängen des &man.devfs.8;-Dateisystems
innerhalb der Jail ist nicht unbedingt notwendig.
Allerdings benötigt fast jede Anwendung Zugriff auf
wenigstens ein Gerät. Es ist daher sehr wichtig,
den Zugriff auf Devices aus der Jail heraus zu
kontrollieren, da unsaubere Einstellungen es einem
Angreifer erlauben könnten, in das System einzudringen.
Die Kontrolle über &man.devfs.8; erfolgt durch die in
den Manualpages &man.devfs.8; und &man.devfs.conf.5;
beschriebenen Regeln.Ist eine Jail einmal erst erstellt, kann sie durch
&man.jail.8; gestartet werden. &man.jail.8; benötigt
zwingend mindestens vier Argumente, die im Abschnitt des Handbuchs beschrieben sind. Weitere
Argumente sind möglich, um beispielsweise die Jail mit den
Berechtigungen eines bestimmten Benutzers laufen zu lassen. Das
Argument
hängt vom Typ der Jail ab; für ein virtuelles
System ist /etc/rc eine gute
Wahl, da dies dem Startvorgang eines echten &os;-Systems
entspricht. Bei einer Service-Jail
hängt dieses von der Art des Dienstes ab, der in der Jail
laufen soll.Jails werden häufig mit dem Betriebssystem gestartet,
da der rc-Mechanismus von &os; dafür
eine einfach zu realisierende Möglichkeit bietet.Eine Liste der Jails, die mit dem Betriebssystem
gestartet werden sollen, wird in die Datei &man.rc.conf.5;
geschrieben:jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="www" # Space separated list of names of jailsDie Namen der Jails in der
jail_list sollten nur alphanumerische
Zeichen enthalten.Für jede Jail in der jail_list
sollten in &man.rc.conf.5; einige Einstellungen
vorgenommen werden:jail_www_rootdir="/usr/jail/www" # jail's root directory
jail_www_hostname="www.example.org" # jail's hostname
jail_www_ip="192.168.0.10" # jail's IP address
jail_www_devfs_enable="YES" # mount devfs in the jail
jail_www_devfs_ruleset="www_ruleset" # devfs ruleset to apply to jailBeim Start einer in &man.rc.conf.5; konfigurierten Jail
wird das /etc/rc-Skript der Jail (das
"annimmt", dass es sich in einem kompletten System befindet)
aufgerufen. Für Service-Jails sollten die Startskripte
der Jail durch das Setzen der Option
jail_jailname_exec_start
entsprechend angepasst werden.Eine vollständige Liste der Optionen findet sich
in der Manualpage zu &man.rc.conf.5;.&man.service.8; kann zum manuellen Starten und Stoppen der
Jail genutzt werden, wenn ein Eintrag in
rc.conf angelegt wurde:&prompt.root; service jail start www
&prompt.root; service jail stop wwwEs gibt momentan keinen sauberen Weg, eine &man.jail.8; zu
stoppen. Dies liegt daran, dass die Kommandos zum sauberen
Herunterfahren eines Systems innerhalb einer Jail nicht
ausgeführt werden können. Der beste Weg eine Jail zu
beenden ist es daher, innerhalb der Jail den folgenden Befehl
auszuführen (alternativ können Sie auch &man.jexec.8;
von außerhalb der Jail aufrufen):&prompt.root; sh /etc/rc.shutdownWeitere Informationen zu diesem Thema finden Sie in der
Manualpage &man.jail.8;.Feinabstimmung und AdministrationEs gibt verschiedene Optionen, die für jede Jail
gesetzt werden können und verschiedene Wege, ein
&os;-Host-System mit Jails zu kombinieren. Dieser Abschnitt
zeigt Ihnen:Einige zur Verfügung stehende Optionen zur
Abstimmung des Verhaltens und der Sicherheitseinstellungen,
die mit einer Jail-Installation ausgeführt werden
können.Einige der Anwendungsprogramme für das
Jail-Management, die über die &os; Ports-Sammlung
verfügbar sind und genutzt werden können, um
Jail-basierte Lösungen allumfassend umzusetzen.Systemwerkzeuge zur Feinabstimmung von Jails in &os;Die Feinabstimmung einer Jail-Konfiguration erfolgt zum
Großteil durch das Setzen von &man.sysctl.8;-Variablen.
Es gibt einen speziellen sysctl-Zweig, der als Basis für
die Organisation aller relevanten Optionen dient: Die
security.jail.*-Hierarchie der
&os;-Kerneloptionen. Die folgende Liste enthält alle
jail-bezogenen sysctls (inklusiver ihrer Voreinstellungen).
Die Namen sollten selbsterklärend sein, für
weitergehende Informationen lesen Sie bitte die Manualpages
&man.jail.8; und &man.sysctl.8;.security.jail.set_hostname_allowed:
1security.jail.socket_unixiproute_only:
1security.jail.sysvipc_allowed:
0security.jail.enforce_statfs:
2security.jail.allow_raw_sockets:
0security.jail.chflags_allowed:
0security.jail.jailed: 0Diese Variablen können vom Administrator des
Host-Systems genutzt werden, um
Beschränkungen hinzuzufügen oder aufzuheben, die dem
Benutzer root als Vorgabe auferlegt sind.
Beachten Sie, dass es einige Beschränkungen gibt, die nicht
verändert werden können. Der Benutzer
root darf innheralb der &man.jail.8; keine
Dateisysteme mounten und unmounten. Ebenso ist es ihm untersagt,
das &man.devfs.8;-Regelwerk zu laden oder zu entladen. Er darf
weder Firewallregeln setzen, noch administrative Aufgaben
erledigen, die Modifikationen am Kernel selbst erfordern
(wie bespielsweise das Setzen des Securelevels
des Kernel.Das &os;-Basissystem enthält einen Basissatz an
Werkzeugen, um Informationen über aktive Jails zu erlangen
und einer Jail administrative Befehle zuzuordnen. Die Befehle
&man.jls.8; und &man.jexec.8; sind Teil des &os;-Basissystems
und können für folgende Aufgaben verwendet werden:Das Anzeigen einer Liste der aktiven Jails und ihrer
zugehörigen Jail Identifier (JID),
ihrer IP-Addresse, ihres Hostnames und
ihres Pfades.Das Herstellen einer Verbindung mit einer laufenden
Jail, das Starten eines Befehls aus dem gastgebenen
System heraus oder das Ausführen einer administrativen
Aufgabe innerhalb der Jail selbst. Dies ist insbesondere
dann nützlich, wenn der Benutzer
root die Jail sauber herunterfahren
möchte. &man.jexec.8; kann auch zum Starten einer
Shell innerhalb der Jail genutzt werden, um adminstrative
Aufgaben durchzuführen:&prompt.root; jexec 1 tcshHigh-Level-Werkzeuge zur Jail-Administration in der &os;
Ports-SammlungUnter den zahlreichen Fremdwerkzeugen für die Administration
von Jails sind die sysutils/jailutils die
vollständigsten und brauchbarsten. Dabei handelt es sich um
eine Sammlung kleiner Anwendungen, die das &man.jail.8;-Management
vereinfachen. Weitere Informationen zu diesen Werkzeugen finden
Sie auf den entsprechenden Internetseiten.Anwendung von JailsService-JailsDanielGerzoBeigetragen von Dieser Abschnitt basiert auf einer von &a.simon.email; auf http://simon.nitro.dk/service-jails.html
präsentierten Idee und einem aktualisierten
Artikel von Ken Tom (locals@gmail.com). Er
beschreibt, wie ein &os;-System durch Benutzung der
&man.jail.8;-Funktion mit zusätzlichen
Sicherheitsebenen ausgestattet werden kann. Es wird dabei
angenommen, dass auf Ihrem &os;-System RELENG_6_0 oder neuer
installiert ist und dass Sie die Informationen aus den
vorangehenden Abschnitten gelesen und verstanden haben.DesignEines der Hauptprobleme bei Jails ist das Management
ihres Upgrade-Prozesses. Dieser neigt dazu, problematisch zu
sein, da jede Jail bei jedem Upgrade komplett neu gebaut
werden muss. Das stellt normalerweise kein Problem dar, wenn
es sich um eine einzelne Jail handelt, da der Upgrade-Prozess
recht einfach ist. Verwenden Sie aber eine größere
Anzahl von Jails, kann dieser Prozess sehr zeitaufwendig
werden.Diese Konfiguration erfordert fortgeschrittene
Kenntnisse im Umgang mit &os; sowie der Benutzung seiner
Funktionen. Sollten die unten vorgestellten Schritte zu
kompliziert wirken, wird empfohlen, sich einfachere Verfahren
wie sysutils/ezjail
anzusehen, da diese einfachere Methoden zur Administration
von Jails verwenden und daher nicht so anspruchsvoll sind
wie der hier beschriebene Aufbau.Diese Konfiguration basiert darauf, Jails so weit als
möglich gemeinsam zu verwalten. Dies passiert auf sichere
Art und Weise durch den Einsatz von &man.mount.nullfs.8;-Mounts
(read-only). Dadurch werden Aktualisierungen erleichtert und
das Verteilen von verschiedenen Diensten auf verschiedene
Jails wird attraktiver. Außerdem bietet dieses Verfahren
einen einfachen Weg, Jails hinzuzufügen, zu entfernen und
zu aktualisieren.Beispiele für Dienste sind in diesem
Zusammenhang: Ein HTTP-Server, ein
DNS-Server, ein
SMTP-Server und so weiter.Die Ziele des in diesem Abschnitt beschriebenen Aufbaus
sind:Das Erstellen einer einfachen und gut
verständlichen Struktur von Jails. Dies beinhaltet,
nicht für jede Jail ein
vollständiges installworld laufen lassen zu
müssen.Es einfach zu machen, neue Jails zu erstellen oder
alte zu entfernen.Es einfach zu machen, bestehende Jails zu
aktualisieren.Es einfach zu machen, einen angepassten &os;-Zweig zu
nutzen.Paranoid bezüglich Sicherheit zu sein und
Angriffsmöglickeiten weitgehend zu reduzieren.Soviel Platz und Inodes wie möglich
einzusparen.Wie bereits erwähnt, ist dieses Design stark darauf
angewiesen, dass eine read-only-Hauptvorlage in jede Jail
hinein gemountet wird (bekannt als
nullfs), und dass jede Jail
über wenigstens ein beschreibbares Gerät
verfügt. Das Gerät kann hierbei eine separate
physikalische Platte oder ein vnode unterstütztes
&man.md.4;-Gerät sein. Im folgenden Beispiel wird ein
nullfs-Mount genutzt, auf den
nur Lesezugriff erlaubt ist.Das Layout des Dateisystems wird in der folgenden Liste
beschrieben:Jede Jail wird unterhalb des /home/j-Verzeichnisses
gemountet./home/j/mroot
ist die Vorlage für jede Jail und die nur lesbare
Partition für alle Jails.Unterhalb von /home/j wird für jede
Jail ein leeres Verzeichnis angelegt.Jede Jail bekommt ein /s-Verzeichnis, das zum
read/write-Teilbereich des Systems verlinkt wird.Jede Jail bekommt ihr eigenes read/write-System,
das auf /home/j/skel basiert.Jeder Jailbereich (genauer der read/write-Teilbereich
jeder Jail) wird in /home/js erstellt.Es wird angenommen, dass die Jails sich unterhalb des
/home Verzeichnisses
befinden. Dieser Ort kann von Ihnen natürlich
geändert werden. Allerdings müssen die Pfade
in den folgenden Beispielen dann entsprechend angepasst
werden.Erstellen der VorlageDieser Abschnitt beschreibt die Schritte, die zum
Erstellen der Hauptvorlage (die den nur lesbaren Bereich
für alle weiteren Jails darstellt) notwendig sind.Es ist immer eine gute Idee, &os; auf den aktuellen
-RELEASE-Zweig zu aktualisieren. Lesen Sie das entsprechende
Kapitel des
Handbuchs für Informationen zu diesem Thema. Selbst wenn
Sie auf eine Aktualisierung des Betriebssystems verzichten,
müssen Sie dennoch ein buildworld durchführen, um
fortfahren zu können. Außerdem müssen Sie
das Paket sysutils/cpdup
installiert sein. In diesem Beispiel wird &man.portsnap.8;
verwendet, um die aktuelle &os; Ports-Sammlung herunterzuladen.
- Der Abschnitt Portsnap des
- Handbuchs beschreibt, wie Sie dieses Werkzeug effektiv
+ Der Abschnitt Portsnap
+ des Handbuchs beschreibt, wie Sie dieses Werkzeug effektiv
einsetzen.Zuerst erstellen wir eine Verzeichnissstruktur
für das read-only-Dateisystem, das die
&os;-Binärdateien für unsere Jails enthalten
wird. Anschließend wechseln wir in den
&os;-Quellcodebaum und installieren das
read-only-Dateisystem in die (Vorlage-)Jail.&prompt.root; mkdir /home/j /home/j/mroot
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mrootAls nächstes bereiten wir die Ports-Sammlung
fü die Jails vor und kopieren den &os; Quellcodebaum
in die Jail, da dieser für
mergemaster benötigt wird:&prompt.root; cd /home/j/mroot
&prompt.root; mkdir usr/ports
&prompt.root; portsnap -p /home/j/mroot/usr/ports fetch extract
&prompt.root; cpdup /usr/src /home/j/mroot/usr/srcDanach wird die Struktur für den
read/write-Bereich des Systems erstellt:&prompt.root; mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles
&prompt.root; mv etc /home/j/skel
&prompt.root; mv usr/local /home/j/skel/usr-local
&prompt.root; mv tmp /home/j/skel
&prompt.root; mv var /home/j/skel
&prompt.root; mv root /home/j/skelNutzen Sie mergemaster, um
fehlende Konfigurationsdateien zu installieren.
Anschließend werden die von
mergemaster erstellten
Extra-Verzeichnisse entfernt:&prompt.root; mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
&prompt.root; cd /home/j/skel
&prompt.root; rm -R bin boot lib libexec mnt proc rescue sbin sys usr devNun wird das read/write-Dateisystem mit dem
read-only-Dateisystem verlinkt. Bitte vergewissern Sie
sich, dass die symbolischen Links an den korrekten
s/ Positionen
erstellt werden. Echte Verzeichnisse oder an falschen
Positionen erstellte Verzeichnisse lassen die Installation
fehlschlagen.&prompt.root; cd /home/j/mroot
&prompt.root; mkdir s
&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/home home
&prompt.root; ln -s s/root root
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s ../../s/distfiles usr/ports/distfiles
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var varZuletzt erstellen Sie eine allgemeine
/home/j/skel/etc/make.conf mit
folgendem Inhalt:WRKDIRPREFIX?= /s/portbuildEin gesetztes WRKDIRPREFIX
erlaubt es, die &os;-Ports innerhalb jeder Jail
zu kompilieren. Das Ports-Verzeichnis ist Teil des
read-only System. Der angepasste Pfad des
WRKDIRPREFIX macht es möglich,
innerhalb des read/write-Bereichs der Jail Ports zu
bauen.Jails erstellenDa nun eine komplette &os;-Jailvorlage vorliegt, sind wir
nun in der Lage, Jails einrichten und in
/etc/rc.conf zu konfigurieren. Dieses
Beispiel zeigt das Erstellen von drei Jails:
NS, MAIL und
WWW.Fügen Sie die folgenden Zeilen in
/etc/fstab ein, damit die
read-only-Vorlage und der read/write-Bereich für
alle Jails verfügbar sind:/home/j/mroot /home/j/ns nullfs ro 0 0
/home/j/mroot /home/j/mail nullfs ro 0 0
/home/j/mroot /home/j/www nullfs ro 0 0
/home/js/ns /home/j/ns/s nullfs rw 0 0
/home/js/mail /home/j/mail/s nullfs rw 0 0
/home/js/www /home/j/www/s nullfs rw 0 0Mit der Pass-Nummer 0 markierte Partitionen werden
beim Booten des Systems nicht von &man.fsck.8;
geprüft, mit 0 als Dump-Nummer markierte Partitonen
werden von &man.dump.8; nicht gesichert. Wir wollen
nicht, dass fsck unsere
nullfs-Mounts prüft oder
dass dump die nur lesbaren
nullfs-Mounts unserer Jails sichert. Deshalb werden
diese Bereiche in den letzten beiden Spalten der
obenstehenden fstab mit
0 0 markiert.Konfigurieren Sie die Jails in
/etc/rc.conf:jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="ns mail www"
jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
jail_ns_rootdir="/usr/home/j/ns"
jail_ns_devfs_enable="YES"
jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
jail_mail_rootdir="/usr/home/j/mail"
jail_mail_devfs_enable="YES"
jail_www_hostname="www.example.org"
jail_www_ip="62.123.43.14"
jail_www_rootdir="/usr/home/j/www"
jail_www_devfs_enable="YES"Der Grund dafür, dass die Variablen
jail_name_rootdir
nach /usr/home
statt nach /home
zeigen, liegt darin, dass der physikalische Pfad des
/home-Verzeichnisses unter
&os; /usr/home
lautet. Die Variable
jail_name_rootdir
darf im Pfad aber keinen symbolischen
Link enthalten, weil das Jail ansonsten
nicht gestartet werden kann. Verwenden Sie
&man.realpath.1;, um den korrekten Wert für diese
Variable zu bestimmen. Weitere Informationen finden
Sie im Security Advisory &os;-SA-07:01.jail.Erstellen Sie die notwendigen Mountpunkte für
die nur lesbaren Bereiche jeder Jail:&prompt.root; mkdir /home/j/ns /home/j/mail /home/j/wwwInstallieren Sie die read/write-Vorlage in jede
Jail. Benutzen Sie hierfür sysutils/cpdup, welches es
erleichtert, eine korrekte Kopie jedes Verzeichnisses
zu erstellen:&prompt.root; mkdir /home/js
&prompt.root; cpdup /home/j/skel /home/js/ns
&prompt.root; cpdup /home/j/skel /home/js/mail
&prompt.root; cpdup /home/j/skel /home/js/wwwAn dieser Stelle werden die Jails erstellt und
fü den Betrieb vorbereitet. Zuerst mounten Sie die
notwendigen Dateisysteme für jede Jail und starten
diese dann mit dem jail rc-Skript.&prompt.root; mount -a
&prompt.root; service jail startDie Jails sollten nun laufen. Um zu prüfen, ob sie
korrekt gestartet wurden, verwenden Sie &man.jls.8;. Nach
dem Aufruf dieses Befehls sollten Sie eine Ausgabe
ähnlich der folgenden erhalten:&prompt.root; jls
JID IP Address Hostname Path
3 192.168.3.17 ns.example.org /home/j/ns
2 192.168.3.18 mail.example.org /home/j/mail
1 62.123.43.14 www.example.org /home/j/wwwAn diesem Punkt sollte es möglich sein, sich an
jeder Jail anzumelden, Benutzer anzulegen und Dienste zu
konfigurieren. Die Spalte JID gibt die
Jail-Identifikationsnummer jeder laufenden Jail an. Nutzen Sie
den folgenden Befehl, um administrative Aufgaben in der Jail
mit der JID 3 durchzuführen:&prompt.root; jexec 3 tcshJails aktualisierenMit der Zeit wird es notwendig sein, das System auf
eine neuere Version von &os; zu aktualisieren. Zum einen aus
Sicherheitsgründen, zum anderen, um neu eingeführte
Funktionen nutzen zu können, die für die bestehenden
Jails sinnvoll sind. Das Design dieses Aufbaus bietet einen
einfachen Weg, bestehende Jails zu aktualisieren. Zudem
reduziert es die Downtime, da die Jails erst im allerletzten
Schritt gestoppt werden müssen. Außerdem bietet
es die Möglichkeit, zu älteren Versionen
zurückzukehren, falls irgendwelche Probleme auftreten.Im ersten Schritt wird das Host-System aktualisiert.
Anschließend wird eine temporäre neue
read-only Vorlage /home/j/mroot2 erstellt.&prompt.root; mkdir /home/j/mroot2
&prompt.root; cd /usr/src
&prompt.root; make installworld DESTDIR=/home/j/mroot2
&prompt.root; cd /home/j/mroot2
&prompt.root; cpdup /usr/src usr/src
&prompt.root; mkdir sDer installworld-Durchlauf
erzeugt einige unnötige Verzeichnisse, die nun entfernt
werden sollten:&prompt.root; chflags -R 0 var
&prompt.root; rm -R etc var root usr/local tmpErzeugen Sie neue symbolische Links für das
Hauptdateisystem:&prompt.root; ln -s s/etc etc
&prompt.root; ln -s s/root root
&prompt.root; ln -s s/home home
&prompt.root; ln -s ../s/usr-local usr/local
&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6
&prompt.root; ln -s s/tmp tmp
&prompt.root; ln -s s/var varNun ist es an der Zeit, die Jails zu stoppen:&prompt.root; service jail stopUnmounten des originalen Dateisystems:&prompt.root; umount /home/j/ns/s
&prompt.root; umount /home/j/ns
&prompt.root; umount /home/j/mail/s
&prompt.root; umount /home/j/mail
&prompt.root; umount /home/j/www/s
&prompt.root; umount /home/j/wwwDie read/write-Systeme sind an das read-only
System angehängt (/s), das daher zuerst
ausgehängt werden muss.Verschieben Sie das alte read-only-Dateisystem und
ersetzen Sie es durch das neue Dateisystem. Das alte
Dateisystem kann so als Backup dienen, falls etwas schief
geht. Die Namensgebung entspricht hier derjenigen bei der
Erstellung eines neuen read-only-Dateisystems. Verschieben
Sie die originale &os; Ports-Sammlung in das neue
Dateisystem, um Platz und Inodes zu sparen:&prompt.root; cd /home/j
&prompt.root; mv mroot mroot.20060601
&prompt.root; mv mroot2 mroot
&prompt.root; mv mroot.20060601/usr/ports mroot/usrNun ist die neue read-only-Vorlage fertig. Sie
müssen daher nur noch die Dateisysteme erneut mounten
und die Jails starten:&prompt.root; mount -a
&prompt.root; service jail startNutzen Sie &man.jls.8; um zu prüfen, ob die Jails
korrekt gestartet wurden. Vergessen Sie nicht, innerhalb jeder
Jail mergemaster laufen zu lassen. Die
Konfigurationsdateien müssen (ebenso wie die
rc.d-Skripten) aktualisiert werden.
Index: head/de_DE.ISO8859-1/books/handbook/ports/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/ports/chapter.xml (revision 48014)
+++ head/de_DE.ISO8859-1/books/handbook/ports/chapter.xml (revision 48015)
@@ -1,2004 +1,2001 @@
Installieren von Anwendungen: Pakete und PortsUwePierauÜbersetzt von ÜbersichtPortsPakete&os; enthält eine umfassende Sammlung von Systemwerkzeugen,
die Teil des Basissystems sind. Allerdings ist man früher oder
später auf Software Dritter angewiesen, damit bestimmte Arbeiten
durchgeführt werden können. Um diese Software zu installieren,
stellt &os; zwei sich ergänzende Methoden zur
Verfügung: Die Ports-Sammlung (zur Installation aus dem
Quellcode) sowie Pakete (auch als
Packages bezeichnet, zur
Installation von vorkompilierten binären Softwarepaketen).
Beide Methoden können benutzt werden, um Anwendungen von lokalen
Medien oder über das Netzwerk zu installieren.Dieses Kapitel behandelt die folgenden Themen:Die Installation binärer Softwarepakete.Der Bau Software Dritter aus dem Quellcode mithilfe der
Ports-Sammlung.Wie zuvor installierte Pakete oder Ports
entfernt werden.Wie die Voreinstellungen der Ports-Sammlung
überschrieben werden können.Die Suche nach geeigneter Software.Wie Anwendungen aktualisiert werden.Installation von SoftwareDie typischen Schritte zur Installation von
Drittanbieter-Software auf einem &unix; System sind:Download der Software, die als Quelltext oder im
Binärformat vorliegen kann.Auspacken der Software, die typischerweise ein mit
&man.compress.1;, &man.gzip.1; oder &man.bzip2.1;
komprimiertes Tar-Archiv enthält.Durchsuchen der Dokumentation, die sich in
INSTALL, README
oder mehreren Dateien im Verzeichnis
doc/ befindet, nach Anweisungen, wie
die Software zu installieren ist.Kompilieren der Software wenn sie als Quelltext vorliegt.
Dazu müssen Sie vielleicht das Makefile
anpassen, oder configure laufen lassen, oder
andere Arbeiten durchführen.Testen und installieren der Software.Wenn Sie Software installieren, die nicht speziell für
&os; geschrieben wurde, müssen Sie vielleicht sogar den
Quelltext anpassen, damit die Software funktioniert.&os; bietet zwei Technologien an, die diese Schritte für Sie
durchführen. Zurzeit werden über &os.numports; Anwendungen
Dritter zur Verfügung gestellt.Ein &os;-Paket enthält vorkompilierte Kopien aller Befehle
für eine Anwendung, sowie zusätzliche Konfigurationsdateien und
Dokumentation. Zur Handhabung der Pakete stellt &os; Kommandos
wie &man.pkg.add.1;, &man.pkg.delete.1; und &man.pkg.info.1; zur
Verfügung.Ein &os;-Port ist eine Sammlung von Dateien, die das
Kompilieren der Quelltexte einer Anwendung automatisieren. Die
Dateien, die ein Port umfasst enthalten alle notwendigen
Informationen um die Anwendung herunterzuladen, zu extrahieren,
anzupassen und zu installieren.Das Portsystem kann auch dazu benutzt werden, Pakete zu
generieren, die mit den Paketverwaltungswerkzeugen von &os;
manipuliert werden können.Pakete und Ports beachten
Abhängigkeiten zwischen Anwendungen.
Wenn &man.pkg.add.1; oder die Ports-Sammlung benutzt wird,
um eine Anwendung zu installieren, dann werden fehlende
Bibliotheken zuerst installiert, sofern sie nicht schon vorher
installiert waren.Obwohl beide Technologien recht ähnlich sind, so haben
Pakete und Ports jeweils ihre eigenen Stärken. Welche
Technologie eingesetzt wird, hängt letzten Endes von den
Anforderungen ab, die an eine bestimmte Anwendung gestellt
werden.Vorteile von PaketenDas komprimierte Paket einer Anwendung ist normalerweise
kleiner als das komprimierte Archiv der Quelltexte.Pakete müssen nicht mehr kompiliert werden. Dies ist
ein Vorteil, wenn große Pakete wie
Mozilla,
KDE oder
GNOME auf langsamen Maschinen
installiert werden.Wenn Sie Pakete verwenden, brauchen Sie nicht zu
verstehen, wie Software unter &os; kompiliert wird.Vorteile von PortsDa die Pakete auf möglichst vielen System laufen sollen,
werden Optionen beim Übersetzen zurückhaltend gesetzt.
Wird eine Anwendung über die Ports übersetzt, können die
Optionen nach eigenen Bedürfnissen angepasst werden.Die Eigenschaften einiger Anwendungen werden über
Optionen zum Zeitpunkt des Übersetzens festgelegt.
Apache kann zum Beispiel über
eine große Auswahl an eingebauten Optionen konfiguriert
werden.Für einige Fälle existieren verschiedene
Pakete einer Anwendung, die beim Übersetzen
unterschiedlich konfiguriert wurden. Für
Ghostscript gibt es ein
ghostscript-Paket und ein
ghostscript-nox11-Paket, die sich durch
die Xorg Unterstützung
unterscheiden. Das Erstellen von verschiedenen Paketen wird
aber schnell unhandlich, wenn eine Anwendung mehr als ein
oder zwei Optionen zum Zeitpunkt des Übersetzens
besitzt.Die Lizenzbestimmungen mancher Software verbietet ein
Verbreiten in binärer Form. Diese Software muss als
Quelltext, der durch den Benutzer kompiliert werden muss,
ausgeliefert werden.Einige Leute trauen binären Distributionen nicht, oder
sie ziehen es vor den Quelltext zu lesen, um diesen nach
möglichen Problemen zu durchsuchen.Wenn Sie eigene Anpassungen besitzen, benötigen Sie den
Quelltext, um diese anzuwenden.Wenn Sie über aktualisierte Ports informiert sein wollen,
lesen Sie die Mailinglisten &a.ports; und &a.ports-bugs;.Bevor Sie eine Anwendung installieren, informieren Sie
sich auf der Seite http://vuxml.FreeBSD.org/
über mögliche Sicherheitsprobleme mit der Anwendung, oder
installieren Sie ports-mgmt/portaudit.
Installierte Anwendungen können mit
portaudit -F -a auf bekannte
Sicherheitsprobleme untersucht werden.Der Rest dieses Kapitels beschreibt, wie man Software
Dritter mit Paketen und Ports unter &os; installiert und
verwaltet.Suchen einer AnwendungDie Anzahl der nach &os; portierten Anwendungen steigt
ständig. Es gibt einige Wege, um nach Anwendungen zu
suchen:Die &os;-Webseite stellt unter
http://www.FreeBSD.org/ports/
eine aktuelle und durchsuchbare Liste aller Anwendungen zur
Verfügung. Die Ports können nach dem Namen den Anwendung,
oder über die Software-Kategorie durchsucht werden.FreshPortsDan Langille verwaltet FreshPorts,
das eine umfassende Suchfunktion bietet und Änderungen an
den Anwendungen in der Ports-Sammlung verfolgt.
Registrierte Benutzer können eine Merkliste erstellen, um
automatisch eine E-Mail zu erhalten, sobald ein Port von
dieser Liste aktualisiert wurde.FreecodeWenn Sie den Namen einer Anwendung nicht kennen, versuchen
Sie eine Webseite wie Freecode.com,
um eine passende Anwendung zu finden. Schauen Sie dann auf der
&os;-Webseite nach, ob die Anwendung schon portiert
wurde.Verwenden Sie
whereis Datei
um herauszufinden, in welcher Kategorie ein Port ist, wobei
Datei der Name des Programms ist,
das installiert werden soll:&prompt.root; whereis lsof
lsof: /usr/ports/sysutils/lsofAlternativ kann der &man.echo.1;-Befehl verwendet
werden:&prompt.root; echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsofBeachten Sie aber, dass dieser Befehl auch alle Dateien
im Verzeichnis /usr/ports/distfiles
findet, auf die der angegebene Suchbegriff passt.Ein weiterer Weg nach Software zu suchen besteht darin,
die eingebaute Suchfunktion der Ports-Sammlung zu benutzen.
Wechseln Sie dazu in das Verzeichnis
/usr/ports, und rufen Sie make
search name=Anwendungsname auf, wobei
Anwendungsname der Name der
Software ist. Um zum Beispiel nach lsof
zu suchen:&prompt.root; cd /usr/ports
&prompt.root; make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: Die Path:-Zeile zeigt an, wo der Port zu
finden ist.Um weniger Informationen zu erhalten, benutzen Sie die
Funktion quicksearch:&prompt.root; cd /usr/ports
&prompt.root; make quicksearch name=lsof
Port: lsof-4.87.a,7
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))Erweiterte Suchen führen Sie mit
make search
key=Text oder
make quicksearch
key=Text aus. Damit
werden Portnamen, Kommentare, Beschreibungen und
Abhängigkeiten nach Text
durchsucht. Dies kann sehr nützlich sein, wenn der
Name des Programms nicht bekannt ist.Bei der Verwendung von search
und quicksearch wird Groß- und
Kleinschreibung bei der Suche ignoriert. Die Suche nach
LSOF wird dieselben Ergebnisse wie die Suche
nach lsof liefern.Verwendung von BinärpaketenChernLeeBeigesteuert von Es gibt viele unterschiedliche Werkzeuge um Pakete in &os;
zu verwalten:Auf einem laufenden System kann sysinstall
benutzt werden, um Pakete zu installieren, zu löschen und
verfügbare und installierte anzuzeigen. Weitere Informationen
finden Sie unter .Die Paketverwaltungswerkzeuge der Kommandozeile sind die
Themen von diesem Kapitel.Installieren eines PaketsPaketeinstallierenpkg_addBenutzen Sie &man.pkg.add.1;, um ein &os;-Paket von einer
lokalen Datei oder über das Netzwerk installieren.Download vor Installation eines Pakets&prompt.root; ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp>get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp>exit
&prompt.root; pkg_add lsof-4.56.4.tgzWenn Sie die Pakete nicht lokal vorliegen haben, zum Beispiel
auf den &os;-CD-ROMs, verwenden Sie den
Schalter von &man.pkg.add.1;. Dies
bestimmt automatisch das nötige Objektformat und
die richtige Version des Pakets, lädt dieses dann von einem
FTP-Server und installiert es, ohne das weitere
Benutzereingriffe nötig sind.pkg_add&prompt.root; pkg_add -r lsofWenn Sie einen anderen &os; FTP-Mirror verwenden möchten,
geben Sie den Mirror in der Umgebungsvariablen
PACKAGESITE an. &man.pkg.add.1; benutzt
&man.fetch.3;, um Dateien herunterzuladen. Umgebungsvariablen wie
FTP_PASSIVE_MODE, FTP_PROXY und
FTP_PASSWORD werden dabei berücksichtigt.
Wenn Sie durch eine Firewall geschützt werden, müssen Sie
vielleicht eine oder mehrere dieser Umgebungsvariablen setzen oder
einen FTP oder HTTP Proxy verwenden. Eine Liste der
unterstützten Umgebungsvariablen finden Sie in &man.fetch.3;.
Beachten Sie, dass im obigen Beispiel lsof
anstelle von lsof-4.56.4 verwendet wird. Wenn
Sie &man.pkg.add.1; zum Herunterladen eines Pakets verwenden, darf
die Versionsnummer des Pakets nicht angegeben werden.Unter &os.current; oder &os.stable; holt &man.pkg.add.1;
die neueste Version einer Anwendung. Unter einer -RELEASE
Version holt es die Version der Anwendung, die
im Release enthalten ist. Sie können dieses Verhalten
ändern, indem Sie die Umgebungsvariable
PACKAGESITE überschreiben. Auf einem
&os; 8.1-RELEASE System, versucht
&man.pkg.add.1; in der Voreinstellung die Pakete von
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/
zu laden. Um &man.pkg.add.1; zu zwingen, nur
&os; 8-STABLE-Pakete herunterzuladen, setzen Sie
PACKAGESITE auf
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/.Pakete werden im .tgz- und
.tbz-Format ausgeliefert. Sie sind unter
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/,
oder auf der &os;-DVD-Distribution. Die Struktur des
Paketbaums entspricht der Verzeichnisstruktur unter
/usr/ports. Jede Kategorie besitzt ein
eigenes Verzeichnis und alle Pakete befinden sich im
Verzeichnis All.Verwalten von PaketenPaketeverwalten&man.pkg.info.1; kann dazu benutzt werden, alle
installierten Pakete und deren Beschreibung anzuzeigen.pkg_info&prompt.root; pkg_info
colordiff-1.0.13 A tool to colorize diff output
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...&man.pkg.version.1; vergleicht die Version installierter Pakete
mit der Version aus der Ports-Sammlung.pkg_version&prompt.root; pkg_version
colordiff =
docbook =
...Die Symbole in der zweiten Spalte zeigen das Alter des Pakets
im Vergleich zu der lokalen Version aus der Ports-Sammlung an.SymbolBedeutung=Die Version des installierten Paketes stimmt mit der
Version aus der lokalen Ports-Sammlung überein.<Die installierte Version ist älter als die der
verfügbaren Version aus der lokalen
Ports-Sammlung.>Die installierte Version ist neuer als die aus
der Ports-Sammlung, was vermutlich bedeutet, dass
die lokale Ports-Sammlung veraltet ist.?Das installierte Paket konnte im Ports-Index
nicht gefunden werden. Dies kann passieren, wenn ein
installierter Port aus der Ports-Sammlung entfernt
wurde oder einen neuen Namen erhalten hat.*In der Ports-Sammlung befinden sich mehrere Versionen
der Anwendung.!Das installierte Paket ist zwar im Index enthalten,
aus irgendeinem Grund war pkg_version
aber dennoch nicht in der Lage, die Versionsnummer des
installierten Pakets mit der Versionsnummer des
entsprechenden Eintrags im Index zu vergleichen.Entfernen eines Paketspkg_deletePaketeentfernenUm ein zuvor installiertes Paket zu entfernen, benutzen
Sie &man.pkg.delete.1;.&prompt.root; pkg_delete xchat-1.7.1Beachten Sie, dass &man.pkg.delete.1; die vollständige
Bezeichnung des Pakets benötigt. Die Eingabe von
xchat anstelle von
xchat-1.7.1 wäre im obigen Beispiel
daher nicht ausreichend. Benutzen Sie &man.pkg.version.1;, um
die Versionsnummer des Pakets herausfinden, oder verwenden Sie
Wildcards:&prompt.root; pkg_delete xchat\*In diesem Beispiel werden alle Pakete gelöscht, deren
Name mit xchat beginnt.VerschiedenesAlle Paketinformationen, einschließlich der
Beschreibungen, werden im Verzeichnis
/var/db/pkg abgelegt.Benutzen von pkgng zur
Verwaltung von Binärpaketenpkgng ist ein verbesserter
Ersatz für die traditionellen Paketverwaltungswerkzeuge
von &os;. Es bietet viele Funktionen, um den Umgang mit
Binärpaketen schneller und einfacher zu gestalten.
pkgng wurde erstmalig
im August 2012 veröffentlicht.pkgng ist kein Ersatz für die
Portverwaltungswerkzeuge wie
ports-mgmt/portmaster oder
ports-mgmt/portupgrade. Während
ports-mgmt/portmaster und
ports-mgmt/portupgrade Drittanbieter-Software
sowohl aus Binärpaketen als auch aus den Ports installieren
kann, so installiert pkgng
ausschließlich Binärpakete.Erste Schritte mit
pkgng&os; 9.1 und nachfolgende Versionen enthalten ein
"Bootstrap"-Programm für
pkgng. Das Bootstrap-Programm
lädt und installiert pkgng.Um das Bootstrap Programm zu starten, geben Sie folgendes
ein:&prompt.root; /usr/sbin/pkgFür ältere Versionen von &os; muss
pkgng zunächst aus der
Ports-Sammlung oder als Paket installiert werden.Um pkgng aus den Ports zu
installieren, geben Sie folgendes ein:&prompt.root; cd /usr/ports/ports-mgmt/pkg
&prompt.root; make
&prompt.root; make install cleanUm das Paket zu installieren, geben Sie folgendes
ein:&prompt.root; pkg_add -r pkgBestehende &os; Installationen benötigen eine
Konvertierung der
pkg_install-Paketdatenbank in das
neue Format. Um die Paketdatenbank zu konvertieren, geben Sie
folgendes ein:&prompt.root; pkg2ngAuf neu installieren Systemen, auf denen noch keine
Software von Drittanbietern installiert wurde, kann dieser
Schritt entfallen.Die Konvertierung ist unwiderruflich. Sobald die
Paketdatenbank in das Format von
pkgng umgewandelt wurde, sollten
die traditionellen pkg_install
Werkzeuge nicht mehr benutzt werden.Bei der Konvertierung der Paketdatenbank können Fehler
ausgegeben werden, wenn die Inhalte auf die neue Version
umgewandelt werden. Im Allgemeinen können diese Fehler
ignoriert werden. Wenn pkg2ng
fertig ist, wird eine Liste von Drittanbieter-Software
ausgegeben, die nicht erfolgreich konvertiert werden konnte.
Diese Anwendungen müssen manuell neu installiert
werden.Um sicherzustellen, dass die &os; Ports-Sammlung neue
Pakete mit pkgng und nicht mit
pkg_install registriert, muss in
&os; 10.X und früheren
Versionen folgende Zeile in
/etc/make.conf hinzugefügt werden:WITH_PKGNG= yesKonfiguration der pkgng
UmgebungDas pkgng
Paketverwaltungssystem benutzt für die meisten Operationen ein
Paket-Repository. Der Speicherort des Paket-Repositories wird
in /usr/local/etc/pkg.conf oder der
Umgebungsvariablen PACKAGESITE
definiert.Weitere Konfigurationsoptionen für
pkgng sind in &man.pkg.conf.5;
beschrieben.Grundlegende Bedienung von
pkgngInformationen zur Bedienung von
pkgng ist in der Manualpage
&man.pkg.8; verfügbar. Alternativ kann pkg
ohne zusätzliche Argumente aufgerufen werden.Jedes Argument von pkgng ist in
seiner spezifischen Manualpage dokumentiert. Um
beispielsweise die Manualpage von
pkg install zu lesen, geben Sie einen der
folgenden Befehle ein:&prompt.root; pkg help install&prompt.root; man pkg-installMit pkgng Informationen über
installierte Pakete anzeigenInformationen über bereits installierte Pakete können
mit pkg info angezeigt werden. Dabei
wird die Version und die Beschreibung aller Pakete
ausgegeben.Informationen zu einem bestimmten Paket können wie folgt
angezeigt werden:&prompt.root; pkg info paketnameUm zu ermitteln welche Version von
pkgng installiert ist, geben Sie
folgendes ein:&prompt.root; pkg info pkg
pkg-1.0.2 New generation package managerInstallation und Deinstallation von Paketen mit
pkgngIn der Regel werden Benutzer von &os; Binärpakete wie
folgt installieren:&prompt.root; pkg install paketnamepkg install benutzt das in
erwähnte Repository.
Im Gegensatz dazu benutzt &man.pkg-add.8; kein Repository,
oder eine definierte PACKAGESITE, so dass
Abhängigkeiten nicht ordnungsgemäß aufgelöst und fehlende
Abhängigkeiten nicht von entfernten Systemen
heruntergeladen werden. Dieser Abschnitt beschreibt die
Bedienung von pkg install. Informationen
zur Bedienung von pkg add finden Sie in
&man.pkg-add.8;.Zusätzliche Binärpakete können mit
pkg intall installiert werden. Um
beispielsweise curl zu
installieren:&prompt.root; pkg install curl
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:
Installing ca_root_nss: 3.13.5
Installing curl: 7.24.0
The installation will require 4 MB more space
1 MB to be downloaded
Proceed with installing packages [y/N]: y
ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Installing ca_root_nss-3.13.5... done
Installing curl-7.24.0... doneDas neue Paket und jedes weitere Paket, das als
Abhängigkeit installiert wurde, ist in der Liste der
installierten Pakete zu sehen:&prompt.root; pkg info
ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.0.2 New generation package managerWird ein Paket nicht mehr benötigt, kann es mit
pkg delete entfernt werden. Wenn
beispielsweise curl nicht mehr
benötigt wird:&prompt.root; pkg delete curl
The following packages will be deleted:
curl-7.24.0_1
The deletion will free 3 MB
Proceed with deleting packages [y/N]: y
Deleting curl-7.24.0_1... doneInstallierte Pakete mit
pkgng aktualisierenPakete die nicht mehr aktuell sind, können mit
pkg version gefunden werden.
&man.pkg-version.8; nutzt zur Identifikation der
Paketversionen die lokale Ports-Sammlung, falls diese
installiert ist. Ansonsten wird dazu das entfernte
Repository benutzt.Pakete können mit pkgng auf
neue Versionen aktualisiert werden. Wenn eine neue Version
von curl veröffentlicht wurde,
kann das lokale Paket auf die neue Version aktualisiert
werden:&prompt.root; pkg upgrade
Updating repository catalogue
repo.txz 100% 297KB 296KB/s 296KB/s 00:00
The following packages will be upgraded:
Upgrading curl: 7.24.0 -> 7.24.0_1
1 MB to be downloaded
Proceed with upgrading packages [y/N]: y
curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Upgrading curl from 7.24.0 to 7.24.0_1... doneInstallierte Pakete mit
pkgng auditierenGelegentlich werden Sicherheitslücken in einer
Software innerhalb der Ports-Sammlung entdeckt.
pkgng besitzt ein eingebautes
Auditing, was mit dem Paket
ports-mgmt/portaudit vergleichbar ist.
Um die auf dem System installierte Software zu prüfen, geben
Sie folgenden Befehl ein:&prompt.root; pkg audit -FFortgeschrittene Arbeiten mit
pkgngAutomatisches Entfernen von nicht mehr benötigten
Abhängigkeiten mit pkgngDas Entfernen eines Pakets kann möglicherweise unnötige
Abhängigkeiten hinterlassen, wie im obigen Beispiel
ca_root_nss. Solche Pakete sind zwar
noch installiert, aber keine weiteren Pakete hängen mehr von
ihnen ab. Unnötige Pakete, die als Abhängigkeit von anderen
Paketen installiert wurden, können automatisch erfasst und
entfernt werden:&prompt.root; pkg autoremove
Packages to be removed:
ca_root_nss-3.15.5
The autoremoval will free 723 kB
Proceed with autoremoval of packages [y/N]: y
Deinstalling ca_root_nss-3.13.5... doneSicherung der pkgng
DatenbankIm Gegensatz zum alten Paketverwaltungssystem beinhaltet
pkgng einen eigenen Mechanismus
zur Sicherung der Paketdatenbank. Um den Inhalt der
Datenbank manuell zu sichern, geben Sie folgendes
ein:&prompt.root; pkg backup -d pkgng.dbErsetzen Sie den Dateinamen
pkgng.db durch einen geeigneten
Dateinamen.Zusätzlich verfügt pkgng über
ein &man.periodic.8;-Skript, das automatisch eine tägliche
Sicherung der Paketdatenbank erstellt, wenn in
&man.periodic.conf.5;
daily_backup_pkgng_enable auf
YES gesetzt ist.Um pkg_install daran zu
hindern, ebenfalls eine Sicherung der Paketdatenbank zu
erstellen, muss in &man.periodic.conf.5;
daily_backup_pkgdb_enable auf
NO gesetzt werden.Um den Inhalt einer früheren Paketdatenbank
wiederherzustellen, geben Sie folgendes ein:&prompt.root; pkg backup -r /path/to/pkgng.dbAlte Pakete mit pkgng
entfernenStandardmäßig speichert pkgng
Pakete in einem Cache-Verzeichnis, welches in
&man.pkg.conf.5; in der Variablen
PKG_CACHEDIR definiert wird. Beim Upgrade
der Pakete mit pkg upgrade, werden die
alten Versionen der Pakete nicht automatisch
entfernt.Um veraltete Pakete zu entfernen, geben Sie folgendes
ein:&prompt.root; pkg cleanManipulation der pkgng Paket
MetadatenBei Software aus der &os; Ports-Sammlung kann es
vorkommen, dass die Hauptversionsnummer geändert wird. Im
Gegensatz zu pkg_install hat
pkgng ein eingebautes Kommando,
um die Quelle eines Pakets zu aktualisieren. Wenn zum
Beispiel lang/php5 ursprünglich die
Version 5.3 hatte, nun aber in
lang/php53 umbenannt wurde, um die
Version 5.4 zu integrieren, dann hätte
pkg_install zusätzliche Software,
wie beispielsweise ports-mgmt/portmaster
benötigt, um die Quelle des Pakets in der Paketdatenbank
zu aktualisieren.Bei ports-mgmt/portmaster und
ports-mgmt/portupgrade unterscheidet sich
die Ausgabe bei der Auflistung von neuen und alten
Versionen. Für pkgng lautet die
Syntax:&prompt.root; pkg set -o category/oldport:category/newportUm die Quelle des Pakets für das obige Beispiel zu
ändern, geben Sie folgendes ein:&prompt.root; pkg set -o lang/php5:lang/php53Ein weiteres Beispiel:
Um lang/ruby18 auf
lang/ruby19 zu aktualisieren, geben Sie
folgendes ein:&prompt.root; pkg set -o lang/ruby18:lang/ruby19In diesem letzten Beispiel wird die Quelle der
Bibliotheken von libglut von
graphics/libglut auf
graphics/freeglut geändert:&prompt.root; pkg set -o graphics/libglut:graphics/freeglutBei dem Wechsel einer Paketquelle ist es in den
meisten Fällen notwendig, die Pakete neu zu installieren,
welche von dem Paket abhängig sind, welches seine
Paketquelle geändert hat. Um eine Neuinstallation von
abhängigen Paketen zu erzwingen, führen Sie folgenden
Befehl aus:&prompt.root; pkg install -Rf graphics/freeglutBenutzen der Ports-SammlungDieser Abschnitt stellt die grundlegenden Anweisungen
vor, um Anwendungen aus der Ports-Sammlung zu installieren oder
zu löschen. &man.ports.7; enthält eine Auflistung aller
verfügbaren make-Targets und
Umgebungsvariablen.Ende 2012 hat das &os; Ports-Projekt eine Migration des
Versionskontrollsystems von CVS auf Subversion durchgeführt.
Die bevorzugte Methode zum Herunterladen der Ports-Sammlung
ist Portsnap.
Benutzer, die lokale Anpassungen der Ports vornehmen müssen,
werden es wahrscheinlich bevorzugen, Subversion direkt zu
verwenden. Der CVSup-Service wurde
am 28. Februar 2013 eingestellt.Installation der Ports-SammlungDie Ports-Sammlung ist eine Reihe von Makefiles, Patches
und Beschreibungen, die unter /usr/ports
gespeichert sind. Diese Dateien werden für den Bau und die
Installation von Anwendungen unter &os; verwendet. Die
folgenden Anweisungen zeigen verschiedene Methoden zur
Installation der Ports-Sammlung, falls diese nicht schon
während der Installation von &os; installiert wurden.Installation mit PortsnapPortsnap ist ein schnelles
und benutzerfreundliches Werkzeug zur Installation der
Ports-Sammlung und die bevorzugte Wahl für die meisten
- Benutzer. Eine detaillierte Beschreibung zu
- Portsnap finden Sie in Portsnap: ein Werkzeug
- zur Aktualisierung der Ports-Sammlung.
+ Benutzer.
Laden Sie einen komprimierten Snapshot der
Ports-Sammlung in
/var/db/portsnap.&prompt.root; portsnap fetchWenn Sie Portsnap das erste
Mal verwenden, müssen Sie den Snapshot nach
/usr/ports extrahieren:&prompt.root; portsnap extractNach dem ersten Einsatz von
Portsnap, kann
/usr/ports wie folgt aktualisiert
werden:&prompt.root; portsnap fetch
&prompt.root; portsnap updateInstallation mit SubversionWird mehr Kontrolle über die Ports-Sammlung benötigt
(beispielsweise für der Pflege lokaler Änderungen),
kann Subversion benutzt werden,
um die Ports-Sammlung zu laden. Lesen Sie the
Subversion Primer für eine detaillierte
Beschreibung von
Subversion.Subversion muss installiert
sein, bevor damit die Ports-Sammlung geladen werden kann.
Ist eine lokale Kopie der Ports-Sammlung bereits
vorhanden, installieren Sie
Subversion wie folgt:&prompt.root; cd /usr/ports/devel/subversion
&prompt.root; make install cleanIst keine lokale Kopie der Ports-Sammlung vorhanden,
kann Subversion als Paket
installiert werden:&prompt.root; pkg_add -r subversionWird pkgng für die
Verwaltung von Paketen benutzt, kann
Subversion darüber installiert
werden:&prompt.root; pkg install subversionLaden Sie eine Kopie der Ports-Sammlung. Verwenden
Sie anstatt svn0.us-east.FreeBSD.org einen
Subversion
Mirror in Ihrer Nähe. Committer sollten zuvor den
Subversion
Primer lesen, um sicherzustellen, dass das richtige
Protokoll gewählt wird.&prompt.root; svn checkout https://svn0.us-east.FreeBSD.org/ports/head /usr/portsNach dem erstmaligen
checkout mit
Subversion kann
/usr/ports wie folgt aktualisiert
werden:&prompt.root; svn update /usr/portsInstallieren mit sysinstallNicht zuletzt ist es auch möglich, die Ports-Sammlung
über sysinstall zu installieren.
Beachten Sie dabei aber, dass bei dieser Methode nicht die
aktuellste Version der Ports-Sammlung, sondern die Version, die
zum Zeitpunkt der Veröffentlichung der installierten
&os;-Version aktuell war, installiert wird. Haben Sie Zugriff
auf das Internet, so sollten Sie daher stets eine der weiter oben
beschriebenen Methoden verwenden, um die Ports-Sammlung zu
installieren.Führen Sie als rootsysinstall aus:&prompt.root; sysinstallWählen Sie den Punkt Configure
aus und drücken Sie Enter.Wählen Sie dann Distributions
aus und drücken Sie Enter.In diesem Menü wählen Sie
ports aus und drücken die
Leertaste.Danach wählen Sie Exit aus und
drücken Enter.Legen Sie nun ein geeignetes Installationsmedium, wie CD-ROM
oder FTP, fest.Wählen Sie nun Exit aus und
drücken Enter.Verlassen Sie sysinstall mit
X.Migration von
CVSup/csup
zu portsnapSeit dem 28. Februar 2013 wird die Ports-Sammlung nicht
mehr nach CVS exportiert. Somit
werden über CVSup und
csup keine Updates für die
Ports-Sammlung mehr zu Verfügung gestellt.Migration zu portsnapFür die Migration werden in /usr
ca. 1 GB freier Speicher und in
/var ca. 150 MB freier Speicher
benötigt.Deaktivieren Sie alle automatischen Updates der
Ports-Sammlung, wie beispielsweise &man.cron.8; Jobs, die
CVSup oder
csup aufrufen.Verschieben Sie die bestehende Ports-Sammlung in ein
temporäres Verzeichnis:&prompt.root; mv /usr/ports /usr/ports.oldLaden Sie eine aktuelle Kopie Ports-Sammlung mit
Portsnap herunter und
extrahieren Sie diese nach
/usr/ports:&prompt.root; portsnap fetch extractVerschieben Sie Distfiles und vorhandene Pakete in
die neue Ports-Sammlung:&prompt.root; mv /usr/ports.old/distfiles /usr/ports
&prompt.root; mv /usr/ports.old/packages /usr/portsLöschen Sie die alte Ports-Sammlung:&prompt.root; rm -rf /usr/ports.oldFalls zuvor CVSup verwendet
wurde, kann es nun deinstalliert werden:&prompt.root; pkg_delete -r -v cvsup-without-gui-\*Benutzer von pkgng können
das folgende Kommando benutzen:&prompt.root; pkg delete cvsup-without-guiEine detaillierte Beschreibung von
Portsnap und wie die
Ports-Sammlung mit Portsnap
aktualisiert wird, finden Sie in Portsnap: Ein Werkzeug
zur Aktualisierung der Ports-Sammlung.Ports installierenPortsinstallierenEin Port-Gerüst ist ein Satz von Dateien,
die &os; sagen, wie ein Programm zu kompilieren und zu
installieren ist. Ein jeder Port beinhaltet:Makefile: Das
Makefile enthält Anweisungen, die
spezifizieren, wie eine Anwendung kompiliert
wird und wohin sie installiert werden sollte.distinfo: Diese Datei
enthält Informationen, welche Dateien heruntergeladen
werden müssen sowie deren Prüfsummen (&man.sha256.1;),
um sicherzustellen, dass Dateien während des
Herunterladens nicht beschädigt wurden.files: Dieses Verzeichnis
enthält Patches, welche das Übersetzen und Installieren
der Anwendung unter &os; ermöglichen. Zudem können noch
weitere Dateien, die für die Übersetzung des Ports
verwendet werden, enthalten sein.pkg-descr: Diese Datei enthält
eine ausführlichere Beschreibung der Anwendung.pkg-plist: Das ist eine Liste
aller Dateien, die durch diesen Port installiert werden.
Außerdem sind hier Informationen enthalten, die zum
Entfernen des Ports benötigt werden.Einige Ports besitzen noch andere Dateien, wie
pkg-message, die vom Portsystem benutzt
werden, um spezielle Situationen zu handhaben. Wenn Sie mehr
über diese Dateien oder das Port-System erfahren sollen, lesen
Sie das
&os; Porter's Handbook.Ein Port enthält nicht den eigentlichen Quellcode, der
auch als Distfile bekannt ist. Der Autor der
Software kann bestimmen, in welcher Weise die Software
verteilt wird. Die beiden Methoden zur Installation eines
&os;-Ports werden nachfolgend beschrieben.Zum Installieren von Ports müssen Sie als Benutzer
root angemeldet sein.Stellen Sie sicher, dass die Ports-Sammlung
aktuell ist, bevor Sie einen Port kompilieren.
Informieren Sie sich vorher zusätzlich unter
http://vuxml.FreeBSD.org/
über mögliche Sicherheitsprobleme
des zu installierenden Ports. Wenn
ports-mgmt/portaudit installiert ist,
führen Sie portaudit -F aus, um die
aktuelle Sicherheitsdatenbank zu aktualisieren. Die täglich
laufende Sicherheitsprüfung des Systems aktualisiert
ebenfalls die Datenbank und prüft installierte Anwendungen
auf vorhandene Sicherheitsprobleme. Für weitere
Informationen lesen Sie die Manualpage &man.portaudit.1;
und &man.periodic.8;.Die Ports-Sammlung geht davon, dass eine funktionierende
Internetverbindung besteht. Ansonsten muss eine Kopie des zu
installierenden Distfiles manuell nach
/usr/ports/distfiles kopiert
werden.Dazu wechseln Sie als erstes in das Verzeichnis des
Ports, den Sie installieren wollen:&prompt.root; cd /usr/ports/sysutils/lsofUm den Port zu übersetzen (auch Bauen genannt), geben Sie
am Prompt make ein. Die Ausgabe sollte der
in diesem Beispiel ähnlich sein:&prompt.root; make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===> Extracting for lsof-4.57
...
[Ausgabe des Auspackens weggelassen]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[configure-Ausgabe weggelassen]
...
===> Building for lsof-4.57
...
[Ausgabe der Übersetzung weggelassen]
...
&prompt.root;Ist die Übersetzungsprozedur beendet, landen Sie
wiederum in der Kommandozeile und können das Programm
im nächsten Schritt mit make install
installieren:&prompt.root; make install
===> Installing for lsof-4.57
...
[Ausgabe der Installation weggelassen]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;Nachdem die Installation abgeschlossen ist, können Sie
die gerade installierte Anwendung starten. Da
lsof eine Anwendung ist, die mit erhöhten
Rechten läuft, wird eine Sicherheitswarnung angezeigt. Sie
sollten alle Warnungen während des Baus und der Installation
eines Ports beachten.Es ist eine gute Idee, das Unterverzeichnis
work nach erfolgter Installation
wieder zu löschen. Einerseits gewinnen Sie dadurch
Speicherplatz, andererseits könnte es sonst zu Problemen
bei der Aktualisierung des Ports auf eine neuere Version
kommen.&prompt.root; make clean
===> Cleaning for lsof-4.57
&prompt.root;Sie können zwei Schritte sparen, wenn Sie gleich
make install clean
anstelle von make, make
install und make
clean eingeben.Wird ein Port immer nur mit
make install installiert, kann es
möglicherweise zu mehreren Wartezeiten zwischen
Benutzerinteraktionen kommen, da dem Benutzer
standardmäßig Optionen angezeigt werden. Um dies bei
einer hohen Anzahl an Abhängigkeiten zu
vermeiden, starten Sie zuerst
make config-recursive, um die
Konfiguration der Optionen an einem Stück zu erledigen.
Führen Sie anschließend
make install [clean] aus.Bei der Verwendung von
config-recursive wird eine
Liste von Ports, die konfiguriert werden, vom
&man.make.1;-Target
all-depends-list erstellt.
Es wird oft empfohlen,
make config-recursive so lange
auszuführen, bis alle Optionen der abhängigen Ports
definiert sind und keine Optionen und
&man.dialog.1;-Masken mehr erscheinen. Damit soll
sichergestellt werden, dass alle Optionen wie
beabsichtigt konfiguriert wurden.Um die Suche nach Kommandos zu beschleunigen, speichern
einige Shells eine Liste der verfügbaren Kommandos in den
durch die Umgebungsvariable PATH gegebenen
Verzeichnissen. Wenn Sie die tcsh
benutzen, müssen Sie eventuell rehash
eintippen, um die neu installierten Kommandos benutzen zu
können, ohne den vollständigen Pfad anzugeben. Unter
Shells wie der sh benutzen Sie
stattdessen das Kommando hash -r.
Weitere Informationen finden Sie in der Dokumentation
der jeweiligen Shell.Einige von Dritten angebotenen DVD-Produkte wie das
&os; Toolkit von der &os; Mall
enthalten auch Distfiles. Diese lassen sich über die
Ports-Sammlung installieren. Dazu hängen Sie die DVD unter
/cdrom in den Verzeichnisbaum ein.
Wenn Sie einen anderen Mountpunkt verwenden, setzen Sie die
make-Variable CD_MOUNTPTS, damit die
auf der DVD enthaltenen Distfiles automatisch verwendet
werden.Die Lizenzen einiger Ports verbieten die Einbeziehung
auf der DVD. Das kann verschiedene Gründe haben.
Beispielsweise ist eine Registrierung vor dem Herunterladen
erforderlich, oder die Weiterverteilung ist verboten. Wenn
Sie einen Port installieren wollen, der nicht auf
der DVD enthalten ist, müssen Sie mit dem Internet verbunden
sein.Die Ports-Sammlung benutzt zum Herunterladen von Dateien
&man.fetch.3;, das Umgebungsvariablen wie
FTP_PASSIVE_MODE, FTP_PROXY und
FTP_PASSWORD berücksichtigt. Wenn Sie durch
eine Firewall geschützt werden, müssen Sie vielleicht
eine oder mehrere dieser Umgebungsvariablen setzen, oder einen FTP
oder HTTP Proxy verwenden. Eine Liste der unterstützten
Umgebungsvariablen finden Sie in &man.fetch.3;.Benutzer ohne eine ständige Internet-Verbindung können
make fetch im Verzeichnis
/usr/ports ausführen, um die benötigten
Dateien herunterzuladen. Es ist auch möglich,
make fetch nur in einem Teil
des Baums, wie /usr/ports/net,
aufzurufen. Die Dateien von allen abhängigen
Ports werden mit diesem Kommando allerdings nicht
heruntergeladen. Wenn Sie diese Dateien ebenfalls
herunterladen wollen, benutzen Sie
make fetch-recursive.Sie können alle Ports einer Kategorie oder alle Ports
bauen, indem Sie make im übergeordneten
Verzeichnis ausführen. Dies ist jedoch eine gefährliche
Methode, da einige Ports nicht nebeneinander existieren
können. Weiterhin gibt es Fälle, in denen zwei Ports
unterschiedliche Inhalte in derselben Datei speichern
wollen.In einigen seltenen Fällen ist es erforderlich, die
benötigten Dateien von einem anderen Ort als den im Port
definierten MASTER_SITES herunterzuladen.
Sie können die Option MASTER_SITES mit dem
folgenden Kommando überschreiben:&prompt.root; cd /usr/ports/directory
&prompt.root; make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetchIm Beispiel wurde MASTER_SITES
mit dem Wert
ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
überschrieben.Einige Ports bieten Optionen, mit denen zusätzliche
Funktionen oder Sicherheitsoptionen eingestellt werden
können. Zusätzliche Optionen können beispielsweise für
www/firefox,
security/gpgme und
mail/sylpheed-claws
angegeben werden. Wenn ein Port über zusätzliche
Optionen verfügt, wird ein Menü beim Bau des Ports
ausgegeben.Vorgabe-Verzeichnisse ändernDie Variablen WRKDIRPREFIX
und PREFIX überschreiben das
voreingestellte Bau- und Zielverzeichnis.
Zum Beispiel:&prompt.root; make WRKDIRPREFIX=/usr/home/example/ports installDieses Kommando baut den Port unter
/usr/home/example/ports und installiert
ihn unter /usr/local.Die Variable PREFIX legt das
Installations-Verzeichnis fest:&prompt.root; make PREFIX=/usr/home/example/local installIn diesem Beispiel wird der Port unter
/usr/ports gebaut und nach
/usr/home/example/local
installiert.Sie können beide Variablen auch zusammen
benutzen:&prompt.root; make WRKDIRPREFIX=../ports PREFIX=../local installAlternativ können diese Variablen auch als
Umgebungsvariablen gesetzt werden. In der Manualpage Ihrer
Shell finden Sie Anweisungen, wie Umgebungsvariablen gesetzt
werden.Ports rekonfigurierenEinige Ports enthalten ein ncurses-basiertes
Menü, über dessen Optionen der Bau dieser Ports
beeinflusst werden kann. Es gibt diverse Möglichkeiten,
dieses Menü nach dem Bau eines Ports erneut aufzurufen, um
beispielsweise Optionen zu entfernen, hinzuzufügen oder
anzupassen. Sie können beispielsweise in das
Verzeichnis des Ports wechseln und dort den Befehl
make config eingeben. Eine andere
Möglichkeit ist make showconfig. Eine
weitere Alternative bietet make rmconfig,
der alle ursprünglich gewählten Optionen zurücksetzt und es
Ihnen dadurch ermöglicht, die Konfiguration erneut zu
beginnen. Die eben erwähnten Optionen (und viele andere)
werden ausführlich in der Manualpage &man.ports.7;
beschrieben.Entfernen installierter PortsPortsentfernenInstallierte Ports werden mit &man.pkg.delete.1; wieder
deinstalliert:&prompt.root; pkg_delete lsof-4.57Ports aktualisierenPortsaktualisierenAls erstes sollten sie sich alle installierten Ports
anzeigen lassen, von denen eine aktuellere Version in der
Ports-Sammlung existiert. Dazu verwenden Sie den Befehl
&man.pkg.version.1;:&prompt.root; pkg_version -vLesen Sie
/usr/ports/UPDATINGNachdem Sie die Ports-Sammlung auf den neusten
Stand gebracht haben, lesen Sie bitte zuerst die Datei
/usr/ports/UPDATING, bevor
Sie einen Port aktualisieren. In dieser Datei werden
Probleme und zusätzlich durchzuführende
Schritte bei der Aktualisierung einzelner Ports
beschrieben. Dazu gehören solche Dinge wie
geänderte Dateiformate, verschobene Konfigurationsdateien,
aber auch Inkompatibilitäten zu einer
Vorgängerversion.Sollte UPDATING etwas hier Gesagtem
widersprechen, so gilt das in UPDATING
Gesagte.Ports mit Portupgrade aktualisierenportupgradeportupgrade wurde entwickelt, um
die Aktualisierung von Ports zu vereinfachen. Sie können
portupgrade über den Port
ports-mgmt/portupgrade wie
jeden anderen Port mit make install clean
installieren:&prompt.root; cd /usr/ports/ports-mgmt/portupgrade/
&prompt.root; make install cleanDurchsuchen Sie regelmäßig die Liste der installierten
Ports mit pkgdb -F und beheben Sie alle
gefundenen Probleme. Es ist eine gute Idee, dies vor jedem
Update auszuführen.Benutzen Sie portupgrade -a, um
automatisch alle veralteten Ports auf dem System zu
aktualisieren. Verwenden Sie den Schalter
, wenn Sie individuell entscheiden wollen,
ob ein Port aktualisiert werden soll:&prompt.root; portupgrade -aiUm nur eine spezifische Anwendung zu aktualisieren,
verwenden Sie portupgrade
Paketname.
Geben Sie den Schalter an, wenn
portupgrade zuvor alle
Ports aktualisieren soll, die von dem gegebenen
Paket abhängen.&prompt.root; portupgrade -R firefoxUm Pakete anstelle von Ports zu installieren, verweden Sie
den Schalter . Mit dieser
Option durchsucht portupgrade
die in der Umgebungsvariablen PKG_PATH
aufgeführten Verzeichnisse nach Paketen. Sind
lokal keine Pakete vorhanden, versucht
portupgrade die Pakete
über das Netz herunterzuladen. Gibt es die Pakete
weder lokal noch auf entfernten Rechnern, werden die Ports
verwendet. Um dies zu verhindern, benutzen Sie die
Option .&prompt.root; portupgrade -PP gnome2Wenn Sie nur die Quelldateien des Ports (oder die Pakete
mit ) herunterladen möchten,
ohne die Anwendung zu bauen oder zu installieren,
geben Sie die Option an.
Weitere Möglichkeiten lesen Sie bitte in
der Hilfeseite &man.portupgrade.1; nach.Ports mit portmaster
aktualisierenportmasterportmaster ist ein weiteres Werkzeug
zum Aktualisieren von Ports.
portmaster nutzt nur Werkzeuge,
die bereits im Basissystem vorhanden sind, ohne dabei von
weiteren Ports abhängig zu sein. Es verwendet Informationen
in /var/db/pkg/, um
festzustellen, welche Ports aktualisiert werden sollen.
Sie können den Port wie folgt installieren:&prompt.root; cd /usr/ports/ports-mgmt/portmaster
&prompt.root; make install cleanPortmaster teilt Ports in vier
Kategorien ein:Root ports: no dependencies and is not depended on
by other portsTrunk ports: no dependencies, but other ports depend
upon itBranch ports: have dependencies but are depended
upon by other portsLeaf ports: have dependencies but are not depended
upon by other portsUm eine Liste der installierten Ports anzuzeigen und
nach neueren Versionen zu suchen, verwenden Sie
:&prompt.root; portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions available
Um alle installierten Ports zu aktualisieren,
verwenden Sie folgenden Befehl:&prompt.root; portmaster -aIn der Voreinstellung erzeugt
portmaster eine
Sicherheitskopie, bevor ein installierter Port gelöscht
wird. Ist die Installation der neuen Version erfolgreich,
wird dieses Backup wieder gelöscht. Wollen Sie das Backup
lieber manuell löschen, verwenden Sie die Option
beim Aufruf von
portmaster. Durch die
Verwendung von wird
portmaster im interaktiven
Modus gestartet und fragt bei jedem zu aktualisierenden
Port nach, wie weiter vorgegangen werden soll.Treten während der Aktualisierung Fehler auf, können
Sie die Option verwenden, um alle Ports zu
aktualisieren beziehungsweise neu zu bauen:&prompt.root; portmaster -afportmaster ist auch in der Lage,
neue Ports zu installieren, wobei zuvor alle abhängigen Ports
aktualisiert werden:&prompt.root; portmaster shells/bashWeiterführende Informationen finden Sie in der Manualpage
&man.portmaster.8;.Platzbedarf von PortsPortsPlattenplatzDie Nutzung der Ports-Sammlung wird im Laufe der Zeit viel
Plattenplatz verschlingen. Nach dem Bau und der Installation
eines Ports, wird make clean die temporären
Arbeitsverzeichnisse work aufräumen.
Um die gesamte Ports-Sammlung aufzuräumen, verwenden Sie
folgenden Befehl:&prompt.root; portsclean -CIm Laufe der Zeit werden sich zahlreiche veraltete
Distfiles in distfiles ansammeln. Mit
dem folgenden Befehl werden alle Distfiles gelöscht, die vom
keinem Port mehr benötigt werden:&prompt.root; portsclean -DUm alle Distfiles zu löschen, die von
keinem derzeit installierten Port referenziert werden:&prompt.root; portsclean -DDDas Werkzeug portsclean wird
automatisch bei der Installation von
portupgrade mit installiert.port-mgmt/pkg_cutleaves automatisiert
die Deinstallation von installierten Ports, die nicht weiter
benötigt werden.Nach der InstallationNach der Installation einer neuen Anwendung wollen Sie
wahrscheinlich die mitgelieferte Dokumentation lesen, notwendige
Konfigurationsdateien anpassen und sicherstellen, dass die
Dienste der Anwendung automatisch beim Booten gestartet
werden.Die einzelnen Schritte sind natürlich von Anwendung zu
Anwendung verschieden. Wenn Sie sich allerdings nach der Installation
einer Anwendung die Frage Was nun? stellen, helfen die
folgenden Hinweise vielleicht weiter.Finden Sie mit &man.pkg.info.1; heraus, welche Dateien die
Anwendung wo installiert hat. Wenn Sie beispielsweise gerade
die Version 1.0.0 von FooPackage installiert haben, zeigt Ihnen
das folgende Kommando alle installierten Dateien des
Pakets:&prompt.root; pkg_info -L foopackage-1.0.0 | lessAchten Sie besonders auf die Manualpages, die sich in
man/ befinden und auf
Konfigurationsdateien, die in etc/ abgelegt
werden. Manche Pakete enthalten in doc/
zusätzliche Dokumentation.Um festzustellen welche Version der Anwendung
installiert ist:&prompt.root; pkg_info | grep -i foopackageDas Kommando zeigt alle installierten Pakete, deren
Paketname foopackage enthält.
Ersetzen Sie foopackage durch den
Namen der Anwendung, die Sie suchen.Nachdem Sie die Manualpages der Anwendung gefunden haben,
lesen Sie diese mit &man.man.1;. Überprüfen Sie die
Beispiele für Konfigurationsdateien und die zusätzliche
Dokumentation an, wenn es welche gibt.Wenn es für die Anwendung eine Webseite gibt, suchen
Sie dort nach zusätzlicher Dokumentation wie FAQs
(häufig gestellte Fragen). Wenn Sie die Adresse der Webseite
nicht kennen, versuchen Sie das folgende Kommando:&prompt.root; pkg_info foopackage-1.0.0Die Ausgabe enthält oft eine Zeile, die mit
WWW: beginnt und die URL der Webseite
enthält.Ports die während des Systemstarts gestartet
werden sollen, installieren meist ein Startskript in
/usr/local/etc/rc.d.
Überprüfen Sie dieses Skript, und wenn nötig, passen Sie es
an oder benennen Sie es um. Weitere
Informationen finden Sie in
.Kaputte PortsStolpern Sie einmal über einen Port, der nicht
funktioniert:Stellen Sie fest, ob die
Datenbank mit den
Problemberichten bereits einen Lösungsvorschlag
enthält. Ist dies der Fall, können Sie die
vorgeschlagene Lösung testen.Bitten Sie den Betreuer des Ports um Hilfe. Geben
Sie dazu make maintainer
ein oder lesen Sie das Makefile im Verzeichnis
des Ports, um an die E-Mail-Adresse zu kommen. Vergessen Sie nicht
den Namen und die Version des Ports (schicken Sie die Zeile mit
$FreeBSD: aus dem
Makefile) und die Ausgabe bis zur Fehlermeldung
mitzuschicken.Einige Ports werden nicht von einer Einzelperson, sondern
von einer
Mailingliste betreut. Viele (aber nicht alle) dieser
Adressen haben die Form
freebsd-NameDerListe@FreeBSD.org.
Denken Sie daran, wenn Sie Ihre Fragen formulieren.Dies gilt insbesondere für Ports, die als
Betreuer den Eintrag ports@FreeBSD.org aufweisen.
Derartige Ports haben überhaupt keinen Betreuer.
Korrekturen und Unterstützung kommen daher nur von
Personen, die diese Mailingliste abonniert haben. Gerade
in diesem Bereich werden jederzeit zusätzliche
freiwillige Helfer benötigt!Erhalten Sie auf Ihre Anfrage keine Antwort, benutzen
Sie &man.send-pr.1;, um einen Problembericht zu erstellen.
Bevor Sie einen solchen Bericht erstellen, lesen Sie den
Artikel Writing
&os; Problem Reports.Reparieren Sie ihn! Das &os;
Porter's Handbook enthält eine detaillierte
Beschreibung des Portsystems. Damit sind Sie in der Lage,
einen gelegentlich kaputten Port zu reparieren oder einen
eigenen Port zu erstellen.Benutzen Sie alternativ &man.pkg.add.1;, um das Paket zu
installieren.
Index: head/de_DE.ISO8859-1/htdocs/ports/installing.xml
===================================================================
--- head/de_DE.ISO8859-1/htdocs/ports/installing.xml (revision 48014)
+++ head/de_DE.ISO8859-1/htdocs/ports/installing.xml (revision 48015)
@@ -1,35 +1,38 @@
-
+
%ports.ent;
%statistics.ent;
]>
&title;$FreeBSD$
&searchform;
-
Wenn Sie FreeBSD von einer CD-ROM oder von einem FTP-Server
- installieren, können Sie die Ports-Sammlung direkt über
- sysinstall
- installieren.
+
Das &os; Installationsprogramm (&os; 9.X und neuere verwenden
+ bsdinstall,
+ &os; 8.X und älter verwenden
+ sysinstall)
+ erlaubt die Installation der Ports-Sammlung während der
+ Installation des Betriebssystems.
-
Alternativ können Sie die Ports-Sammlung auch als
- komprimiertes Archiv (derzeitige Größe etwa
- 36 MB) herunterladen.
+
Wird die Ports-Sammlung anfangs nicht installiert ist, kann sie
+ jederzeit nachträglich über
+ portsnap
+ oder Subversion
+ hinzugefügt werden.