Das neue Paketmanagement in FreeBSD - aus ADMIN 01/2013
"pkg_*" ist veraltet und wird seit "FreeBSD 10" nicht mehr unterstützt! Seit "FreeBSD 10" wird das Kommando pkg (Paket: pkgng) für die Paketverwaltung verwendet!
Wer von RedHat die Arbeit mit "rpm" gewohnt ist, arbeitet unter FeeBSD am besten mit den folgenden Programmen (Stand FreeBSD 4.7):
Ein installiertes Programm aus den Ports, wird in FreeBSD wie ein Paket behandelt. Man kann aus den Ports auch sein eigenes Binär-Packet erstellen mit "make packages", dann wird der Port installiert und anschließend ein Paket daraus erstellt.
Denken Sie daran, installierte Ports wieder zu entfernen, wenn Sie diese nicht mehr benötigen. Um diese Arbeit zu erleichtern, können Sie den Port ports-mgmt/pkg_cutleaves installieren.
weitere Info's:
# man pkg_info
installiert das Paket aus einer vorhandenen Datei (die Bash):
# pkg_add bash-2.05b.004.tbz
installiert über das Netzwerk/Internet die neueste verfühgbare Binärversion der Bash:
# pkg_add -r bash
löscht ein installiertes Paket (die Bash):
# pkg_delete bash-2.05b.004
listet alle installierten Pakete mit einer Kurzbeschreibung auf:
# pkg_info
zeigt den Pfad unterhalb von "/usr/ports/" an, in dem sich der dazugehörige Port befindet (shells/bash2), das origin:
# pkg_info -o bash-2.05b.004
zeigt das origin von allen installierten Paketen an:
# pkg_info -aoq ... net/bmon ...
zeigt das origin von allen installierten Paketen mit dem vorangestellten Paketnamen an:
# pkg_info -aoQ ... bmon-2.1.0_2:net/bmon ...
zeigt die Beschreibung des Paketes an =⇒ der Inhalt der Datei "pkg-descr" (less /usr/ports/shells/bash2/pkg-descr):
# pkg_add -d bash-2.05b.004
zeigt den "Prefix" (/usr/local), in dem der Port installiert wurde:
# pkg_info -p [Paketname]
alle aufgelisteten Pakete werden von diesem Paket verwendet:
# pkg_info -r [Paketname]
alle aufgelisteten Pakete verwenden dieses Paket:
# pkg_info -R [Paketname]
zeigt von jeder Datei aus dem Paket den vollen Pfad:
# pkg_info -L [Paketname]
listet alle Dateien aus dem Paket auf, die seit der Installation verändert oder manipuliert wurden. Es werden natürlich auch Konfigurationsdateien aufgelistet, in denen man Einstellungen vorgenommen hat.
# pkg_info -g [Paketname]
Mit der folgenden Kommandozeile kann man sich ALLE veränderten Dateien anzeigen lassen:
# pkg_info -g `pkg_info | awk '{print $1}'` | grep ^'/' | less
zeigt das Paket, zu dem die ausführbare Datei gehört:
# pkg_info -W bash /usr/local/bin/bash was installed by package bash-2.05b.004
nur das eine Paket entfernen:
# pkg_delete bash-2.05b.004
eine Paket mit allen anderen Paketen, die dieses Paket benötigen (rekursiv), entfernen:
# pkg_delete -r bash-2.05b.004
Bevor ein Port installiert wird, der konfigurierbar ist, wird in seinem Verzeichnis dieser Aufruf gestartet:
> make config > make config-recursive
Die hier vorgenommenen Einstellungen werden in diesem Verzeichnis abgelegt:
/var/db/ports/
Man braucht also nur dieses Verzeichnis zu sichern:
> tar czf ports_options.tgz /var/db/ports/
wenn man nicht weiß wo sich ein Paket im Ports-Tree befindet, dann kann man das z.B. so rausfinden:
> whereis dokuwiki dokuwiki: /usr/ports/www/dokuwiki > whereis vim vim: /usr/local/bin/vim /usr/local/man/man1/vim.1.gz /usr/ports/editors/vim
oder mit etwas mehr Informationen (Pattern-Suche), so:
> cd /usr/ports] > make search name=vim
ein Programm im Ports-Tree konfigurieren
> cd /usr/ports/editors/vim > make clean > make config-recursive
ein Programm im Ports-Tree bauen
> cd /usr/ports/editors/vim > make
ein Programm aus dem Ports-Tree deinstallieren (wenn bereits eine alte Version installiert ist)
> cd /usr/ports/editors/vim > make deinstall
ein Programm aus dem Ports-Tree installieren
> cd /usr/ports/editors/vim > make install
aus dem Ports-Tree ein Paket bauen
> cd /usr/ports/editors/vim > make package
nachdem der Ports-Tree erneuert wurde, lassen wir uns von den installierten Paketen die veralteten Versionen anzeigen
> pkg version -l "<" math/Imath < devel/abseil < multimedia/aom < ... > pkg version -ol "<" Imath-3.1.3 < abseil-20211102.0 < aom-3.2.0_1 < ...
von jedem Paket den Platzbedarf auf der Platte anzeigen (im Megabyte):
# pkgdu -m
### Fehler: # ffmpeg -i ld-elf.so.1: Shared object "libunistring.so.2" not found, required by "libidn2.so.0" ### Lösung: # find /usr/ -type f | grep -F libunistring.so /usr/jails/testjail/usr/local/lib/libunistring.so.5.0.0 /usr/local/lib/libunistring.so.5.0.0 # ln -s /usr/local/lib/libunistring.so.5.0.0 /usr/local/lib/libunistring.so.2