Das Gute an der FreeBSD Ports Collection ist, dass alle Programme in Kategorien eingeordnet sind und man so gezielt Programme finden und installieren kann. Heute stellte sich mir aber die Frage, wie ich von den schon installierten Programmen herausbekommen kann, wo sie ursprünglich aus den Ports installiert worden oder zugeordnet sind. Ich weiss es gibt nun viele Möglichkeiten, wo von eine die Suche auf freshports.org ist.

Hilfe war schnell mit dem Verwaltungstool pkg_info gefunden und ein man pkg_info half sofort die nötigen Optionen zu finden, um das gewünschte Ziel zu erreichen. Nun noch schnell das ganze in ein kleines Script verpackt und die nötigen Informationen erschienen in der Konsole.

$ ~/scripte/info_installed_ports editors

count installed packages ... 431
collect and sort infos for installed packages ...
-> editors/conglomerate (conglomerate-0.7.16_1)
-> editors/gedit (gedit2-2.8.2)
-> editors/ghex (ghex2-2.8.1_1)
-> editors/mlview (mlview-0.6.3_1)
-> editors/vim (vim-6.3.45)
... done

Ein Aufruf, zeigt mit nun alle installierten Ports sortiert nach ihren Kategorien in den Ports an, auch kann ich noch einschränkende Kriterien angeben (einfaches grep), um z.B. nur bestimmt Programme oder Kategorien anzeigen zu lassen. Hier ein Scriptauszug:

...
# pN ... pkgName
# pI ... pkgInfo
for pN in `pkg_info | awk '{print $1}'`
do
pI=`pkg_info -o $pN | grep -v Information | grep /`
if [ -z "$1" ">
then
echo " $pI ($pN)"
else
echo " $pI ($pN)" | grep $1
fi
done | sort
...

Es gibt sicher noch bessere und einfachere Lösungen, aber mir reichte ein pkg_info -o

erstmal …