So installieren und verwalten Sie Ports unter FreeBSD 10.1

Einführung

FreeBSD ist ein leistungsfähiges Betriebssystem, das in verschiedenen Rollen eingesetzt werden kann. Ein Teil dessen, was dieses Betriebssystem in vielen Szenarien zur idealen Wahl macht, ist sein Ruf für Flexibilität. Einen großen Beitrag zu dieser Reputation liefert die von FreeBSD unterstützte Methode zur Installation von Software aus dem Quellcode, das sogenannte * Ports-System *.

In diesem Handbuch werden einige Vorteile des Ports-Systems erläutert und gezeigt, wie Sie damit zusätzliche Software erwerben und verwalten können. Wir werden erläutern, wie Sie mit dem Befehl "+ make +" installieren, Ihre Anwendungen anpassen und einige gängige Tools nutzen, um die Wartung von Ports zu vereinfachen.

Voraussetzungen

Um diesem Handbuch folgen zu können, sollten Sie Zugriff auf einen FreeBSD 10.1-Server und ein Benutzerkonto ohne Rootberechtigung mit den Rechten "+ sudo +" haben. Dieses Handbuch kann Sie dabei unterstützen, sich bei Ihrem FreeBSD-Server anzumelden und eine angemessene Arbeitsumgebung einzurichten.

Verschiedene Arten von FreeBSD-Software verwalten

Das FreeBSD-Team pflegt das FreeBSD-Basisbetriebssystem als zusammenhängende Einheit. Die Komponenten werden mit einem Tool namens "+ freebsd-update " aktualisiert und ihr Verhalten wird hauptsächlich über Konfigurationsdateien gesteuert, die sich im Verzeichnis " / etc +" befinden. Während Sie Alternativen zur mitgelieferten Software installieren und verwenden können, können Sie diejenigen, die im Basissystem enthalten sind, nicht einfach oder sicher entfernen, da diese als funktionswichtige Teile des Betriebssystems betrachtet werden.

Im Gegensatz dazu wird optionale Software mithilfe verschiedener Prozesse, Tools und Speicherorte im Dateisystem verwaltet. Im Gegensatz zu Software vom Basissystem wird optionale Software im Verzeichnis "+ / usr / local / etc +" konfiguriert. FreeBSD bietet zwei sanktionierte Methoden zum Herunterladen und Installieren zusätzlicher Software auf dem System.

Das Ports-System, das wir in diesem Handbuch beschreiben werden, wird über eine Dateisystemhierarchie verwaltet, die sich unter + / usr / ports + befindet und jede verfügbare Software kategorisiert, die FreeBSD erstellen kann. Innerhalb dieses Verzeichnisses kategorisiert das Unterverzeichnis der ersten Ebene Software hauptsächlich nach Funktion oder Sprache. Innerhalb dieser Verzeichnisse existieren Ordner für jede einzelne Software. Software kann entweder über einfache "+ make +" - Befehle oder über verfügbare Hilfsprogramme heruntergeladen, konfiguriert, kompiliert und installiert werden. Die Software in der Ports-Sammlung enthält alle Patches, die zum Erstellen und Ausführen der Anwendung auf einem FreeBSD-System erforderlich sind.

Die andere Art der Installation, die vom System unterstützt wird, sind * Pakete *, bei denen es sich um Software-Binärdateien handelt, die aus der Ports-Sammlung mit angemessenen Standardeinstellungen kompiliert wurden. Dies ist eine gute Methode, um schnell Software zu erwerben, aber sie lässt den Anpassungsgrad des Ports-Systems nach. Weitere Informationen zum Verwalten von Softwarepaketen finden Sie unter this guide.

Vorbereiten des Ports-Baums

Der Ports-Baum ist der Name der Hierarchie, die unter dem Verzeichnis "+ / usr / ports +" existiert. Diese Hierarchie enthält Verzeichnisse, die Portkategorien entsprechen. Innerhalb dieser Verzeichnisse befinden sich andere Verzeichnisse, die einzelnen Ports entsprechen.

Bevor wir mit der Bearbeitung von Ports beginnen, sollten wir sicherstellen, dass diese Hierarchie auf dem neuesten Stand ist. Wenn Sie die Porthierarchie nicht aktualisieren, kann dies zu Fehlern beim Erstellen führen, da die Ports versuchen, Dateien abzurufen und zu erstellen, die möglicherweise nicht mehr gültig sind.

Wir können den Ports-Baum mit einem Hilfsprogramm namens "+ portsnap +" aktualisieren. Dieses Tool fragt die FreeBSD-Ports-Server nach Änderungen ab.

Notieren Sie sich unser letztes Update

Bevor wir den eigentlichen Aktualisierungsbefehl ausführen, müssen wir den Zeitstempel für eine bestimmte Datei in unserem Portbaum mit dem Namen "+ / usr / ports / UPDATING " notieren. Wir können das ` stat +` Werkzeug verwenden, um die verschiedenen Zeitstempel zu sehen, die der Datei zugeordnet sind:

stat -x /usr/ports/UPDATING

Sie sollten eine Ausgabe sehen, die so aussieht:

 File: "UPDATING"
 Size: 375337       FileType: Regular File
 Mode: (0644/-rw-r--r--)         Uid: (    0/    root)  Gid: (    0/   wheel)
Device: 0,81   Inode: 2011338    Links: 1
Access: Thu Dec 11 22:24:59 2014
Modify:
Change:

Es besteht die Möglichkeit, dass Sie stattdessen eine Fehlermeldung wie die folgende erhalten:

stat: /usr/ports/UPDATING: stat: No such file or directory

Wenn Sie dies sehen, bedeutet dies, dass auf Ihrem System kein Portbaum initialisiert ist. Wenn dies der Fall ist, fahren Sie mit dem nächsten Abschnitt fort, um zu erfahren, wie Sie mit + portsnap + einen ersten Portbaum auf Ihr System extrahieren.

Die Werte, auf die wir achten möchten, sind die Zeiten "Ändern" und "Ändern", die in der obigen Ausgabe hervorgehoben sind. In diesem Fall ist der Zeitstempel "Ändern" der letzte Zeitpunkt, zu dem ein Portverwalter die Datei mit wichtigen Informationen geändert hat. Der Zeitstempel "Ändern" ist das letzte Mal, dass die Datei mit Ihrem Server synchronisiert wurde.

Wir müssen uns den Zeitstempel merken, damit wir wissen, auf welche Aktualisierungsnotizen wir achten müssen, nachdem wir unseren Ports-Baum aktualisiert haben. Wir können diese in eine Datei in unserem Home-Verzeichnis speichern, indem wir Folgendes eingeben:

stat -x /usr/ports/UPDATING > ~/last_update

Nachdem wir diese Informationen gespeichert haben, können wir unseren Ports-Baum aktualisieren.

Aktualisierung des Ports Tree mit Portsnap

Sobald Sie eine gute Vorstellung davon haben, wann der Ports-Baum zuletzt aktualisiert wurde, können Sie Ihren Ports-Baum mit den neuesten Informationen von der FreeBSD-Projektseite synchronisieren. Dazu verwenden wir ein Tool namens "+ portsnap +".

Wenn Sie keine Informationen im Verzeichnis "+ / usr / ports " haben (wenn Sie auf den Fehler gestoßen sind, den wir im letzten Abschnitt erwähnt haben), können Sie den gesamten Ports-Baum mit " portsnap " in dieses Verzeichnis herunterladen und extrahieren. Dieser Vorgang kann ziemlich lange dauern, ist jedoch nur erforderlich, wenn das Verzeichnis " / usr / ports +" leer ist. Dies sollte nur einmal vorkommen. Wenn sich Ihr FreeBSD-Server auf DigitalOcean befindet, sollte Ihr Portbaum bereits initialisiert sein:

sudo portsnap fetch extract

Dadurch wird der gesamte Ports-Baum heruntergeladen und in das Verzeichnis "+ / usr / ports +" extrahiert.

Wenn Sie bereits einen Ports-Baum im Verzeichnis "+ / usr / ports +" erstellt haben (wenn Sie die Zeitstempel im letzten Abschnitt aufzeichnen konnten), können Sie die Dateien mit diesem Befehl auf die neuesten Versionen aktualisieren:

sudo portsnap fetch update

Mit diesem Befehl werden nur die Dateien extrahiert, die sich von den Dateien in der Struktur "+ / usr / ports " unterscheiden. Sie benötigen also deutlich weniger Zeit als mit der Variante " extract +" des Befehls. Dies ist das Format, das für die täglichen Aktualisierungen des Ports-Baums verwendet werden soll.

Sobald Ihr Ports-Baum erstellt oder aktualisiert wurde, können Sie damit beginnen, Ports auf Ihrem System zu verwalten und mit ihnen zu arbeiten.

Durchsuchen des Ports-Baums nach Anwendungen

Nachdem Sie eine aktualisierte Port-Baumstruktur auf Ihrem System haben, können Sie sich die für Sie verfügbare Software ansehen. Hierfür gibt es verschiedene Möglichkeiten, von denen jede ihre Vorteile hat.

Suchen mit + whereis +

Die einfachste Methode, nach einer Anwendung zu suchen, ist die Suche nach Namen mit dem Befehl + whereis +. Dadurch wird auf Ihrem System und in der Ports-Struktur nach dem Befehl gesucht. Wenn eine Übereinstimmung gefunden wird, werden die relevanten Pfadinformationen für die Anwendung auf Ihrem System zurückgegeben.

Wenn die Anwendung nicht installiert ist, aber nach einem gültigen Port gesucht wurde, wird normalerweise der Pfad zu dem Port in der Ports-Struktur zurückgegeben. Wenn die Anwendung installiert ist, gibt sie normalerweise den Pfad zur ausführbaren Datei, den Port und häufig die Seite "+ man +" zurück:

Zum Beispiel können wir nach dem Dienstprogramm "+ wget +" suchen, indem wir Folgendes eingeben:

whereis wget

Wenn der Port nicht installiert ist, sehen wir ungefähr so:

wget: /usr/ports/ftp/wget

Da der Pfad mit "+ / usr / ports +" beginnt, wissen wir, dass dies ein installierbarer Port ist. Wir können den zurückgegebenen Pfad verwenden, wenn wir diesen Port installieren möchten.

Wenn der Befehl + wget + bereits installiert ist, wird möglicherweise die folgende Ausgabe angezeigt:

wget: /usr/local/bin/wget /usr/local/man/man1/wget.1.gz /usr/ports/ftp/wget

Dazu gehören der Pfad zur tatsächlich installierten ausführbaren Datei, die Manpage-Datei für die Anwendung und der Speicherort des Ports innerhalb des Ports-Baums.

Suchen mit dem Befehl + echo + in der Dateisystemhierarchie

Im FreeBSD Handbook schlagen die Autoren auch eine ziemlich neue Art der Suche nur mit dem `vor + echo + `befehl und die eingebaute struktur des ports tree.

Der Ports-Baum wird mit allen relevanten Dateien und Verzeichnissen unter dem Verzeichnis "+ / usr / ports +" eingerichtet. Im Dateisystem wird jeder Port durch ein eigenes Verzeichnis dargestellt, das alle Informationen enthält, die zum Erstellen und Installieren der Software auf dem FreeBSD-System erforderlich sind.

Um die Organisation zu erleichtern, sind diese Ports in Kategorienverzeichnissen in + / usr / ports + nach Funktionen gruppiert. Im obigen Beispiel sehen wir, dass der Befehl "+ wget " in die Gruppe " ftp " eingeordnet wurde. Das Verzeichnis " / usr / ports +" enthält also Kategorie-Verzeichnisse, die wiederum Verzeichnisse für Ports enthalten.

Wir können diese konsistente Struktur ausnutzen, indem wir den Befehl "+ echo " und Platzhalter verwenden. Da wir wahrscheinlich nicht wissen, in welcher Kategorie der Port existieren wird, werden wir diese Verzeichnisebene durch ein Sternchen ersetzen. Wir können diese auch vor und nach dem Suchbegriff einfügen, wenn wir bei der Suche flexibler sein möchten. Also können wir nach ` wget +` verwandten Programmen suchen, indem wir Folgendes eingeben:

echo /usr/ports/*/*wget*

Dies gibt etwas Ähnliches zurück:

/usr/ports/ftp/gwget /usr/ports/ftp/wget /usr/ports/www/ruby-wgettsv /usr/ports/www/wgetpaste

Dies kann etwas flexibler sein als der Befehl "+ whereis +", da keine exakte Übereinstimmung erforderlich ist.

Suchen mit den verfügbaren "+ make +" - Zielen

Die leistungsfähigste Methode zum Suchen nach Ports ist die Verwendung des Befehls "+ make +".

Dies ist auch der Befehl, der zum Erstellen und Installieren von Ports auf dem System verwendet wird. Im Allgemeinen handelt es sich jedoch um ein flexibles Tool, mit dem komplexe Aufgaben, die in einer Konfigurationsdatei definiert wurden, problemlos ausgeführt werden können. Die FreeBSD-Entwickler haben "make" -Ziele (Aufgabendefinitionen) erstellt, die den Ports-Baum nach verschiedenen Kriterien durchsuchen.

Um diese Funktionalität nutzen zu können, müssen Sie zuerst zur Basis des Ports-Baums wechseln. Hier werden die + make + Ziele definiert:

cd /usr/ports

Die allgemeine Syntax zum Ausführen einer Suche lautet:

make [search|quicksearch] [searchtype]=[searchquery] [modifiers]

Die beiden "+ make" -Ziele, mit denen der Ports-Baum durchsucht werden soll, sind "+ search" und "+ quicksearch". Diese haben genau die gleiche Funktionalität und unterscheiden sich nur in der Standardanzeige.

Das "+ search " - Ziel gibt Informationen über den Namen des Ports, den Pfad in der Port-Struktur, eine allgemeine Beschreibung und dann Details zum Build zurück, einschließlich der Betreuer-E-Mail, der Build-Abhängigkeiten, der Laufabhängigkeiten und der Upstream-URL. Das Ziel " quicksearch +" gibt nur den Portnamen, den Pfad und die Beschreibung zurück.

Die Suchtypen können folgende sein:

  • * name *: Nur im Namensfeld des Ports suchen.

  • * key *: Suche in den Feldern "Name", "Kommentar" und "Abhängigkeiten" des Ports.

  • * path *: Durchsucht einen bestimmten Pfad innerhalb der Porthierarchie.

  • * info *: Suche im Infofeld (Beschreibung) des Ports.

  • * maint *: Sucht nach der E-Mail-Adresse des Betreuers.

  • * cat *: Sucht nach der Kategorie des Ports.

  • * bdeps *: Durchsucht die Build-Zeit-Abhängigkeiten der einzelnen Ports.

  • * rdeps *: Durchsucht die Laufzeitabhängigkeiten der einzelnen Ports.

  • * www *: Durchsucht die Ports-Website.

Sie können auch ein „x“ vor eine der oben genannten Kategorien stellen, um Ergebnisse zu entfernen, die einer Übereinstimmung entsprechen. Wenn Ihre Suche beispielsweise "+ xname = apache +" enthält, wird kein Port zurückgegeben, dessen Namensfeld die Zeichenfolge "apache" enthält.

Lassen Sie uns einige kurze Beispiele durchgehen. Unten sehen Sie den Unterschied in der Ausgabe der Ziele "+ Suche " und " Schnellsuche ". Das Ziel " Suche +" enthält vollständige Informationen zu den Übereinstimmungen:

make search name=htop
Port:   htop-1.0.3
Path:   /usr/ports/sysutils/htop
Info:   Better top(1) - interactive process viewer
Maint:  [email protected]
B-deps: autoconf-2.69 autoconf-wrapper-20131203 automake-1.14_1 automake-wrapper-20131203 gettext-runtime-0.19.3 indexinfo-0.2.2 libexecinfo-1.1_3 libffi-3.0.13_3 libiconv-1.14_6 m4-1.4.17_1,1 ncurses-5.9.20141213 perl5-5.18.4_11 python2-2_3 python27-2.7.9 readline-6.3.8
R-deps: libexecinfo-1.1_3 lsof-4.89.b,8 ncurses-5.9.20141213
WWW:    http://htop.sourceforge.net/

Andererseits zeigt das Ziel "+ Schnellsuche +" nur die wesentlichen Informationen zu den Übereinstimmungen an, die es findet:

make quicksearch name=htop
Port:   htop-1.0.3
Path:   /usr/ports/sysutils/htop
Info:   Better top(1) - interactive process viewer

Es ist möglich, verschiedene Suchtypen zu kombinieren, um die Ergebnisse einzugrenzen. Wenn wir beispielsweise nach dem Netzwerkmonitor "+ ntop +" suchen, werden möglicherweise folgende Ergebnisse angezeigt:

make quicksearch name=ntop
Port:   ntopng-zmq-3.2.3_1
Path:   /usr/ports/devel/ntopng-zmq
Info:   NTOPNG specific ZMQ library

Port:   diveintopython-5.4_1
Path:   /usr/ports/lang/diveintopython
Info:   Free Python tutorial book that is "not For Dummies(tm)"

Port:   ntop-5.0.1_8
Path:   /usr/ports/net/ntop
Info:   Network monitoring tool with command line and web interfaces

Port:   ntopng-1.2.1_1
Path:   /usr/ports/net/ntopng
Info:   Network monitoring tool with command line and web interfaces

Port:   sntop-1.4.3_1
Path:   /usr/ports/net/sntop
Info:   Monitor status of network nodes using fping

Hier können wir sehen, dass die meisten Ergebnisse mit + ntop + zusammenhängen, aber wir haben auch ein Buch über das Erlernen von Python. Wir können weiter filtern, indem wir eine Pfadangabe hinzufügen:

make quicksearch name=ntop path=/net
Port:   ntop-5.0.1_8
Path:   /usr/ports/net/ntop
Info:   Network monitoring tool with command line and web interfaces

Port:   ntopng-1.2.1_1
Path:   /usr/ports/net/ntopng
Info:   Network monitoring tool with command line and web interfaces

Port:   sntop-1.4.3_1
Path:   /usr/ports/net/sntop
Info:   Monitor status of network nodes using fping

Wir können das Verhalten der Suche auch auf verschiedene Arten ändern. Einige gültige Modifikatoren sind:

  • * icase *: Setzen Sie diesen Wert auf "1", um die Unterscheidung zwischen Groß- und Kleinschreibung zu aktivieren. Dies ist die Standardeinstellung. Um bei der Suche zwischen Groß- und Kleinschreibung zu unterscheiden, setzen Sie diesen Wert auf "0".

  • * display *: Enthält eine durch Kommas getrennte Liste von Feldern, die in der Ausgabe angezeigt werden sollen.

  • * keylim *: Begrenzen Sie die Suche (mithilfe des Suchtyps "Schlüssel") nur auf die angezeigten Felder. Schalten Sie dies ein, indem Sie es auf „1“ setzen.

Zum Beispiel könnten wir nach Beschreibungen oder Pfaden suchen, die die großgeschriebene Zeichenfolge "Einfügen" enthalten, indem wir Folgendes eingeben:

make search key=Paste display=path,info keylim=1 icase=0
Path:   /usr/ports/devel/pear-SebastianBergmann_PHPCPD
Info:   Copy/Paste Detector (CPD) for PHP code

Path:   /usr/ports/devel/py-zope.copypastemove
Info:   Copy, Paste, and Move support for content components

Path:   /usr/ports/german/bsdpaste
Info:   Pastebin web application to upload and read text on a webserver

Path:   /usr/ports/www/p5-WWW-Pastebin-PastebinCom-Create
Info:   Paste to http://pastebin.com from Perl

Path:   /usr/ports/www/p5-WebService-NoPaste
Info:   Pastebin web application to upload snippets of text

Path:   /usr/ports/www/py-django-dpaste
Info:   Pastebin Django application that powers dpaste.de

Path:   /usr/ports/www/wgetpaste
Info:   Paste to several pastebin services via bash script

Eine weitere Situation, auf die Sie bei Ihren Suchen stoßen können, ist ein Port, der verschoben oder gelöscht wurde. Diese Ergebnisse sehen folgendermaßen aus:

make quicksearch name=wget
. . .

Port:   ftp/emacs-wget
Moved:
Date:   2011-05-02
Reason: Has expired: Upstream disappeared and distfile is no longer available

Port:   ftp/wgetpro
Moved:
Date:   2011-10-14
Reason: Vulnerable since 2004-12-14

Port:   www/wget4web
Moved:
Date:   2012-01-01
Reason: Has expired: Depends on expired www/apache13

Wenn ein Port an einen neuen Ort verschoben wurde, enthält das Feld „Verschoben“ den neuen Ort, an dem der Port gefunden werden kann. Wenn dieses Feld vorhanden, aber leer ist, wurde der Port gelöscht.

Auch wenn diese gelöscht wurden, werden sie in Ihren Suchergebnissen angezeigt. Wenn Sie verhindern möchten, dass verschobene oder gelöschte Ports angezeigt werden, können Sie die Umgebungsvariable "+ PORTSEARCH_MOVED +" auf "0" setzen.

Um diese Variable beispielsweise nur für den folgenden Befehl auf "0" zu setzen, können Sie mit dem Standardwert "+ tcsh +" Folgendes eingeben:

env PORTSEARCH_MOVED=0 make quicksearch name=wget
Port:   gwget-1.0.4_9
Path:   /usr/ports/ftp/gwget
Info:   GNOME wget front-end

Port:   wget-1.16
Path:   /usr/ports/ftp/wget
Info:   Retrieve files from the Net via HTTP(S) and FTP

Port:   ruby20-ruby-wgettsv-0.95
Path:   /usr/ports/www/ruby-wgettsv
Info:   Collect WWW resources and generate TSV data

Port:   wgetpaste-2.25
Path:   /usr/ports/www/wgetpaste
Info:   Paste to several pastebin services via bash script

Wie Sie sehen, werden nun alle Einträge, die verschoben oder gelöscht wurden, aus unseren Ergebnissen herausgefiltert. Wenn Sie dies als Standardverhalten festlegen möchten, können Sie in Ihrer Datei "+ make.conf " " PORTSEARCH_MOVED = 0 +" festlegen:

sudo sh -c 'echo "PORTSEARCH_MOVED=0" >> /etc/make.conf'

Installieren von Ports mit Make

Sobald Sie einen Port gefunden haben, den Sie installieren möchten, können Sie die erforderlichen Dateien einfach herunterladen, die Binärdatei erstellen und mit dem Befehl + make + installieren.

Wechseln Sie zum Installieren eines Ports in das Verzeichnis des Ports in der Portstruktur. Sie können diesen Ort mit einer der oben angegebenen Suchmethoden finden. Um dies zu demonstrieren, installieren wir einen Port mit dem Namen "+ Hafenmeister +", den wir später in diesem Handbuch benötigen.

Wechseln Sie zunächst zum Portstandort. Der Port + portmaster + wird in der Kategorie + ports-mgmt + geführt:

cd /usr/ports/ports-mgmt/portmaster

Jetzt können wir den Port einfach herunterladen, konfigurieren, kompilieren und installieren, indem wir "+ make " - Ziele verwenden. Da diese Operationen unser System betreffen, müssen wir ` sudo ` verwenden. Der lange Weg dazu führt über einzelne Aufrufe von " make +". Geben Sie diese Befehle noch nicht ein, wir zeigen Ihnen momentan eine viel kürzere Version:

sudo make config
sudo make fetch
sudo make checksum
sudo make depends
sudo make extract
sudo make patch
sudo make configure
sudo make build
sudo make install

Wir könnten dies ein wenig verkürzen, indem wir jedes Ziel nach einem einzigen "+ make +" - Befehl wie folgt auflisten:

sudo make config fetch checksum depends extract patch configure build install

Dies ist jedoch fast immer unnötig. Jedes der oben aufgelisteten Ziele ruft alle vorherigen Ziele auf, die zur Erledigung der Aufgabe erforderlich sind. Das oben Genannte könnte also einfach zu Folgendem zusammengefasst werden:

sudo make install

Normalerweise möchten wir diese Befehlskette etwas erweitern, um sicherzustellen, dass alles korrekt konfiguriert ist. Normalerweise möchten wir "+ config-recursive ", eine Option, die nicht in der obigen Pipeline enthalten ist, vor dem Ziel " install +" angeben, um die Konfiguration für diesen Port und alle Abhängigkeiten zu Beginn der Installation zu berücksichtigen. Andernfalls wird der Erstellungsprozess möglicherweise angehalten und wartet auf Benutzereingaben, während die erforderlichen Abhängigkeiten erstellt werden.

Wir möchten in der Regel auch nach der Installation ein wenig aufräumen, um Speicherplatz freizugeben und ein sauberes System zu erhalten. Wir können dies mit den Zielen + clean + oder + distclean + tun. Das + clean + - Ziel löscht den extrahierten Quellcode, der zum Erstellen dieses Ports und aller Abhängigkeitsports verwendet wird. Das + distclean + Ziel tut dies auch, löscht aber auch das komprimierte Quellarchiv für dieses Paket aus dem + / usr / ports / distfiles + Verzeichnis.

Ein typischer Installationsbefehl könnte also so aussehen:

sudo make config-recursive install distclean

Dadurch werden Sie zu Beginn des Vorgangs aufgefordert, den Port und alle Abhängigkeiten zu konfigurieren. Anschließend wird das Quellarchiv heruntergeladen und auf seine Integrität überprüft. Es ändert dann den Kontext, um fehlende Abhängigkeiten zu erfüllen. Wenn dieser Vorgang abgeschlossen ist, kehrt er zum betreffenden Port zurück, extrahiert das Archiv, wendet alle erforderlichen Patches an und konfiguriert es gemäß den von Ihnen ausgewählten Optionen. Anschließend wird die Anwendung kompiliert und auf Ihrem System installiert. Anschließend wird der erweiterte Quellcode für diesen Port und alle Abhängigkeiten entfernt. Anschließend wird das Quellarchiv für diesen Port gelöscht.

Führen Sie den obigen Befehl im Verzeichnis "+ / usr / ports / ports-mgmt / portmaster +" aus:

sudo make config-recursive install distclean

Es wird ein einzelnes Dialogfeld für die Anwendung angezeigt. Wenn Sie eine der aufgelisteten Shells verwenden, können Sie hier die Shell-Vervollständigung für das Tool konfigurieren:

image: https: //assets.digitalocean.com/articles/freebsd_ports_intro/dialog.png [FreeBSD-Portkonfiguration]

Der + portmaster + Port hat keine Abhängigkeiten, aber wenn es welche gäbe, würden die Konfigurationsoptionen für Abhängigkeiten direkt nach der obigen Konfiguration des Zielports angezeigt. Der Port wird heruntergeladen, konfiguriert und installiert.

Wenn Sie die Standardeinstellung "+ tcsh +" verwenden, möchten Sie Ihren PATH nach jeder Installation erneut scannen, damit Ihre Shell-Umgebung alle installierten Anwendungen kennt:

rehash

Wenn der obige Vorgang erfolgreich war, haben Sie Ihren ersten Port erfolgreich installiert.

Während das Hauptbetriebssystem und die Konfiguration an den herkömmlichen Orten durchgeführt werden, wird optionale Software, die über das Ports-System installiert wird, in der Hierarchie "+ / usr / local +" installiert.

Dies bedeutet, dass Sie zum Konfigurieren der optionalen Software das Verzeichnis "+ / usr / local / etc " durchsuchen müssen. Die ausführbaren Dateien selbst werden hauptsächlich in den Verzeichnissen " / usr / local / bin" und "+ / usr / local / sbin" gespeichert. Beachten Sie dies, wenn Sie Anwendungen konfigurieren oder starten.

Hinweise zu Anwendungen, die als Dienste ausgeführt werden

Beachten Sie Folgendes: Wenn Sie einen Port installieren, der als Dienst ausgeführt wird, wird der Dienst bei der Installation nicht automatisch gestartet. Tatsächlich müssen Sie einige Schritte ausführen, um die Dienste in FreeBSD zu starten.

Wenn Sie einen Dienst einmal starten möchten, können Sie dies tun, indem Sie Folgendes eingeben:

sudo service  onestart

Zum Starten von MySQL könnten Sie beispielsweise Folgendes eingeben:

sudo service mysql-server onestart

Vorausgesetzt, die erforderliche Konfiguration ist abgeschlossen, wird der Dienst einmalig gestartet. Wenn Sie den Dienst zu einem späteren Zeitpunkt beenden möchten, können Sie Folgendes eingeben:

sudo service mysql-server onestop

Dies funktioniert zwar für schnelle Tests, ist jedoch nicht die ideale Methode zum Verwalten von Diensten in FreeBSD. Um Ihren Dienst so zu konfigurieren, dass er bei jedem Start gestartet wird, müssen Sie ihn aktivieren. Dazu müssen Sie der Datei "+ / etc / rc.conf" eine Zeile hinzufügen.

Die Init-Dateien, die angeben, wie optionale Dienste gestartet werden, werden im Verzeichnis "+ / usr / local / etc / rc.d " gespeichert. In jeder dieser Init-Dateien teilt eine Variable mit dem Namen " rcvar " dem Init-System mit, nach welcher Variablen in der Datei " / etc / rc.conf " gesucht werden soll, um zu bestimmen, ob der Dienst gestartet werden soll. Für jeden optionalen Dienst finden Sie die entsprechende Zeile, die Sie zur Datei " / etc / rc.conf +" hinzufügen können, indem Sie Folgendes eingeben:

grep rcvar /usr/local/etc/rc.d/*

Sie erhalten eine Liste, die ungefähr so ​​aussieht:

/usr/local/etc/rc.d/avahi-daemon:
/usr/local/etc/rc.d/avahi-dnsconfd:
/usr/local/etc/rc.d/dbus:
/usr/local/etc/rc.d/rsyncd:

Der hervorgehobene Teil der Ausgabe zeigt die Variable, die wir auf "YES" setzen müssen, um jeden dieser Dienste zu aktivieren.

Um beispielsweise den Daemon-Dienst "+ rsync " zu aktivieren, können wir diese Zeile zu " / etc / rc.conf +" hinzufügen:

rsyncd_enable="YES"

Die entsprechende Zeile muss sich in der Datei "+ / etc / rc.conf " befinden, bevor die normalen Dienstverwaltungsbefehle verwendet werden. Beispielsweise können Sie die obige Zeile mit Ihrem Texteditor am Ende der Datei " / etc / rc.conf +" einfügen oder indem Sie Folgendes eingeben:

sudo sh -c "echo 'rsyncd_enable="YES"' >> /etc/rc.conf"

Dadurch wird der rsync-Daemon bei jedem Start gestartet. Sie können den Dienst jetzt mit dem Befehl "+ service +" ohne das Präfix "one" steuern. Zum Beispiel können Sie den Dienst starten, indem Sie Folgendes eingeben:

sudo service rsyncd start

Sie können den Dienst erneut beenden, indem Sie Folgendes eingeben:

sudo service rsyncd stop

Installierten Port entfernen

Wenn Sie einen Port installiert haben, den Sie nicht mehr benötigen, können Sie die Anwendung mit einem ähnlichen, aber einfacheren Verfahren von Ihrem System entfernen.

Wir können das Ziel "+ deinstall +" verwenden, um eine Anwendung von unserem System zu entfernen. Wechseln Sie erneut in das Verzeichnis in der Ports-Struktur, die der zu entfernenden Anwendung zugeordnet ist:

cd /usr/ports/ports-mgmt/portmaster

Sie können die Anwendung von Ihrem System entfernen, indem Sie Folgendes eingeben:

sudo make deinstall

Wenn Sie auch die für diesen Port konfigurierten Optionen löschen möchten, geben Sie Folgendes ein:

sudo make rmconfig

Geben Sie Folgendes ein, um die Konfigurationsoptionen für diesen Port und alle seine Abhängigkeiten zu löschen:

sudo make rmconfig-recursive

Wenn Sie + portmaster + mit den obigen Befehlen entfernt haben, installieren Sie es neu, indem Sie Folgendes eingeben:

sudo make reinstall distclean

Aktualisieren von Anwendungen

Nachdem Sie nun wissen, wie Sie Programme installieren oder entfernen, sollten wir Ihnen zeigen, wie Sie Ihre Anwendungen auf dem neuesten Stand halten.

Überprüfen der UPDATING-Datei auf wichtige Update-Hinweise

Zu Beginn dieses Handbuchs haben wir die Zeitstempel für die Datei "+ / usr / ports / UPDATING " gespeichert, bevor wir " portsnap +" zum Aktualisieren unseres Ports-Baums verwendeten.

Die Datei "+ / usr / ports / UPDATING +" enthält wichtige Hinweise von den Port-Betreuern zu Aktualisierungen und Änderungen, die möglicherweise zusätzliche manuelle Schritte des Administrators erfordern. Wenn Sie diese Datei vor dem Aktualisieren der Anwendungen nicht lesen und ihre Anweisungen nicht befolgen, kann Ihr System unbrauchbar werden oder die Funktionalität Ihrer Anwendungen beeinträchtigen.

Überprüfen Sie zunächst den Zeitstempel, den wir in der Datei in unserem Ausgangsverzeichnis gespeichert haben:

cat ~/last_update
 File: "/usr/ports/UPDATING"
 Size: 375337       FileType: Regular File
 Mode: (0644/-rw-r--r--)         Uid: (    0/    root)  Gid: (    0/   wheel)
Device: 0,81   Inode: 2011338    Links: 1
Access: Thu Dec 11 22:24:59 2014
Modify:
Change:

Denken Sie daran, dass der Zeitstempel "Ändern" den Zeitpunkt angibt, zu dem die UPDATING-Datei auf unserem System zuletzt von einem Port-Betreuer geändert wurde, und der Zeitstempel "Ändern" den Zeitpunkt unserer letzten Synchronisierung angibt. Die obigen Informationen sind die alten Zeitstempel. Anhand dieser Informationen können wir erkennen, dass wir auf alle Einträge vom 11. Dezember bis zum aktuellen Datum achten müssen.

Öffnen Sie jetzt die aktualisierte UPDATING-Datei:

less /usr/ports/UPDATING

Die Datei sieht ungefähr so ​​aus:

This file documents some of the problems you may encounter when upgrading
your ports.  We try our best to minimize these disruptions, but sometimes
they are unavoidable.

You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.

20150101:
 AFFECTS: users of net/unison and net/unison-nox11
 AUTHOR: [email protected]

 Unison has been upgraded to version 2.48, which uses a different wire
 protocol than 2.40 did.  In order to support synchronization with
 other computers where Unison is still at version 2.40, a new port
 net/unison240 has been created.  It provides unison240 and if that is
 GTK2-enabled, also unison240-text.  This unison240 port can be
 installed in parallel with the existing net/unison port.

20141230:
 AFFECTS: users of deskutils/xpad
 AUTHOR: [email protected]

 deskutils/xpad has been moved to deskutils/xpad3, since 4.x has been around
 for a while.

 Should you wish to stick with legacy branch at this time;

 # portmaster -o deskutils/xpad deskutils/xpad3

. . .

Diese Datei enthält alle potenziell wichtigen Änderungen für jeden verfügbaren Port, die bis ins Jahr 2008 zurückreichen. Sie müssen nur die folgenden Hinweise beachten:

  • Wurden seit der letzten Aktualisierung Ihrer Ports hinzugefügt

  • Beziehen Sie die Ports ein, die Sie auf Ihrem System installiert haben

In diesem Beispiel müssten wir also nur auf Hinweise achten, die seit dem 11. Dezember hinzugefügt wurden und unsere installierten Ports betreffen. Wenn Sie nicht wissen, welche Ports auf Ihrem System installiert sind, können Sie mit + portmaster + eine vollständige Liste erstellen:

portmaster -l
===>>> Root ports (No dependencies, not depended on)
===>>> dialog4ports-0.1.5_2
===>>> pkg-1.4.0
===>>> pkgconf-0.9.7
===>>> portmaster-3.17.7
===>>> rsync-3.1.1_3
===>>> 5 root ports

===>>> Trunk ports (No dependencies, are depended on)
===>>> ca_root_nss-3.17.3_1
===>>> expat-2.1.0_2

. . .

Die Ausgabe wird entsprechend ihrer Abhängigkeitsbeziehungen in Abschnitte unterteilt. Verwenden Sie diese Informationen, um die UPDATING-Hinweise zu überprüfen.

Wenn manuelle Schritte erforderlich sind, führen Sie diese aus, bevor Sie mit dem restlichen Update fortfahren.

Auf bekannte Sicherheitslücken prüfen

Eine weitere Überlegung, die Sie beim Aktualisieren berücksichtigen sollten, ist, ob die auf Ihrem System installierte Software bekannte Sicherheitslücken aufweist.

FreeBSD unterhält eine Schwachstellendatenbank, in der Sie überprüfen können, ob in einem Ihrer Ports oder Pakete Sicherheitsprobleme aufgetreten sind. Diese Funktionalität ist im + pkg + Tool enthalten. Führen Sie eine Sicherheitsüberprüfung durch, indem Sie Folgendes eingeben:

sudo pkg audit -F

Dadurch wird die neueste Version der Schwachstellendatenbank von den Servern des FreeBSD-Projekts heruntergeladen. Anschließend werden die Versionen aller installierten Ports oder Pakete überprüft und mit den Einträgen in der Sicherheitsdatenbank verglichen.

Wenn auf Ihrem System installierte Ports oder Pakete bekannte Schwachstellen in der Datenbank aufweisen, werden Sie benachrichtigt. In der Regel ist mindestens ein aktueller Port verfügbar, der das Problem behebt.

Im Folgenden wird erläutert, wie alle Ports auf Ihrem System oder nur eine Teilmenge davon aktualisiert werden. Unabhängig von Ihrer Update-Strategie ist es wichtig, dass Sie mindestens die Ports aktualisieren, bei denen Sicherheitslücken bekannt sind.

Installierte Ports aktualisieren

Nachdem Sie alle in den UPDATING-Dateien beschriebenen manuellen Schritte ausgeführt haben, können Sie Ihre Software aktualisieren.

Um festzustellen, für welche Ports Updates verfügbar sind, können Sie den Befehl + portmaster + mit dem Flag + -L + verwenden:

portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> dialog4ports-0.1.5_2
===>>> pkg-1.4.0
       ===>>> New version available: pkg-1.4.3
===>>> pkgconf-0.9.7
===>>> portmaster-3.17.7
===>>> rsync-3.1.1_3
===>>> 5 root ports

===>>> Trunk ports (No dependencies, are depended on)
===>>> ca_root_nss-3.17.3_1
===>>> expat-2.1.0_2

. . .

===>>> 44 total installed ports
       ===>>> 4 have new versions available

Dies liefert eine ähnliche Ausgabe wie die zuvor verwendete Variante in Kleinbuchstaben, prüft jedoch auch, ob Aktualisierungen verfügbar sind. Hier können wir sehen, dass für den "+ pkg +" - Port eine neue Version verfügbar ist. Wir können sehen, dass es insgesamt 4 Ports gibt, für die neue Versionen verfügbar sind.

Um einen einzelnen Port zu aktualisieren, können Sie zum Verzeichnis des Ports in der Port-Struktur wechseln und die neue Version der Software neu installieren:

sudo make deinstall reinstall

Sie können dasselbe auch mit dem Befehl + portmaster + erreichen. Sie müssen die Kategorie und den Portnamen angeben. Um beispielsweise den Befehl "+ wget +" zu aktualisieren, können Sie Folgendes eingeben:

sudo portmaster ftp/wget

Mit dem obigen Befehl können auch Ports installiert werden. Viele Benutzer mit einem anderen Hintergrund empfinden "+ portmaster " als vertrauteres Software-Management-Erlebnis als die Verwendung der oben beschriebenen " make +" - Ziele.

Obwohl es möglich ist, Ports unabhängig voneinander zu aktualisieren, ist es normalerweise am besten, die gesamte Software auf einmal zu aktualisieren. Sie können dies mit + Hafenmeister + tun, indem Sie das + -a + Flag benutzen:

sudo portmaster -a

Dadurch werden alle Ports auf dem System auf die neueste Version aktualisiert. Alle neuen Konfigurationsoptionen werden Ihnen zu Beginn des Prozesses angezeigt. Wenn Sie Pakete mit "+ pkg +" mit neueren Versionen installiert haben, die über das Ports-System verfügbar sind, werden diese ebenfalls aktualisiert und auf Ports übertragen.

Fazit

Inzwischen sollten Sie ein gutes Verständnis für die Arbeit mit Ports auf einem FreeBSD-System haben. Die Ports sind äußerst flexibel, sodass Sie die meisten Anwendungen auf Ihrem Server mit geringem Aufwand problemlos anpassen können.

Viele Administratoren begrüßen den Kompromiss zwischen Kompilierungszeit und erhöhter Kontrolle, aber Ihre Anforderungen können variieren. Das Erlernen des Ports-Systems ist jedoch eine gute Investition, unabhängig von Ihrer Softwarestrategie auf FreeBSD. In einigen Fällen ist möglicherweise noch kein Paket für wichtige Updates verfügbar, und es gibt bestimmte Softwareteile, die aufgrund von Lizenzbeschränkungen nicht in einem Paketformat verteilt werden können. In diesen Fällen müssen unabhängig von Ihren Einstellungen Ports verwendet werden.