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/etcund 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. pkgist der einfachste Weg, Software zu installieren, die nicht bereits im Basissystem von FreeBSD enthalten ist. ist ein pkgeinzelnes 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 rootoder über sudo.

So würden Sie ein acme.shPaket unter FreeBSD installieren:

pkg install acme.sh

Sie können den Befehl mit füttern, -yum 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 -ywird.

Um das Paket zu entfernen, würden Sie verwenden:

pkg delete acme.sh

Verwenden pkg helpSie diese Funktion für eine Kurzreferenz der verfügbaren Unterbefehle oder für einen pkg helpBefehl, 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 pkgPaketmanager ausgeliefert. Sie müssen sie installieren. Wenn Sie zum ersten Mal versuchen, ein Paket zu installieren, werden Sie pkgaufgefordert, 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. pkgweiß, 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 apachein ihrem Namen. Dies wird eine lange Liste zurückgeben, aber was Sie suchen, ist ein apache24Paket. 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-searchSie die Manpage oder die Hilfeseite, pkg help searchum 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 installUnterbefehl von pkg und den Namen eines zu installierenden Pakets.

pkg install apache24

Wenn Sie Pakete mit pkg installinstallieren, pkgkonsultieren 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, pkgwird 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 fetchBefehl 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 -dFlag 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, pkgwerden 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 installnormal aus. Der Installationsprozess verwendet die zwischengespeicherten Dateien und nicht die heruntergeladenen.

Mit der Zeit kann das Paket-Cache-Verzeichnis groß werden. Der pkg cleanBefehl 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 -aFlag.

pkg clean -a 

Wenn Sie den Paket-Cache nach jeder Paketinstallation oder Aktualisierung automatisch leeren möchten, setzen Sie die pkg.confOption AUTOCLEANauf true.

Wie Sie konfigurieren pkg

Das pkgProgramm 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 pkgVerhalten 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 pkgUnterbefehle 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 infocommand 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 infound 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-infofür die vollständigen Details.

Wie man Pakete entfernt

Um Binärpakete zu entfernen oder zu deinstallieren, verwenden Sie den pkg deleteUnterbefehl. 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 pkgentfernt.

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, pkgwird 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 lockZum Sperren eines Pakets.

pkg lock openssl 

Dieses opensslPaket ist jetzt gesperrt.

Um alle derzeit im System gesperrten Pakete aufzulisten, verwenden Sie das -lKennzeichen.

pkg lock -l 

Um die Sperre zu entfernen, verwenden Sie den pkg unlockBefehl.

pkg unlock openssl 

Um alle Pakete auf dem System auf einmal zu sperren oder zu entsperren, verwenden Sie das -aKennzeichen.

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/pkgdas 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/pkgfü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.confder REPO_DIRSOption 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 pkgfü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 pkgso 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.

Links

Das könnte dich auch interessieren …