pkg ist der Nachfolger für die traditionellen Paketverwaltungswerkzeuge von FreeBSD. Es bietet viele Funktionen, die den Umgang mit Binärpaketen schneller und einfacher machen.
Wenn Sie lediglich vorgefertigte Binärpakete von den FreeBSD Spiegeln benutzen möchten, ist pkg für die Verwaltung von Paketen ausreichend.
Falls Sie jedoch die Software aus dem Quellcode bauen oder eigene Repositories verwenden, benötigen Sie ein separates Paketverwaltungswerkzeug.
pkg ist kein Ersatz für diese Werkzeuge. Während diese Werkzeuge Drittanbieter-Software sowohl aus Binärpaketen als auch aus der Ports-Sammlung installieren können, so installiert pkg ausschließlich Binärpakete.
FreeBSD enthält ein Bootstrap-Programm, welches
pkg zusammen mit den Manualpages
installiert. pkg wurde für FreeBSD
Versionen ab 10.X
entwickelt.
Nicht alle FreeBSD Versionen unterstüzen den folgenden Bootstrap Prozess. Eine aktuelle Liste finden Sie unter https://pkg.FreeBSD.org/. Andernfalls muss pkg aus der Ports-Sammlung oder als Binärpaket installiert werden.
Um das Bootstrap Programm zu starten, geben Sie folgendes ein:
#
/usr/sbin/pkg
Sie müssen eine Internetverbindung haben, damit der Bootstrap Prozess funktioniert.
Um den Port zu installieren, geben Sie stattdessen folgendes ein:
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
Bei der Aktualisierung eines bestehenden Systems, welches ursprünglich die alten pkg_* Werkzeuge verwendet hat, muss die Datenbank in das neue Format konvertiert werden, damit die neuen Werkzeuge wissen, welche Pakete bereits installiert sind. Sobald pkg installiert ist, muss die Paketdatenbank mit dem folgenden Befehl vom traditionellen Format in das neue Format konvertiert werden:
#
pkg2ng
Auf 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 pkg umgewandelt wurde, sollten die traditionellen pkg_* 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 Software ausgegeben, die nicht erfolgreich konvertiert werden konnte. Diese Anwendungen müssen manuell neu installiert werden.
Um sicherzustellen, dass die Ports-Sammlung neue
Pakete mit pkg und nicht mit
den traditionellen Formaten registriert, muss in
FreeBSD 10.X
und früheren
Versionen folgende Zeile in
/etc/make.conf
hinzugefügt werden:
WITH_PKGNG= yes
In der Voreinstellung benutzt pkg die Pakete der FreeBSD-Spiegel (das Repository). Wenn Sie ein eigenes Paket-Repository erstellen möchten, lesen Sie Abschnitt 4.6, „Pakete mit Poudriere bauen“
Weitere Konfigurationsoptionen für pkg sind in pkg.conf(5) beschrieben.
Informationen zur Bedienung von
pkg ist in pkg(8) verfügbar.
Alternativ kann pkg
ohne zusätzliche Argumente aufgerufen werden.
Jedes Argument von pkg ist in
seiner spezifischen Manualpage dokumentiert. Um
beispielsweise die Manualpage von
pkg install
zu lesen, geben Sie einen der
folgenden Befehle ein:
#
pkg help install
#
man pkg-install
Der Rest dieses Abschnitts beschreibt die typischen Verwaltungsaufgaben für Binärpakete, die mit pkg erledigt werden können. Jedes gezeigte Kommando verfügt über Optionen, um das Verhalten anzupassen. Details und weitere Beispiele finden Sie in den Manualpages der einzelnen Kommandos.
Der vierteljährliche Zweig (Quarterly) bietet eine besser vorhersehbare und stabilere Erfahrung bei der Installation und Aktualisierung von Ports und Paketen. Dies wird im Wesentlichen dadurch erreicht, das nur Aktualisierungen zugelassen werden, die nicht zum Funktionsumfang gehören. Der vierteljährliche Zweig zielt darauf ab, Sicherheitskorrekturen (Aktualisierungen und Rückportierungen von Commits), Fehlerbehebungen und Port-Konformität oder Framework-Änderungen zu erhalten. Der vierteljährliche Zweig wird zu Beginn eines jeden Quartals im Januar, April, Juli und Oktober von HEAD abgetrennt. Die Zweige werden nach dem Jahr (YYYY) und dem Quartal (Q1 - Q4) benannt, in dem sie erstellt wurden. Zum Beispiel wird der Zweig, der im Januar 2016 erstellt wurde, 2016Q1 genannt. Der neueste Zweig (Latest) stellt die aktuellsten Versionen der Pakete zur Verfügung.
Um vom Quarterly auf Latest zu wechseln, führen Sie die folgenden Befehle aus:
#
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
Bearbeiten Sie die Datei
/usr/local/etc/pkg/FreeBSD.conf
und
ändern Sie in der url:
-Zeile die
Zeichenkette quarterly in
latest.
Das Ergebnis sollte wie folgt aussehen:
FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes }
Führen Sie zuletzt diesen Befehl aus, um die neuen Repository-Metadaten zu aktualisieren:
#
pkg update -f
Informationen über bereits installierte Pakete können
mit pkg info
angezeigt werden. Dabei
wird, wenn keine weiteren Optionen angegeben werden, die
Version und die Beschreibung aller Pakete oder eines
einzelnen Pakets ausgegeben.
Um zu ermitteln welche Version von pkg installiert ist, geben Sie folgendes ein:
#
pkg info pkg
pkg-1.1.4_1
Ein Binärpaket installieren Sie mit dem folgenden
Befehl, wobei paketname
der Name
des zu installierenden Pakets ist:
#
pkg install
paketname
Dieser Befehl verwendet Daten aus dem Repository um zu bestimmen, welche Version der Software und welche Abhängigkeiten installiert werden müssen. Um beispielsweise curl zu installieren:
#
pkg install curl
Updating repository catalogue /usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s /usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s Updating repository catalogue The following 2 packages will be installed: Installing ca_root_nss: 3.15.1_1 Installing curl: 7.31.0_1 The installation will require 3 MB more space 0 MB to be downloaded Proceed with installing packages [y/N]:y
Checking integrity... done [1/2] Installing ca_root_nss-3.15.1_1... done [2/2] Installing curl-7.31.0_1... done Cleaning up cache files...Done
Das neue Paket und jedes weitere Paket, das als Abhängigkeit installiert wurde, ist in der Liste der installierten Pakete zu sehen:
#
pkg info
ca_root_nss-3.15.1_1 The root certificate bundle from the Mozilla Project curl-7.31.0_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.1.4_6 New generation package manager
Wird ein Paket nicht mehr benötigt, kann es mit
pkg delete
entfernt werden. Zum
Beispiel:
#
pkg delete curl
The following packages will be deleted: curl-7.31.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]:y
[1/1] Deleting curl-7.31.0_1... done
Installierte Pakete können mit diesem Kommando auf die neuesten Versionen aktualisiert werden:
#
pkg upgrade
Dieses Kommando vergleicht und aktualisiert die installierten Versionen der Pakete mit denen im Repository.
Regelmäßig werden Sicherheitslücken in Drittanbieter-Software entdeckt. pkg besitzt einen eingebauten Auditing-Mechanismus. Um die auf dem System installierte Software auf Sicherheitslücken zu prüfen, geben Sie folgenden Befehl ein:
#
pkg audit -F
Das Entfernen eines Pakets kann möglicherweise Abhängigkeiten hinterlassen, die nicht mehr benötigt werden. Unnötige Pakete, die als Abhängigkeit von anderen Paketen installiert wurden, können automatisch erfasst und entfernt werden:
#
pkg autoremove
Packages to be removed: ca_root_nss-3.15.1_1 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]:y
Deinstalling ca_root_nss-3.15.1_1... done
Pakete, die als Abhängigkeiten installiert werden, bezeichnet man als automatische Pakete. Nichtautomatische Pakete, also die Pakete, die explizit nicht als Abhängigkeit von einem anderen Paket installiert wurden, können wie folgt angezeigt werden:
#
pkg prime-list
nginx openvpn sudo
pkg prime-list
ist ein Alias-Befehl,
der in /usr/local/etc/pkg.conf
definiert
ist. Es gibt noch weitere Befehle die Sie verwenden können,
um die Paketdatenbank des Systems abzufragen. Beispielsweise
kann der Befehl pkg prime-origins
benutzt
werden, um das ursprüngliche Portverzeichnis der oben
gezeigten Liste zu erhalten:
#
pkg prime-origins
www/nginx security/openvpn security/sudo
Diese Liste kann verwendet werden, um alle auf einem System installierten Pakete mit Hilfe von Werkzeugen wie ports-mgmt/poudriere oder ports-mgmt/synth neu zu erstellen.
Um ein bereits installiertes Paket als automatisches Paket zu kennzeichnen, können Sie folgenden Befehl benutzen:
#
pkg set -A 1 devel/cmake
Sobald ein Paket nicht mehr genutzt wird und es als
automatisch gekennzeichnet ist, wird es durch
pkg autoremove
erfasst.
Das kennzeichnen eines installierten Pakets als nicht automatisch kann wie folgt gemacht werden:
#
pkg set -A 0 devel/cmake
Im Gegensatz zum alten Paketverwaltungssystem beinhaltet pkg einen eigenen Mechanismus zur Sicherung der Paketdatenbank. Diese Funktionalität ist standardmäßig aktiviert.
Um das Skript daran zu hindern, eine Sicherung der
Paketdatenbank zu erstellen, muss in periodic.conf(5)
daily_backup_pkgdb_enable="NO"
gesetzt
werden.
Um den Inhalt einer früheren Paketdatenbank
wiederherzustellen, geben Sie folgendes Kommando ein und
ersetzen Sie /path/to/pkg.sql
durch den Speicherort der gesicherten Datenbank:
#
pkg backup -r
/path/to/pkg.sql
Wenn Sie eine Sicherung wiederherstellen, die von
einem periodic
Skript erstellt wurde,
müssen Sie diese zuerst dekomprimieren.
Um eine manuelle Sicherung der
pkg Paketdatenbank zu erstellen,
führen Sie den folgenden Befehl aus, und ersetzen Sie
/path/to/pkg.sql
durch einen
geeigneten Dateinamen:
#
pkg backup -d
/path/to/pkg.sql
Standardmäßig speichert pkg
Pakete in einem Cache-Verzeichnis, welches in
pkg.conf(5) in der Variablen
PKG_CACHEDIR
definiert wird. Nur Kopien der
neusten installierten Pakete werden beibehalten. Ältere
Versionen von pkg haben alle
Pakete aufbewahrt. Um diese veralteten Pakete zu entfernen,
geben Sie folgendes ein:
#
pkg clean
Um alle Pakte aus dem Cache-Verzeichnis zu löschen, geben Sie ein:
#
pkg clean -a
Bei Software aus der FreeBSD Ports-Sammlung kann es
vorkommen, dass die Hauptversionsnummer geändert wird.
Dafür hat pkg ein eingebautes
Kommando, um die Quelle eines Pakets zu aktualisieren. Dies
ist nützlich, wenn zum Beispiel lang/php5
zu lang/php53 umbenannt wurde, damit
lang/php5 jetzt die Version
5.4
integrieren kann.
Um die Quelle des Pakets für das obige Beispiel zu ändern, geben Sie folgendes ein:
#
pkg set -o lang/php5:lang/php53
Ein weiteres Beispiel: Um lang/ruby18 auf lang/ruby19 zu aktualisieren, geben Sie folgendes ein:
#
pkg set -o lang/ruby18:lang/ruby19
In diesem letzten Beispiel wird die Quelle der
Bibliotheken von libglut
von
graphics/libglut auf
graphics/freeglut geändert:
#
pkg set -o graphics/libglut:graphics/freeglut
Bei einem Wechsel der Paketquelle ist es notwendig, die Pakete neu zu installieren, welche von dem Paket abhängig sind, das seine Paketquelle geändert hat. Um eine Neuinstallation von abhängigen Paketen zu erzwingen, führen Sie folgenden Befehl aus:
#
pkg install -Rf
graphics/freeglut
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.