TL; DR oder "Verbrenne einfach mein Pi"
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
(Wiederholen, apt-get autoremove --purge
bis keine Waisenkinder mehr da sind)
Weitere Erklärung
Wenn ein Paket foo hängt auf einem anderen Paket libfoo und Sie entfernen die libfoo Paket, das abhängig ( foo ) wird ebenfalls entfernt. Da Foo eine abhängige Zeile hat, die libfoo angibt , wäre es fehlerhaft , foo zu verlassen, wenn libfoo entfernt würde. Das Gegenteil ist nicht wahr: Entfernen foo nicht löschen libfoo automatisch. Ein anderes Paket xfoo kann auch von libfoo abhängen, sodass apt es nicht einfach entfernt (obwohl apt nachverfolgt, ob es nur als Nebeneffekt der Installation von foo installiert wurde) und bieten an, es automatisch zu entfernen, wenn Sie danach fragen, solange keine anderen noch davon abhängig sind.)
Metapakete hängen von einer Reihe anderer Pakete auf die gleiche Weise ab wie foo von libfoo . Wenn Sie also ein Metapaket entfernen, wird in der Regel nur wenig anderes entfernt. Zum Beispiel kann es zwei Metapakete geben , die von xterm abhängen (lxsession und xfsession vielleicht), aber die Deinstallation von einem oder beiden führt nicht zur Deinstallation von xterm, da xterm ohne lxsession oder xfsession nicht kaputt geht. Metapakete befinden sich im Allgemeinen am oberen Rand des Abhängigkeitsbaums und nicht am unteren Rand, und nur wenige Dinge hängen in der Regel direkt von Metapaketen ab. Metapakete bieten in erster Linie eine bequeme Möglichkeit, eine sinnvolle Gruppe von Paketen gleichzeitig zu installieren, sie sind jedoch keine Deinstallationstools.
Wenn Sie also alles scorchen möchten, was von X11 abhängt, müssen Sie den Basissatz an libx11-Bibliotheken auswählen, von dem letztendlich alle x11-Apps abhängen müssen :
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
Dies (simuliert) entfernt alles, was letztendlich von libx11 -. * Abhängt, und entfernt auch alle Pakete, die als Abhängigkeit von einem X11-Programm installiert wurden, selbst wenn sie nicht direkt von X11 selbst abhängen (CUPS und Ghostscript werden normalerweise installiert) als Nebeneffekt der Installation einer Desktop-Umgebung). Der zweite Befehl entfernt nachfolgende Waisenkinder, bis keine mehr übrig sind. Entfernen Sie "--auto-remove", wenn Sie diesen Schritt später ausführen möchten oder wenn Sie ihn gar nicht ausführen möchten, oder fügen Sie die Pakete einfach manuell wieder hinzu, nachdem Sie die GUI entfernt haben.
Entfernen Sie die Option --dry-run , um den Vorgang tatsächlich auszuführen, nachdem Sie überprüft haben, dass keine Pakete entfernt werden, die nicht entfernt werden sollen.)
Ich bevorzuge es, die Nebenwirkungen zu reinigen und zu beseitigen und sie nach Bedarf wieder hinzuzufügen. Außerdem habe ich dies auf meinem eigenen Pi getestet und es wurde auf einem sehr spartanischen, aber funktionierenden Server neu gestartet. :)
Warum installiert ein Remove etwas?
Die obige Strategie löst das angegebene Problem, aber es besteht immer noch die Neugier, warum ein Entfernungsvorgang dazu führt, dass Pakete installiert werden .
Das Herzstück eines jeden Paketmanagers ist eine Art Erfüllbarkeitslöser . Wenn Sie einen Paketmanager anweisen, einige Pakete zu installieren , zu entfernen oder zu aktualisieren , müssen Sie wirklich den nächsten gewünschten Status der Softwareinstallation ermitteln, wenn ein Satz verfügbarer Pakete vorhanden ist. Diese Lösung kann das Installieren zusätzlicher Pakete (Abhängigkeiten), das Entfernen vorhandener Pakete (Konflikte, Unterbrechungen), das Herunterstufen / Aktualisieren bestimmter Pakete (Kompatibilitätsstufe) oder eine Kombination davon umfassen. Obwohl es ein bisschen unerklärlich ist, dass der Solver feststellt, dass einige Pakete installiert werden müssen, damit andere Pakete entfernt werden könnenEs macht vollkommen Sinn. Dies ist das schlimme Abhängigkeitsverwaltungsproblem, das Paketverwalter lösen.
Ein konkretes Beispiel: Bei einer Reihe bereits installierter Java-Anwendungen hängen alle von einer Java-kompatiblen Laufzeit ab, die derzeit openjdk-7-jre ist . Sie fragen dann den Paket - Manager für die Installation eines neuen Java - Tool zu lösen , die einen erklärt Konflikt mit openjdk-7-jre sondern arbeiten mit Oracle-7-jre (beiden Pakete allgemein bieten eine Java-7-Laufzeit ). Der Solver eine vorzuschlagen Entfernung von openjdk-7-jre und eine Installation von dem Oracle-java-7-jreals Lösung für Ihren Wunschzustand, das neue Paket installiert zu haben, ohne vorhandene Pakete zu beschädigen.
In diesem speziellen Fall ist xterm ein Paket, das eine virtuelle Abhängigkeit namens x-terminal- emulator bereitstellt ( xterm , lxterminal und aterm stellen alle einen x-terminal- emulator bereit). Daher ist es wahrscheinlich, dass lxterminal (als Teil von) entfernt wird Beim Entfernen von lxde) hat der Solver ein vorhandenes installiertes Paket gefunden ( Transcode als mögliches Beispiel), für das eine Art X-Terminal-Emulator erforderlich ist. Daher hat sich der Solver für die Installation von xterm entschieden (für das libutempter0 und xbitmaps erforderlich sind )(Erklären der anderen zu installierenden Pakete), um die ansonsten unterbrochene Abhängigkeit zu erfüllen. Ohne die Paketdatenbank zu sehen, würde ich annehmen, dass dies das wahrscheinlichste Szenario ist.
Verwenden Sie den Befehl apt-cache rdepends (mit der Option --installed können Sie nur installierte Pakete angeben ), um die derzeit von xterm (oder einer Alternative) abhängigen Pakete zu ermitteln:
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
Abhängigkeiten, die mit dem Wechselzeichen '|' beginnen Bedeutet, dass das Paket von xterm oder etwas anderem abhängt ( in diesem Fall handelt es sich um einen x-terminal-Emulator ). Das Paket clusterssh ist explizit von xterm abhängig und lässt keine Alternative zu. Dies ist die kurze Liste der Pakete, die dazu führen, dass xterm benötigt wird.
Was ist mit Deborphan?
Die Funktionalität des Verfolgens von Waisen wurde 2010 über die 'Autoremove'-Funktionalität (Debian-Bug 582791 ) in apt-get integriert, wodurch Deborphan größtenteils überflüssig und im Wesentlichen veraltet wurde. Im Gegensatz zu Deborphan und ähnlichen Lösungen verfolgt apt-get direkt , welche Pakete explizit installiert wurden und welche Pakete als Nebeneffekt oder Abhängigkeit eines explizit installierten Pakets installiert wurden. Zum Beispiel, wenn ein Administrator foo installiert, libfoo wird als installierte Nebeneffekt und apt-get autoremove Willen , in der Tat, libfoo entfernen , wenn autoremove (oder --auto-remove) angegeben wird , wenn foo entfernen.
Der Ansatz von Deborphan ist eine Ansammlung von Vermutungen. Beispiel: Die Annahme , dass eine installierte Bibliothek, für die es keine abhängige Bibliothek gibt, verwaist sein muss: Wenn libfoo installiert ist, aber weder foo noch xfoo , entscheidet deborphan möglicherweise, dass es sich um eine verwaiste Bibliothek handelt. Ein Fehlermodus besteht darin, dass Bibliotheken speziell für die von ihnen bereitgestellten Tools installiert werden (libxml2 für xmllint, bevor es in libxml2-utils neu gepackt wurde) oder einfach für Entwicklungszwecke verfügbar sind. Solche Pakete sind keine Waisen. Darüber hinaus konzentriert sich deborphan auf Bibliotheken, sodass eine Reihe von nicht bibliotheksbezogenen Waisen übersehen werden, die nachverfolgen können (veraltete Pakete im Vergleich zu verwaisten Paketen) .
munin
aus irgendeinem Grund auch entfernt, aber ich konnte es später leicht genug zurücksetzen.'libx11-.*'
, um zu verhindern, dass die Muschel platzt.apt-get remove
, was es wollte,install
xterm
und zwei andere. Auch ich habe das erlebt und konnte es nicht herausfinden.rootfs ... 94% /
. Nach apt-get remove --auto-remove --purge libx11 -. *:rootfs ... 51% /
Ausgezeichnete Antwort, vielen Dank!rootfs ... 41% /
...Die erste Zeile installiert,
deborphan
die alle verwaisten Pakete entfernt.Die zweite Zeile entfernt die Kernpakete des X11-Systems LXDE, Samba (Windows File Sharing), Schriftarten, Gnome und andere Dinge, die mit der Desktop-Umgebung von Raspberry Pi zusammenhängen.
Die dritte Zeile entfernt alle verwaisten Pakete, die von deborphan erkannt wurden.
Die vierte Zeile entfernt alle nicht benötigten Pakete.
Die fünfte Zeile löscht den Paket-Cache.
quelle
1 /. Um alle Desktops zu entfernen, die ich gerade gemacht habe (mach eine Kanne Kaffee. Machen Sie einen Spaziergang, das wird eine Weile dauern) ...
apt-get remove --auto-remove --purge libx11-.*
2 /. Dann habe ich deborphan installiert, um verwaiste Dateien loszuwerden ...
sudo apt-get install deborphan
Wenn Sie sehen möchten, was verwaist ist, tun Sie dies ...
deborphan -sz
3/. Dann habe ich alle verwaisten Dateien entfernt ...
sudo apt-get remove --purge $(deborphan)
Führen Sie dies zum Schluss aus, um nicht benötigte Pakete zu entfernen, die nicht verwaist sind ...
sudo apt-get autoremove
Endergebnis: Headless und sauber wie eine Pfeife
quelle
apt-get remove --dry-run
tut absolut nichts , sondern druckt Nachrichten auf dem Bildschirm.Haben Sie einen Blick hier aber nach unten scrollen , zum Teil über
tasksel
.Das Laufen
tasksel --list-tasks
auf dem Pi via WLAN gibt mir (nach ca. 30 Sekunden):Also
tasksel remove desktop
solltest du tun, was du willst [siehe Kommentare] . Die Manpage ist etwas kurz und mysteriös, vielleicht weil tasksel hauptsächlich für Debian-Betreuer gedacht ist. Wenn das klappt lass es uns wissen;)quelle
tasksel
, obwohl ich ziemlich viel Ubuntu-Erfahrung habe. Leider habe ich das versucht, es hat eine Weile gedauert, bis derremove desktop
Befehl ausgeführt wurde, aber all diese "grafischen" Pakete sind laut noch daaptitude
.tasksel
ohne Optionen). Ich bin mir ziemlich sicher, dass das 'u' bedeutet, dass die Metapakete nicht installiert sind. Wenn Sie 'desktop' installieren, erhalten Sie mehr als nur die lxde-Version. Wiki.debian.org/tasksel Also keine Würfel. Ich stelle fest, dass das Metapaket "xorg" von auchapt-cache search metapackage
nicht installiert ist. Ich schätze, wir geben den Himbeeren die Schuld.Alternativ können Sie dieses Raspbian-Minimalbild ausprobieren: http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/
quelle
Anhand der Tasksel-Informationen kann festgestellt werden, dass es einen Metapaket-Taskdesktop gibt, der auf alle anderen GUI-bezogenen Pakete verweist. Also nur
Dadurch werden viele andere Pakete (im Zusammenhang mit GUI / Desktop) entfernt.
Hintergrund: Der Name des Pakets
task-desktop
kann durch Ausführen der folgenden Tasksel-Befehle ermittelt werden:quelle
Eine andere Möglichkeit ist die Verwendung von aptitude, die Sie immer bevorzugen sollten, wenn Sie mehr als nur ein paar Pakete installieren oder entfernen möchten.
Starten Sie aptitude als root, indem Sie Folgendes eingeben
sudo aptitude
. In der Standard-Paketansicht von aptitude befindet sich der letzte Listeneintrag,Tasks
in dem Sie die verschiedenen Optionen auswählen können, die von tasksel aufgelistet werden. Navigieren Sie durch die Elemente mitj
,k
undenter
. Markieren Sie einen zu löschenden Artikel, indem Sie_
den markierten Artikel mit einem Unterstrich versehen. Dies bereitet nur Aktionen vor. Um die Aktionen auszuführen, drücken Sieg
.Lesen Sie über Eignung im Debian-Handbuch .
quelle
Geben Sie diesen Code ein:
quelle
purge
anstelle vonremove
?