Finde ich mit pkg heraus welche Ports eine bestimmte build-dependency haben?

max93

Well-Known Member
Hallo!

Ich frage mich gerade, ob man mit pkg irgendwie abfragen kann welche Ports eine bestimmte build-dependency haben.

Aktuell hatte ich gerade das Problem, dass freshclam nicht mehr laufen wollte, weil ich den gcc neu gebaut habe und dabei die libstdc++ um eine Version erhöht wurde (natürlich stand nix davon in UPDATING...). Jetzt frage ich mich, welche Ports den gcc als build-dependency haben, finde aber keine Möglichkeit pkg diese Frage zu stellen.

Übersehe ich was?

Danke!
Markus
 
Hab gerade kein System vor mir, aber hast du mal 'pkg query' angesehen? Damit sind viele auch komplexere Auswertungen möglich.
 
Hm.

Demzufolge würde niemand den gcc brauchen:

root@host:~# pkg query %rn gcc
root@host:~#

Trotzdem danke, die Möglichkeit hatte ich echt übersehen!

Ciao.
Markus
 
ich kenne mich damit gar nicht aus, bin aber irgendwann mal darüber gestolpert, dass es einen gcc unter /usr/src/contrib/gcc gibt und dazu gehört wohl auch /usr/src/contrib/libstdc++ und dass es aber auch gcc's in den Ports gibt, etwa den bei mir derzeit vorhandenen lang/gcc48 (/usr/local/bin/gcc) der dann auch Abhängige Pakete mit pkg query %rn gcc findet.
 
Hm, OK.

So findet man zumindest die Ports, die den gcc als (Run-)Dependency haben. Die findet man dann auch "normal" mit 'pkg info -r gcc'.

Ich hab hier 2 Server die das betroffen hat und es war nur bei einem so, dass ich auch die Abhängigkeiten (clamav, node & llvm36) neu bauen musste (manuell), auf dem anderen ist der gcc wohl echt nur eine build-dependency und es ist egal, wenn da die Version von libstdc++ erhöht wurde. Beim ersten ist mir das prompt um die Ohren geflogen (davon stand nix in UPDATING und die abhängigen Ports haben keine Portrevision spendiert bekommen). Da wollte ich am zweiten sichergehen, dass mir das nicht gleich wieder passiert.

Danke & Ciao.
Markus
 
Das nützt Dir jetzt nix - aber in Zukunft wird die Freshports API in solchen Fällen vielleicht helfen können. Dann müsstest Du vermutlich die Liste der bei Dir installierten Packages an die API schicken und bekommst - hoffentlich - auch die Build-Dependencies.

Aber noch ist das Work-in-Progress von Dan Langille.
 
  • Like
Reaktionen: lme
Ein Script wie folgendes könnte funktionieren:
Code:
#!/bin/sh
for p in $(pkg query %o)
do
    if make -C "/usr/ports/$p" build-depends-list | grep gcc
    then
        echo $p
    fi
done
Ist nicht wirklich ausgiebig getestet und der make-Aufruf ist sehr langsam, aber es ist zumindest etwas ;)
 
Das ist wohl aktuell die einzige Möglichkeit das herauszufinden. Da auf dem Server noch alle Dienste laufen, dürfte sich das Update nicht negativ auswirken.

Auf dem anderen Server, da wo ich Probleme hatte, waren es tatsächlich nur die Ports, die den gcc als (run-)dependency haben und die konnte ich ja einfach mit 'pkg info -r gcc' rausfinden. Ich hatte dann aber schon etwas schiss, ob auf dem anderen Server auch was bricht, wenn ich den gcc aktualisiere, aber ich konnte eben nicht rausfinden für welche Ports der gcc dort überhaupt installiert ist, weil er dort tatsächlich nur als build-dependency gebraucht wird und nix verlinkt ist.

Sowas könnte man doch auch in der pkg db eintragen. #featurerequest

Danke & Ciao.
Markus
 
Zurück
Oben