====== FreeBSD - Paket-Management ====== [[https://www.admin-magazin.de/Das-Heft/2013/01/Das-neue-Paketmanagement-in-FreeBSD|Das neue Paketmanagement in FreeBSD]] - aus ''ADMIN 01/2013'' ===== pkgng (ab FreeBSD 10) ===== [[::FreeBSD:FreeBSD - PKG]] ===== pkg_xxx (bis FreeBSD 9) ===== **"pkg_*" ist veraltet und wird seit "FreeBSD 10" nicht mehr unterstützt! Seit "FreeBSD 10" wird das Kommando [[::freebsd:FreeBSD - pkg|pkg]] (Paket: [[https://wiki.freebsd.org/pkgng|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): - pkg_add - pkg_create - pkg_delete - pkg_glob - pkg_sign - pkg_update - pkg_which - pkg_check - pkg_deinstall - pkg_fetch - pkg_info - pkg_sort - pkg_version 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. ==== überflüssige Ports entfernen ==== * [[http://www.freebsd.org/doc/de/books/handbook/ports-using.html]] 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. ==== Einführung und bei weitem nicht vollständig ==== 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 ===== Der Ports-Tree ===== ==== Die Ports-Options bzw. Paketkonfigurationen sichern ==== 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/ ==== arbeiten mit dem Ports-Tree ==== 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 ==== ### 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