Paket + Abhängigkeiten löschen

nihonto

Well-Known Member
Hiho!

Gibt es eine einfache Möglichkeit, ein Paket samt seiner (ansonsten nicht weiter benötigten) Abhängigkeiten zu löschen? Mir ist schon klar, dass ich mir vor der Installation eines Paketes seine Abhängigkeiten ansehen kann (glaube "pkg_add -nv <paketname>" kann das und ein "make full-run-depends" unter /usr/ports kann das auch). Dann kann ich sie mir notieren und bei Bedarf händisch löschen - nachdem ich gecheckt habe, dass keine andere Applikation die Abhängigkeiten benötigt ("pkg_info -t").

Gibt es aber evtl. noch eine Möglichkeit, wie man das schneller bzw. weniger aufwändig hin bekommt?
 
Hm... /usr/ports/ports-mgmt/pkg_cutleaves?

Edit: Etwas ausführlicher: Nachdem du ein Paket zum Löschen markiert hast, wirst du gefragt ob du nach Paketen suchen möchtest, die danach nicht mehr benötigt würden.

HTH

Edit2: Sorry, dir geht es um OpenBSD. Habe ich übersehen. SORRY!
 
Eine automatische Lösung habe ich auch noch nicht gefunden.

Variante 1:

1. pkg_info -t
2. alles rausschmeissen, was man nicht selber installiert hat/haben will
3. gehe zu 1.

Variante 2:

für den betreffenden Port
make full-run-depends
ausführen.

Diese Liste in pkg_delete -i (beachte das -i!) reinstopfen.
Du wirst dann bei jedem Paket über Abhängkeiten informiert und gefragt, ob Du deinstallieren willst.

So richtig toll ist das alles nicht. :-/
 
Wie's geht ist Euch ja offentsichtlich bekannt. Das ganze in ein Skript zu verpacken sollte doch eigentlich auch nicht das Problem sein.

Code:
[host] root ~ # cat pkg_remove.sh
#!/bin/sh

pkg_list() {
	pkg_info -t | cut -f 1 -d ' ';
} # pkg_list

main() {
	local _l="$(mktemp -q)";

	trap \
		"rm -f '$_l';" \
		ERR;

	pkg_list >"$_l";
	pkg_delete "$@";

	while [ -s "$_l" ]
	do
		pkg_list | diff "$_l" - \
			| awk '/^> / { print $2; ++i; } END { if(!i) system("rm -f '"'$_l'"'"); }' \
			| xargs -r pkg_delete;
	done
} # main

main "$@";
[host] root ~ # sh pkg_remove.sh ogle
ogle-0.9.2p5: complete
Clean shared items: complete
libmad-0.15.1bp1: complete
libdvdread-0.9.7p1: complete
Clean shared items: complete
libdvd-0.3p2: complete
Clean shared items: complete
 
Zurück
Oben