5.5. Benutzen von pkgng zur Verwaltung von Binärpaketen

pkgng ist ein verbesserter Ersatz für die traditionellen Paketverwaltungswerkzeuge von FreeBSD. 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.

5.5.1. Erste Schritte mit pkgng

FreeBSD 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:

# /usr/sbin/pkg

Für ältere Versionen von FreeBSD muss pkgng zunächst aus der Ports-Sammlung oder als Paket installiert werden.

Um pkgng aus den Ports zu installieren, geben Sie folgendes ein:

# cd /usr/ports/ports-mgmt/pkg
# make
# make install clean

Um das Paket zu installieren, geben Sie folgendes ein:

# pkg_add -r pkg

Bestehende FreeBSD Installationen benötigen eine Konvertierung der pkg_install-Paketdatenbank in das neue Format. Um die Paketdatenbank zu konvertieren, geben Sie folgendes ein:

# pkg2ng

Auf neu installieren Systemen, auf denen noch keine Software von Drittanbietern installiert wurde, kann dieser Schritt entfallen.

Wichtig:

Die Konvertierung ist unwiderruflich. Sobald die Paketdatenbank in das Format von pkgng umgewandelt wurde, sollten die traditionellen pkg_install Werkzeuge nicht mehr benutzt werden.

Anmerkung:

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 FreeBSD Ports-Sammlung neue Pakete mit pkgng und nicht mit pkg_install registriert, muss in FreeBSD 10.X und früheren Versionen folgende Zeile in /etc/make.conf hinzugefügt werden:

WITH_PKGNG=     yes

5.5.2. Konfiguration der pkgng Umgebung

Das 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 pkg.conf(5) beschrieben.

5.5.3. Grundlegende Bedienung von pkgng

Informationen zur Bedienung von pkgng ist in der Manualpage 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:

# pkg help install
# man pkg-install

5.5.3.1. Mit pkgng Informationen über installierte Pakete anzeigen

Informationen ü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:

# pkg info paketname

Um zu ermitteln welche Version von pkgng installiert ist, geben Sie folgendes ein:

# pkg info pkg
pkg-1.0.2	    New generation package manager

5.5.3.2. Installation und Deinstallation von Paketen mit pkgng

In der Regel werden Benutzer von FreeBSD Binärpakete wie folgt installieren:

# pkg install paketname

pkg install benutzt das in Abschnitt 5.5.2, „Konfiguration der pkgng Umgebung“ erwähnte Repository. Im Gegensatz dazu benutzt 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 pkg-add(8).

Zusätzliche Binärpakete können mit pkg intall installiert werden. Um beispielsweise curl zu installieren:

# 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... 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.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 manager

Wird ein Paket nicht mehr benötigt, kann es mit pkg delete entfernt werden. Wenn beispielsweise curl nicht mehr benötigt wird:

# 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... done

5.5.3.3. Installierte Pakete mit pkgng aktualisieren

Pakete die nicht mehr aktuell sind, können mit pkg version gefunden werden. 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:

# 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... done

5.5.3.4. Installierte Pakete mit pkgng auditieren

Gelegentlich 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:

# pkg audit -F

5.5.4. Fortgeschrittene Arbeiten mit pkgng

5.5.4.1. Automatisches Entfernen von nicht mehr benötigten Abhängigkeiten mit pkgng

Das 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:

# 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... done

5.5.4.2. Sicherung der pkgng Datenbank

Im 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:

# pkg backup -d pkgng.db

Anmerkung:

Ersetzen Sie den Dateinamen pkgng.db durch einen geeigneten Dateinamen.

Zusätzlich verfügt pkgng über ein periodic(8)-Skript, das automatisch eine tägliche Sicherung der Paketdatenbank erstellt, wenn in periodic.conf(5) daily_backup_pkgng_enable auf YES gesetzt ist.

Tipp:

Um pkg_install daran zu hindern, ebenfalls eine Sicherung der Paketdatenbank zu erstellen, muss in periodic.conf(5) daily_backup_pkgdb_enable auf NO gesetzt werden.

Um den Inhalt einer früheren Paketdatenbank wiederherzustellen, geben Sie folgendes ein:

# pkg backup -r /path/to/pkgng.db

5.5.4.3. Alte Pakete mit pkgng entfernen

Standardmäßig speichert pkgng Pakete in einem Cache-Verzeichnis, welches in 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:

# pkg clean

5.5.4.4. Manipulation der pkgng Paket Metadaten

Bei Software aus der FreeBSD 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:

# pkg set -o category/oldport:category/newport

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

Anmerkung:

Bei 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:

# 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>.