====== FreeBSD - PKG ====== * [[https://wiki.freebsd.org/pkgng|pkgng]] * [[https://wiki.freebsd.org/PkgPrimer]] * **[[https://docs.freebsd.org/en/books/handbook/ports/#ports-using]]** * [[https://www.youtube.com/watch?v=4Hxq7AHZ27I]] * [[https://docs.freebsd.org/de_DE.ISO8859-1/books/handbook/pkgng-intro.html|4.4. Benutzen von pkg zur Verwaltung von Binärpaketen]] * [[https://www.bsdforen.de/threads/freebsd-pkgng-tester-gesucht.27444/|[FreeBSD] pkgng: Tester gesucht!]] * [[https://www.codeflow.site/de/article/how-to-manage-packages-on-freebsd-10-1-with-pkg|So verwalten Sie Pakete unter FreeBSD 10.1 mit Pkg]] * [[::freebsd:FreeBSD - Update]] * [[::freebsd:FreeBSD - Upgrade]] * [[::freebsd:FreeBSD - Ports-Tree]] * **[[::freebsd:FreeBSD - PortMaster]]** //verwendet nur Werkzeuge, die bereits im Basissystem vorhanden sind// * [[::freebsd:FreeBSD - PortUpgrade]] Das Management von Binärpaketen unter FreeBSD, ist derzeit suboptimal. Es hat viele Gründe, aber hauptsächlich zu nennen sind dort 2: - Die Paketdatenbank in ''/var/db/pkg'' speichert nicht alle notwendigen Informationen, sie ist langsam, ineffizient und fehleranfällig. - Die im Basissystem enthaltenen ''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: - Ersetze ''/var/db/pkg'' durch eine neue Datenbank, die schneller und robuster als die derzeitige Struktur ist. Die Wahl fiel auf eine sqlite-Datenbank. - Erlaube weitere Metadaten und verändere das Paketformat so, dass es diese Metadaten speichern kann. Diese Metadaten werden nun in Form von YAML-Dateien gespeichert, denn dieses Format ist problemlos von Menschen lesbar und auch maschinell leicht zu handhaben. - Entkoppele das Basissystem von den Ports. So wie ich es verstanden habe, soll ''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. - Stelle ein Interface bereit, was sich an gängigen Linux-Paketmanagern orientiert. ''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 ==== Installation von Binärpaketen ==== 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]: