aptitude
kann Sie mit seiner Suchfunktion den größten Teil des Weges erreichen. So finden Sie alles installiert, was nicht nur eine automatische Abhängigkeit war:
aptitude search -F "%p" "?installed ?not(?automatic)"
Dies ist nicht optimal. Einige davon können möglicherweise entfernt werden, aber ich kenne keinen einfachen Weg, um das herauszufinden. Vielleicht liegt die Antwort in man aptitude
.
Beim zweiten Gedanken könnten Sie mit dieser Liste eine Schleife durchlaufen und die abhängigen Pakete (nicht Abhängigkeiten) für jedes einzelne finden. Wenn sich eines davon in der Hauptliste befindet, entfernen Sie das aktuelle Paket aus der Liste ... aber erst, nachdem Sie die gesamte Liste analysiert haben, oder Sie werden Zwischenprodukte in einem Dep-Baum der Stufe 3+ verpassen.
Sie finden abhängige Personen mit einer Abfrage wie dieser:
aptitude search '~i~Dpackage'
Ich würde versuchen, das Skript zu schreiben, aber ich schreibe es auf einer winzigen Telefontastatur. Auch ich habe Grenzen.
Bearbeiten: Nachdem ich fünf Minuten lang versucht hatte zu schlafen, fing ich an, mich darauf einzulassen. so etwas sollte den Job machen:
orig=$(aptitude search -F "%p" "?installed ?not(?automatic)")
newlist="";
for p in $orig; do
depended=0;
for dependant in `aptitude search -F "%p" "~i~D$p"`; do
if [[ $orig == "* $dependant *" ]]; then
depended=1;
fi;
done;
if [[ $depended == 0 ]]; then
newlist="$newlist $p";
fi;
done;
echo $newlist
Beachten Sie, dass die Ausführung sehr lange dauert und möglicherweise zu intensiv ist (z. B. werden manuell entfernte Elemente entfernt, die manuell installiert werden sollen, wenn sie von etwas anderem in der $ orig-Liste abhängen, das Sie verwenden vielleicht später installiert).
Ich habe dazu ein kleines Python-Skript geschrieben, das hier als Kernstück veröffentlicht wurde .
Sie geben ihm eine Reihe von Paketnamen in der Befehlszeile, und es sollte Ihnen eine kleinere, minimale Menge von Paketen geben, die alle anderen, die Sie als Argumente angegeben haben, implizieren. Hier
x11-proto-fixes-dev
wird impliziert (eine Abhängigkeit von) durchlibgtk2.0-dev
:quelle
Ich habe versucht, Antworten auf diese und zwei ähnliche Fragen auf einem System zu finden, das ich seit Jahren verwende, und die kürzeste Liste, die ich bekommen konnte, waren 1338 Pakete, von denen die meisten offensichtlich Abhängigkeiten oder Aktienpakete waren.
Bei Unix / Linux Stack Exchange habe ich jedoch diese Antwort gefunden , die die Liste der Standardpakete für Ihre Installation aus dem Ubuntu-Spiegel abruft und herausfiltert. Das hat meine Liste auf 404 Pakete reduziert, was für mich vernünftig aussieht.
quelle