Wie man Pakete mit dem pkg Binary Package Manager unter FreeBSD verwaltet 12
FreeBSD ist ein quelloffenes, Unix-ähnliches Betriebssystem, das für moderne Server, Desktops und eingebettete Plattformen verwendet wird und seit mehr als dreißig Jahren von einer großen Gemeinschaft kontinuierlich weiterentwickelt wird. Seine fortschrittlichen Netzwerk-, Sicherheits- und Speicherfunktionen haben FreeBSD zur Plattform der Wahl für viele der meistfrequentierten Websites und der am weitesten verbreiteten eingebetteten Netzwerk- und Speichergeräte gemacht. Giganten wie Netflix, Yahoo!, WhatsApp, BBC und Sony verwenden FreeBSD in irgendeiner Form. Das FreeBSD-System ist nicht so bekannt wie Linux, hauptsächlich weil sich Linux seit vielen Jahren auf den Desktop konzentriert und das FreeBSD-Projekt eher serverbasiert ist.
In diesem Tutorial lernen Sie die Verwaltung von Binärpaketen mittels pkg unter dem Betriebssystem FreeBSD 12 kennen, das zum Zeitpunkt der Erstellung dieses Artikels die aktuellste Version ist. Das meiste davon gilt auch für die frühere Version FreeBSD 11.
Voraussetzungen
- FreeBSD 12 Betriebssystem
- Zugang zum root- oder sudo-Konto
Häfen und Pakete
Auf dem FreeBSD-System haben wir zwei verschiedene Methoden, um Zusatzsoftware zu installieren: über ports und über vorkonfigurierte Pakete dass die meisten Benutzer sich für die Installation und Verwaltung von Software entscheiden werden.
Ports ist ein System zur Erstellung zusätzlicher Software unter FreeBSD. Bei Ports beginnen Sie mit dem rohen Quellcode, der vom Softwarehersteller zur Verfügung gestellt wird, und bauen die Software genau so, wie Sie sie benötigen, wobei Sie Funktionen nach Belieben aktivieren und deaktivieren können.
Pakete sind vorkompilierte Software, und sie sind das Ergebnis der Erstellung von Portierungen, wobei die Optionen verwendet werden, von denen der Port-Betreuer glaubt, dass sie für die verschiedensten Leute am nützlichsten sind, und sie in einem Paket gebündelt werden, um sie leicht installierbar zu machen. Mit den Paketen können Sie Zusatzsoftware schnell installieren, deinstallieren und aktualisieren. Sie sind das, was die meisten Benutzer verwenden werden. Das FreeBSD-Paketsystem wird als Paket oder einfach pkg
. Paketinformationen werden in einer SQLite-Datenbank gespeichert, die Sie über Paketdaten abfragen können.
Eine weitere wichtige Information über die FreeBSD-Paketverwaltung ist der Ort, an dem sich die Binärpakete befinden. Pakete installieren Binärdateien unter /usr/local
, und die meisten Konfigurationsdateien landen in /usr/local/etc
und nicht in /etc
. Wenn Sie aus der Linux-Welt kommen, finden Sie das vielleicht sehr ungewöhnlich.
Der FreeBSD-Paketmanager – pkg
pkg
ist der Ersatz der nächsten Generation für die traditionellen FreeBSD-Paketverwaltungswerkzeuge und bietet viele Funktionen, die den Umgang mit Binärpaketen schneller und einfacher machen. pkg
ist der einfachste Weg, Software zu installieren, die nicht bereits im Basissystem von FreeBSD enthalten ist. ist ein pkg
einzelnes Programm mit vielen Unterbefehlen. Sie werden für fast jede Operation an Paketen, wie das Installieren, Entfernen und Untersuchen von Paketen, verwendetpkg
. Alle Paketoperationen und -änderungen müssen als root
oder über sudo
.
So würden Sie ein acme.sh
Paket unter FreeBSD installieren:
pkg install acme.sh
Sie können den Befehl mit füttern, -y
um Proceed with this action? [y/N]:
Fragen bei der Installation von Software zu vermeiden, oder Sie können ihn so konfigurierenpkg
, dass er immer in einer Konfigurationsdatei angenommen -y
wird.
Um das Paket zu entfernen, würden Sie verwenden:
pkg delete acme.sh
Verwenden pkg help
Sie diese Funktion für eine Kurzreferenz der verfügbaren Unterbefehle oder für einen pkg help
Befehl, um die Handbuchseite für einen bestimmten Unterbefehl anzuzeigen.
pkg help pkg
help install
pkg help delete
Installation von pkg
Die Lagerversion von FreeBSD wird nicht mit dem installierten pkg
Paketmanager ausgeliefert. Sie müssen sie installieren. Wenn Sie zum ersten Mal versuchen, ein Paket zu installieren, werden Sie pkg
aufgefordert, das Paketverwaltungsprogramm zu installieren. Nehmen wir zum Beispiel an, das erste Paket, das Sie auf Ihrem frischen FreeBSD installieren wollen, ist wget
, und Sie werden die folgende Eingabeaufforderung in Ihrem Terminal sehen:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Sie drücken Y und ENTER auf Ihrer Tastatur und die Installation des Paketverwaltungs-Tools wird gestartet. Nachdem das Paketierungssystem eingerichtet ist, wird das erste Softwarepaket, das Sie installieren wollten (wget
), installiert.
Sie können das Paketierungssystem auch alleine installieren, ohne andere Pakete hinzuzufügen, indem Sie , ausführenpkg bootstrap
, aber das wird selten benutzt, vielleicht nur in System-Setup-Skripten. pkg
weiß, wie er sich selbst und andere Pakete installieren und aktualisieren kann.
Wie man nach Paketen sucht
Nun, da Sie einen Paketmanager installiert haben, können Sie Pakete installieren. Wenn Sie Systemadministrator sind, kennen Sie die Tatsache, dass verschiedene Betriebssysteme Paketversionen der gleichen Software unterschiedliche Namen zuweisen. Ein Paket für den Apache-Webserver unter FreeBSD hat zum Beispiel einen völlig anderen Namen als der paketierte Apache auf verschiedenen Linux-Distributionen. Bevor Sie also etwas installieren können, müssen Sie herausfinden, wie das Paket heißt, das Sie installieren wollen.
Die Liste der verfügbaren Anwendungen von FreeBSD wächst ständig. Das FreeBSD Project bietet mehrere Sätze von Paketen in einem öffentlichen Repository an, und sie werden alle paar Tage aktualisiert. Derzeit gibt es über 25.000 Pakete.
Versuchen wir zum Beispiel, nach dem Apache-Webserver zu suchen.
pkg search apache
# apache24-2.4.38 Version 2.4.x of Apache web server
Es findet alle Pakete mit apache
in ihrem Namen. Dies wird eine lange Liste zurückgeben, aber was Sie suchen, ist ein apache24
Paket. Zu jedem Paket gibt es eine kurze Beschreibung. Dies sollte Ihnen bei der Entscheidung helfen, welches Paket installiert werden soll. Aber es ist nicht immer einfach.
Einige Suchanfragen können Hunderte von Ergebnissen erzeugen. Sie müssen verschiedene Befehlszeilenoptionen verwenden, um die Suchergebnisse zu trimmen oder anzupassen. Konsultieren pkg-search
Sie die Manpage oder die Hilfeseite, pkg help search
um mehr über allgemeine Suchoptionen zu erfahren.
Wenn Sie sich nicht sicher sind, ob ein Paket das ist, was Sie wollen, können Sie mit dem folgenden Befehl Einzelheiten des Pakets nachschlagen:
pkg search -R apache24
# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: "apache@FreeBSD.org"
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .
Dieser Befehl gibt Ihnen viele nützliche Informationen über das Paket.
Wie man neue Pakete mit pkg installiert
Um Software zu installieren, verwenden Sie den install
Unterbefehl von pkg und den Namen eines zu installierenden Pakets.
pkg install apache24
Wenn Sie Pakete mit pkg install
installieren, pkg
konsultieren Sie den lokalen Paketkatalog und laden Sie dann das angeforderte Paket aus dem Repository unter pkg.FreeBSD.org
. Sobald das Paket installiert ist, wird es in einer SQLite-Datenbank registriert, die in . Achten Sie darauf, diese Datei nicht zu löschen, sonst verliert Ihr System die Übersicht darüber, welche Pakete installiert wurden. Wenn die Software Abhängigkeiten hat, pkg
wird sie diese herausfinden und zusammen mit dem Basispaket installieren. Pakete, die als Abhängigkeiten installiert werden, werden als automatische Pakete bezeichnet.
pkg
hat die Möglichkeit, Pakete einfach über das Internet herunterzuladen, sie an einem Ort auf der Festplatte zu speichern und sie zu einem anderen Zeitpunkt zu installieren. Sie können den pkg fetch
Befehl verwenden, um das Paket herunterzuladen, ohne es zu installieren.
pkg fetch nginx
Dieser Befehl holt nur das Nginx-Paket ohne seine Abhängigkeiten. Sie können das -d
Flag verwenden, um alle Abhängigkeiten sowie das benannte Paket zu erfassen.
pkg fetch -d nginx
Die Pakete werden in das Paket-Cache-Verzeichnis heruntergeladen/var/cache/pkg
. Nachdem Sie die Pakete geholt haben, pkg
werden sie in dieses Verzeichnis gesteckt. Sie können Dateien auflisten, um zu sehen, was sie enthalten.
ls /var/cache/pkg
Um ein heruntergeladenes Paket nach einem Fetch zu installieren, führen Sie es nun pkg install
normal aus. Der Installationsprozess verwendet die zwischengespeicherten Dateien und nicht die heruntergeladenen.
Mit der Zeit kann das Paket-Cache-Verzeichnis groß werden. Der pkg clean
Befehl entfernt alle zwischengespeicherten Pakete, die durch neuere Versionen ersetzt wurden, sowie alle Paketdateien, die sich nicht mehr im Repository befinden.
pkg clean
Wenn Sie alle zwischengespeicherten Pakete entfernen möchten, verwenden Sie das -a
Flag.
pkg clean -a
Wenn Sie den Paket-Cache nach jeder Paketinstallation oder Aktualisierung automatisch leeren möchten, setzen Sie die pkg.conf
Option AUTOCLEAN
auf true
.
Wie Sie konfigurieren pkg
Das pkg
Programm ist so konzipiert, dass es sehr flexibel ist. Jeder Unterbefehl hat eine ganze Reihe von Optionen. Sie können für die meisten Programme ein angepasstes, aber konsistentes Verhalten mit der systemweiten Konfigurationsdatei für pkg
, die sich in /usr/local/etc/pkg.conf
.
pkg.conf
Datei enthält auskommentierte Standardwerte für pkg
. Allein durch das Lesen dieser Datei können Sie eine Menge über das pkg
Verhalten lernen. Die Konfiguration ist in der universellen Konfigurationssprache (UCL) geschrieben, und es gibt viele auskommentierte Konfigurationsoptionen und eine ganze Reihe von Aliasen. Variablen können auf eine ganze Zahl, eine Zeichenfolge oder einen booleschen Wert gesetzt werden
#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10"; # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .
Sie können Aliase für pkg
Unterbefehle in pkg.conf
. Am Ende von pkg.conf
, finden Sie einen Abschnitt mit der Bezeichnung . Wenn Sie wiederholt komplexe Befehle ausführen, sollten Sie Aliase hinzufügen.
Weitere Informationen über das Dateiformat und die Optionen finden Sie in der pkg.conf(5)
Man Page.
man pkg.conf
Wie Sie Informationen über installierte Pakete anzeigen können
Wenn Sie vergessen haben, welche Pakete Sie auf einem System installiert haben, können Sie mit pkg info
command eine vollständige Liste der installierten Software erhalten.
pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .
Wenn Sie weitere Informationen über ein installiertes Paket wünschen, verwenden Sie pkg info
und den Paketnamen. Dies zeigt die Details der Paketinstallation in einem menschenfreundlichen Bericht.
pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .
Sie können eine Menge nützlicher Informationen sehen, wie z.B. die Version der Software, den Zeitpunkt der Software-Installation, die Software-Lizenz, die Kompilierzeit-Flags, usw. Siehe die Manpage pkg-info
für die vollständigen Details.
Wie man Pakete entfernt
Um Binärpakete zu entfernen oder zu deinstallieren, verwenden Sie den pkg delete
Unterbefehl. Es ist auch als .
pkg delete nginx
# or
pkg remove nginx
Sie erhalten eine Liste der zu entfernenden Pakete und wie viel Platz sie freimachen werden.
Wenn Sie ein Paket entfernen, von dem andere Pakete abhängen, werden auch die abhängigen Pakete pkg
entfernt.
Wie man Pakete sperrt
Es kann einen Zeitpunkt geben, an dem Sie möchten, dass ein Paket auf Ihrem Server niemals aktualisiert wird. Wenn Sie ein Paket sperren, pkg
wird es nicht aktualisiert, herabgestuft, deinstalliert oder neu installiert. Sie wendet die gleichen Regeln auf die Abhängigkeiten des Pakets und die Programme an, von denen es abhängt.
pkg lock
Zum Sperren eines Pakets.
pkg lock openssl
Dieses openssl
Paket ist jetzt gesperrt.
Um alle derzeit im System gesperrten Pakete aufzulisten, verwenden Sie das -l
Kennzeichen.
pkg lock -l
Um die Sperre zu entfernen, verwenden Sie den pkg unlock
Befehl.
pkg unlock openssl
Um alle Pakete auf dem System auf einmal zu sperren oder zu entsperren, verwenden Sie das -a
Kennzeichen.
pkg lock -a
pkg unlock -a
Paket-Repositorien
pkg
unterstützt Paket-Repositories, die als Paket-Sammlungen bezeichnet werden. Sie können Repositories hinzufügen, entfernen, aktivieren und deaktivieren. Sie sollten jedes Repository in einer eigenen Datei im UCL-Format konfigurieren. Offizielle FreeBSD-Repositorien gehören in /etc/pkg
das Verzeichnis. FreeBSD wird mit aktiviertem Repo „FreeBSD“ ausgeliefert. Sie finden die Konfigurationsdatei in .
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Sie können bei Bedarf Repositories hinzufügen und entfernen. Wie /etc/pkg
für die offiziellen FreeBSD-Repositories reserviert, benötigen Sie ein weiteres Verzeichnis. Wenn Sie ein anderes Verzeichnis verwenden möchten, müssen Sie mit pkg.conf
der REPO_DIRS
Option einen Speicherort angeben/usr/local/etc/pkg/repos
. Das lokale Repository-Verzeichnis existiert nicht standardmäßig, daher müssen Sie es mit . Legen Sie Ihre eigenen Repository-Konfigurationen in diesem Verzeichnis ab
Beispiele pkg
für Befehle
In diesem Abschnitt werde ich einige der am häufigsten verwendeten Unterbefehle auflisten, die Sie wahrscheinlich bei der Administration des FreeBSD-Servers verwenden werden.
# Installs a package without asking any questions
pkg install -y package
# Makes a backup of the local package database
pkg backup
# Lists all installed packages
pkg info
# Shows extended information for a package
pkg info package
# Searches package repository
pkg search -i package
# Shows packages with known security vulnerabilities
pkg audit -F
# Shows which package owns the named file
pkg which file
# Removes unused packages
pkg autoremove
# Uninstalls a package
pkg delete package
# Removes cached packages from /var/cache/pkg
pkg clean -ay
# Updates local copy of the package catalog
pkg update
# Upgrades installed packages to their latest version
pkg upgrade
# Checks the integrity of all your packages
pkg check -saq
# Verifies that a package’s files are unaltered
pkg check -s nginx
# Shows what files came with the package
pkg info -l nginx
# Lists non-automatic packages
pkg prime-list
Schlussfolgerung
FreeBSD implementiert zwei ergänzende Technologien für die Installation von Software von Drittanbietern: die FreeBSD Ports-Sammlung für die Installation aus den Quellen und Pakete für die Installation aus vorkompilierten Binärdateien. Aber da FreeBSD das System immer mehr in Richtung einer universellen Paketverwaltung bewegt, sollten Sie versuchen, Software von Drittanbietern mit pkg
so viel wie möglich zu verwalten. Vermeiden Sie die Verwendung von Ports, es sei denn, die gewünschte Software hat keine paketierte Version oder Sie müssen die Optionen zur Kompilierzeit anpassen.