Inhaltsverzeichnis

FreeBSD - Paket-Management

Das neue Paketmanagement in FreeBSD - aus ADMIN 01/2013

pkgng (ab FreeBSD 10)

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

  1. pkg_add
  2. pkg_create
  3. pkg_delete
  4. pkg_glob
  5. pkg_sign
  6. pkg_update
  7. pkg_which
  8. pkg_check
  9. pkg_deinstall
  10. pkg_fetch
  11. pkg_info
  12. pkg_sort
  13. 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

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