Das Management von Binärpaketen unter FreeBSD, ist derzeit suboptimal. Es hat viele Gründe, aber hauptsächlich zu nennen sind dort 2:
/var/db/pkg speichert nicht alle notwendigen Informationen, sie ist langsam, ineffizient und fehleranfällig.pkg_* Tools sind ebenso fehlerhaft und bieten nicht genug Funktionen.
In der Vergangenheit gab es mehrere Versuche um beide Nachteile herumzufrickeln. Reine Port-Tools wie Portmaster wurden erweitert, um auch Binärpakete verwalten zu können. Portupgrade implementierte seine eigene Datenbank. Dennoch erreicht man nie die Klasse, die Nutzer von Linuxdistributionen gewohnt sind. Aus diesem Grund wurde in den letzten Monaten der Binärpaketmanager pkgng geschrieben.
Die Designziele waren:
/var/db/pkg durch eine neue Datenbank, die schneller und robuster als die derzeitige Struktur ist. Die Wahl fiel auf eine sqlite-Datenbank.pkgng nicht mehr Teil des Basisystems werden, viel mehr ein integraler Bestandteil der Ports. Es muss im Rahmen der Installation des Portstree installiert werden. Vielleicht kann hier noch jemand etwas zu sagen, der mit der Materie vertrauter ist.pkgng ist daher ein Hybrid geworden, der Funktionen aus apt, yum, packman und einigen anderen Tools aus der Linuxwelt kombiniert.BITTE BEACHTET: Die Paketdatenbank muss konvertiert werden! Ein Weg zurück zu den bisherigen pkg_* Tools, ist nicht möglich!
alle installierten Pakete zählen:
> pkg -N pkg: 854 packages installed
die explizit installierten Pakte, ohne Abhängigkeiten, auflisten:
> pkg prime-list > pkg prime-origins
pkg-lock(8) wird verwendet, um Pakete gegen Neuinstallation, Änderung oder Löschung zu sperren. pkg-unlock(8) entsperrt die genannten Pakete. Beide Varianten wirken sich nur auf aktuell installierte Pakete aus. Folglich ist es unmöglich, die Installation eines neuen Pakets mit diesem Mechanismus zu blockieren, es sei denn, eine solche Installation erfordert die Aktualisierung eines gesperrten Pakets.
> pkg lock nginx-lite > pkg unlock nginx-lite
alle bekannten Sicherheitslücken der installierten Pakete auflisten:
> pkg audit -F ... cyrus-sasl-2.1.27_2 is vulnerable: cyrus-sasl -- Fix off by one error CVE: CVE-2019-19906 WWW: https://vuxml.FreeBSD.org/freebsd/a80c6273-988c-11ec-83ac-080027415d17.html 46 problem(s) in 24 installed package(s) found.
alle Kommentare, von einem bestimmten installierten Paket (FFmpeg), anzeigen
> pkg info ffmpeg
aus den Kommentaren nur den TAG "FreeBSD_version" anzeigen
> pkg annotate -S ffmpeg FreeBSD_version ffmpeg-6.0,1: Tag: FreeBSD_version Value: 1302001
von allen installierten Paketen den TAG "FreeBSD_version" anzeigen
> pkg annotate -aS FreeBSD_version ... ffmpeg-6.0,1: Tag: FreeBSD_version Value: 1302001 ...
Paket-Name suchen:
> pkg search exiftool p5-Image-ExifTool-12.00 Perl module for getting EXIF data from image files p5-Image-ExifTool-devel-10.66 Perl module for getting EXIF data from image files
Versionsunabhängigen Paket-Name suchen:
> pkg search -o exiftool graphics/p5-Image-ExifTool Perl module for getting EXIF data from image files graphics/p5-Image-ExifTool-devel Perl module for getting EXIF data from image files
Paket installieren:
> pkg install graphics/p5-Image-ExifTool
Informationen über das Paket auslesen:
> pkg info graphics/p5-Image-ExifTool p5-Image-ExifTool-12.00 Name : p5-Image-ExifTool Version : 12.00 Installed on : Sat Apr 10 13:26:31 2021 CEST Origin : graphics/p5-Image-ExifTool Architecture : FreeBSD:13:* Prefix : /usr/local Categories : perl5 graphics Licenses : GPLv1+, ART10 Maintainer : devin@sevenlayer.studio WWW : https://sno.phy.queensu.ca/~phil/exiftool/ Comment : Perl module for getting EXIF data from image files ...
Statistikwerte über das Paket auslesen:
> pkg stats graphics/p5-Image-ExifTool
Local package database:
Installed packages: 592
Disk space occupied: 6 GiB
Remote package database(s):
Number of repositories: 1
Packages available: 29890
Unique packages: 29890
Total size of packages: 86 GiB
ermitteln, welches Paket dieses Programm installiert hat:
> pkg which /usr/local/bin/exiftool /usr/local/bin/exiftool was installed by package p5-Image-ExifTool-12.00 > pkg which -o /usr/local/bin/exiftool /usr/local/bin/exiftool was installed by package graphics/p5-Image-ExifTool
alle installierten Pakete anzeigen:
root@FreeBSD10:~ # pkg info -a ... bash-5.1.4 GNU Project's Bourne Again SHell ... root@FreeBSD10:~ # pkg info -ao ... bash-5.1.4 shells/bash ...
root@FreeBSD10:~ # pkg info -l shells/bash
bash-5.1.4:
/usr/local/bin/bash
/usr/local/bin/bashbug
/usr/local/bin/rbash
...
Ein Paket als "automatisch installiert" markieren:
> pkg set -A 1 lang/gcc12 Mark gcc12-12.2.0_6 as automatically installed? [y/N]: y
Abhängigkeiten, von denen dieses Paket abhängt, anzeigen:
root@FreeBSD10:~ # pkg info -d shells/bash
bash-4.3.42:
indexinfo-0.2.4
gettext-runtime-0.19.6
Abhängigkeiten, die von diesem Paket abhängen, anzeigen:
root@FreeBSD10:~ # pkg info -r shells/bash bash-4.3.33:
Abhängigkeiten überprüfen und ggf. reparieren:
# pkg check -d Checking all packages: 100%
das Quell-Paket zu einer Datei finden:
root@FreeBSD10:~ # pkg which /usr/local/bin/mp4box /usr/local/bin/mp4box was installed by package gpac-mp4box-0.5.0
alle installierten Dateien von einem Paket anzeigen:
root@FreeBSD10:~ # pkg info -ol shells/bash
bash-4.3.33
Origin : shells/bash
Files :
/usr/local/bin/bash
/usr/local/bin/bashbug
/usr/local/bin/rbash
/usr/local/info/bash.info
/usr/local/man/man1/bash.1.gz
...
Meta-Daten eines Paketes ausgeben:
root@FreeBSD10:~ # pkg info bash bash-4.3.33 Name : bash Version : 4.3.33 Installed on : Thu Mar 19 20:59:38 UTC 2015 Origin : shells/bash Architecture : freebsd:10:x86:64 Prefix : /usr/local Categories : shells Licenses : GPLv3 Maintainer : ehaupt@FreeBSD.org WWW : http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html Comment : The GNU Project's Bourne Again SHell ...
das Origin eines Paketes anzeigen:
root@FreeBSD10:~ # pkg info -o dokuwiki-20140929_1 dokuwiki-20140929_1 www/dokuwiki
das Origin von allen installierten Paketen anzeigen:
root@FreeBSD10:~ # pkg info -oa
Paket suchen:
root@FreeBSD10:~ # pkg search dvd dvd+rw-tools-7.1 dvd-slideshow-0.8.4_1 ...
Paket installieren:
root@FreeBSD10:~ # pkg install dvd+rw-tools-7.1 root@FreeBSD10:~ # pkg install www/dokuwiki
alle installierten Pakete anzeigen:
root@FreeBSD10:~ # pkg info ... dvd+rw-tools-7.1 DVD burning software ...
Paket wieder löschen:
root@FreeBSD10:~ # pkg info | grep -F dvd dvd+rw-tools-7.1 DVD burning software root@FreeBSD10:~ # pkg delete dvd+rw-tools-7.1
Paket rekursiv löschen:
root@FreeBSD10:~ # pkg delete -fa dvd+rw-tools-7.1
Aktualisieren Sie die lokale pkgng-Datenbank:
root@FreeBSD10:~ # pkg update -f
alle installierten Pakete aktuallisieren:
root@FreeBSD10:~ # pkg update && pkg updating | tee updating.txt && pkg upgrade
unsichere Pakete suchen:
root@FreeBSD10:~ # pkg audit 0 problem(s) in the installed packages found.
die Abhängigkeiten aller installierten Pakete überprüfen:
root@FreeBSD10:~ # pkg check -d
die Schecksummen aller installierten Pakete neu generieren:
root@FreeBSD10:~ # pkg check -r
die Schecksummen aller installierten Pakete überprüfen:
root@FreeBSD10:~ # pkg check -s
wenn man einfach nur den Paketnamen angibt, dann passiert folgendes:
root@FreeBSD10:~ # pkg install postfix dovecot
Updating repository catalogue
digests.txz 100% 1043KB 40.1KB/s 43.5KB/s 00:26
The following 7 packages will be installed:
Installing pcre: 8.33
Installing postfix: 2.7.15,1
Installing postfix: 2.8.16,1
Installing postfix: 2.9.8,1
Installing dovecot: 1.2.17
Installing dovecot: 2.2.9
Installing postfix: 2.10.2,1
The installation will require 80 MB more space
13 MB to be downloaded
Proceed with installing packages [y/N]:
…das wollen wir natürlich nicht…
deshalb müssen wir immer erst den Paketnamen mit Versionsnummer ermitteln:
root@FreeBSD10:~ # pkg search postfix postfix-2.10.2,1 postfix-2.7.15,1 postfix-2.8.16,1 postfix-2.9.8,1 postfix-current-2.11.20131001,4 postfix-logwatch-1.40.00 postfix-policyd-sf-1.82_1,1 postfix-policyd-spf-perl-2.007 postfix-policyd-weight-0.1.15.1_2 postfix-postfwd-1.35 postfixadmin-2.3.6 py27-postfix-policyd-spf-python-1.2 trac-email2trac-postfix-2.6.2 root@FreeBSD10:~ # pkg search dovecot cyrus2dovecot-1.2 dovecot-1.2.17 dovecot-2.2.9 dovecot-antispam-1.3_1,1 dovecot-managesieve-0.11.13 dovecot-pigeonhole-0.4.2_1 dovecot-sieve-1.2+0.1.19 dovecot2-antispam-plugin-20130429_4
jetzt können wir die Pakete installieren:
root@FreeBSD10:~ # pkg install postfix-2.10.2,1 dovecot-2.2.9
Updating repository catalogue
digests.txz 100% 1043KB 38.7KB/s 43.5KB/s 00:27
The following 3 packages will be installed:
Installing pcre: 8.33
Installing dovecot: 2.2.9
Installing postfix: 2.10.2,1
The installation will require 33 MB more space
6 MB to be downloaded
Proceed with installing packages [y/N]: