Könnte ich apt mit apt entfernen?

45

Ich weiß, dass ich damit apt-get remove <package>ein Programm entfernen kann .

Ist aptaber ein Programm selbst. Könnte ich es verwenden apt-get remove apt, um es zu entfernen, oder würde es auf halbem Weg verwirrt werden?

Tim
quelle
2
Ist das eine tatsächliche oder nur eine hypothetische Frage? Fall 1: Probieren Sie es aus. Else: Ich denke, es sollte in der Lage sein, sich selbst zu bereinigen, wenn es nicht versucht, eine seiner Komponenten zu starten, nachdem es sie entfernt hat. Bereits geöffnete Dateien können problemlos entfernt werden.
Byte Commander
@ByteCommander Es ist beides, aber ich kann es momentan nicht wirklich versuchen.
Tim
13
Sie können, aber Sie sollten wahrscheinlich nicht . Linux fragt nur selten, warum sich sein Benutzer in den Fuß schießen möchte. Es geht nur davon aus, dass Sie einen guten Grund haben und lässt Sie den Auslöser
drücken
1
Der Vollständigkeit halber lässt Fedoras 'DNF Sie das nicht tun. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh
Was für eine interessant böse Frage das ist! Eine logische Folge ist: Können Sie sich davon erholen oder ist eine vollständige Neuinstallation erforderlich?
KlaymenDK

Antworten:

78

Mit APT können Sie Ihre Befehle mithilfe der Option simulieren -s. Sie können dies selbst versuchen, indem Sie den Befehl eingeben apt-get -s remove apt(nicht sudoerforderlich).

Dies ergibt die folgende Ausgabe:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

Die Antwort sollte also lauten: Ja, das können Sie.

Cauon
quelle
8
Ich bin mir nicht sicher, ob der Simulationsmodus von apt den gesamten Fallout für so etwas abdeckt. Dies wäre sicherlich ein Randfall, den der Code adressieren kann oder nicht.
Sparhawk
12
Dies erfordert keine sudo(der -sModus nimmt keine Änderungen vor), daher ist es wahrscheinlich besser, ihn vorsichtshalber ohne Änderungen auszuführen sudo.
Fake Name
3
Möglicherweise kann Apt ermitteln, wie Apt entfernt wird. Aber kann es das tatsächlich? Es ist leicht vorstellbar, dass dadurch eine Datei gelöscht wird, von der es später abhängt, und die Installation in einem inkonsistenten Zustand bleibt.
user253751
1
@immibis Ich würde mir mehr Sorgen darüber machen, dpkg zu entfernen. Apt selbst sagt dpkg nur, was zu tun ist, dpkg ist das, was die (Un-) Installationen tatsächlich ausführt.
Random832
1
Also, wenn Apt dpkg sagt, was zu tun ist, was passiert, wenn Sie dpkg entfernen ... lol
SuperSluether
30

Du kannst...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

und Sie werden gewarnt, dass Sie etwas sehr zerstörerisches tun werden. Ich muss sagen ... die Liste der Pakete sieht für eine Platzersparnis von weniger als 6000kb schrecklich aus: D

Es endet, aber es gibt keinen Weg zurück mit "apt-get". Ubuntu Software Center funktioniert nicht mehr und Sie müssten "dpkg" verwenden, um einen Paketmanager neu zu installieren (und alle Abhängigkeiten müssen auch manuell installiert werden).

Rinzwind
quelle
12
Müsste "dpkg" verwenden, um einen Paketmanager neu zu installieren (und muss auch manuell alle Abhängigkeiten installieren) , mit anderen Worten:sudo apt-get remember-what-2002-was-like
user1717828
Könnten Sie dann nicht eine Live-CD booten chrootund apt-getähnlich wie Arch?
Sparhawk
1
@Sparhawk Nicht sicher, was Sie anstreben; Nachdem Sie chroot ausgeführt haben, befinden Sie sich im Stammverzeichnis Ihres normalen Systems und würden nach apt-get suchen, das Sie entfernt haben. Ich denke, mit apt-get (oder vielleicht mit dpkg) kann ein alternatives Stammverzeichnis angegeben werden, aber ich kann nicht so schnell herausfinden, wie Sie das tun würden.
ein Lebenslauf vom
Keines der Pakete, die es entfernt, ist besonders "beängstigend", außer natürlich, dass es sich von selbst eignet.
Random832
@ MichaelKjörling Ich dachte, dass Sie den manuellen Pfad ausführen könnten apt-get, indem Sie im neuen "root" installieren, aber ich vergaß, dass Sie alle Konfigurations- / Cache-Dateien auch benötigen würden. Ihr möglicher Vorschlag wäre sicherlich sauberer (wenn es diese Option gibt).
Sparhawk
12

Als ich CoreUbuntu ausführte, installierte ich einmal ein fehlerhaftes Paket aus dem Quellcode, das als aptveraltet eingestuft wurde apt. Beim nächsten Start habe apt autoremoveich mir nicht die Liste der zu entfernenden Software angesehen und aptwar in der Liste.

Stellen Sie sich meine Überraschung vor, wenn ich das nächste Mal tippe apt install <package-name>und bekomme The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Zum Glück, aus irgendeinem Grund autoremoveentfernt hat nichts von apt‚s Abhängigkeiten so alles , was ich zu tun hatte wget apt‘ s .debArchiv und Neuinstallation verwenden dpkg -i.


Wie in den anderen Antworten gezeigt, wenn Sie entfernen apt mit apt , werden Sie in mehr Ärger wegen der Abhängigkeiten , es zu lösen versucht.

Ich finde es interessant, aber es ist in der Tat der Fall, dass (sicherlich für Debian und vielleicht in gewissem Maße für Fedora / openSUSE?) Viele moderne Distributionen weitgehend auf der Infrastruktur basieren, die von dem Paketmanager ihrer Wahl bereitgestellt wird.

Katze
quelle
5
Ich wette, der Grund, warum aptdie Abhängigkeiten nicht entfernt wurden, ist, dass das von Ihnen installierte Buggy-Paket sie wie erforderlich aufgelistet hat. Sinnvoll, wenn dieses Paket als Ersatz gedacht war.
Dmitry Grigoryev
5

Technisch gesehen kann apt apt nicht entfernen, da apt nicht weiß, wie Pakete entfernt, installiert oder aktualisiert werden. Die Aufgaben zum Installieren, Entfernen, Aktualisieren und Konfigurieren von Paketen verbleiben bei dpkg. Obwohl Sie apt anweisen können, das Paket mit dem Namen "apt" zu entfernen, werden die umgekehrten Abhängigkeiten des apt-Pakets überprüft. Notieren Sie sich diese Pakete und weisen Sie dpkg an, sie zu entfernen. Welches ist, was in den anderen Antworten zu sehen ist .

Auch ohne apt können Sie mit dpkg Pakete installieren, entfernen oder aktualisieren, nur damit es schmerzhafter ist, die benötigten Abhängigkeiten und Aktualisierungen zu verfolgen. Dies ist das Grundprinzip von apt.

Braiam
quelle
Ja, apt ist wirklich nur ein einfacheres Frontend für dpkg, und wenn Sie es entfernen, dpkgist es dann wirklich Ubuntu?
Katze
@cat Ich denke es wird immer noch so sein ... solange du das Paket nicht löschst oder die /var/lib/dpkg/statusDatei entfernst . Sie können dpkg auch wiederherstellen, wenn Sie möchten.
Braiam
1

Natürlich kannst du. Apt und dpkg sind selbst Pakete, und sie sollen über sich selbst aktualisiert werden können. Daher gibt es Bestimmungen zum Entfernen. sonst /var/lib/dpkg/info/dpkg.prermund /var/lib/dpkg/info/dpkg.postrmhätte keinen grund zu existieren :)

Wenn Sie sie versehentlich so entfernt haben, dass Sie kein dpkg mehr haben, können Sie das .deb-Archiv für dpkg immer noch manuell entpacken, es sei denn, Sie haben auch binutils, tar, gzip / bzip2 entfernt.

--purgeBei allen Paketen, die mit der Toolchain von apt in Zusammenhang stehen, kann dies jedoch zu unangenehmen Problemen führen. schwer zu sagen, was bestimmte Dateien in besitzt /var/lib/dpkg. Wenn /var/lib/dpkg/statusgelöscht und keine aktuelle Sicherung vorhanden ist, ist der Paketmanager auf diesem System nicht mehr zu reparieren.

Rackandboneman
quelle
-1

Ich schwöre, ich habe die aptBinärdateien /usr/local/binauf einem Ubuntu-basierten System vor nicht allzu langer Zeit gesehen, aber sie sind auf meinem aktuellen Ubuntu MATE 15.04-System nicht vorhanden (sie sind /usr/binmit den meisten anderen Binärdateien identisch). Wenn es in /usr/local/binwäre, wäre es wahrscheinlich nicht möglich, es mit zu deinstallieren, aptda die darin enthaltenen Dateien /usr/local/binvom Paketmanager ignoriert werden sollen. Ich muss zugeben, dass das Unterlegen apt(und dpkgauch) /usr/local/bineine gute Idee wäre.

Eine interessantere Frage ist - was passiert, wenn Sie deinstallieren dpkg? Sicher genug, dpkgwird als Paket von aufgelistet apt, aber ich werde jetzt nicht versuchen, es zu deinstallieren (im Moment ist noch keine virtuelle Maschine eingerichtet). Theoretisch könnte man es auch mit sich dpkgselbst deinstallieren . Ich gehe davon aus, dass die Neuinstallation nur manuell erfolgen kann, und hoffe dann, dass die vorhandenen Konfigurationsdateien übernommen werden (sodass Sie das System nicht erneut manuell benachrichtigen müssen) welche Pakete installiert sind) und sagen Sie dann, dass das Paket dpkgjetzt erneut installiert wird.


(Ein Witz :) Das Äquivalent eines Debian-Benutzers zu # rm -rf /ist # apt-get purge ".*".

Micheal Johnson
quelle
Wenn etwas aus einem offiziellen Distributionspaket in / usr / local / bin landet, reiche einen Fehler gegen dieses Paket ein.
Rackandboneman
Die Sache ist, dass es nicht aus einem Paket kam; Es wurde separat vom Paketmanager installiert, um die Probleme "apt-get remove apt" und "apt-get remove dpkg" zu vermeiden. Ich denke, es war eigentlich Linux Mint, das ich als Hauptsystem verwendet habe.
Micheal Johnson