apt-get install mit '-' (Minus / Bindestrich) entfernt Pakete

22

Ich suchte nach einem Paket ( nautilus-terminal) und tat dies versehentlich:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

Das ist ziemlich gefährlich, da es viel schwieriger ist, einen Fehler zu machen, als einen einfachen Gedankenstrich von einer fehlgeschlagenen Autovervollständigung.

Ist das ein Äquivalent von apt-get remove? Ich konnte keine Dokumentation dafür finden. Bearbeiten: mit Ausnahme der Manpage übersehen ...

Ondra Žižka
quelle
1
Warum ist das gefährlicher als apt-get remove? Apt-get sagt Ihnen sogar, was es tun wird und bittet um Bestätigung.
Marcelm
3
@marcelm ist da removeviel schwerer zu verwechseln als ein einfacher Gedankenstrich von einer fehlgeschlagenen Autovervollständigung.
stebu92
@ stebu92 Perfekte Formulierung, das füge ich hinzu, wenn es dir nichts ausmacht.
Ondra Žižka
Ich denke, mindestens das J / N sollte in J / N geändert werden, wenn -verwendet wird.
Ondra Žižka
Vielleicht bin ich falsch interpretiert, aber dies scheint eher eine Beschwerde als eine Frage zu sein. Auf welche Frage hoffen Sie, eine Antwort zu bekommen, wenn Sie dies veröffentlichen?
Thomasrutter

Antworten:

28

Von man apt-get:

Installieren
   Nach install folgen ein oder mehrere Pakete, für die gewünscht wird
   Installation oder Aktualisierung. Jedes Paket ist ein Paketname, kein
   vollqualifizierter Dateiname (zum Beispiel in einem Debian-System,
   apt-utils wäre das Argument, nicht
   apt-utils_1.2.10_amd64.deb). Alle von der
   Für die Installation angegebene Pakete werden ebenfalls abgerufen
   Eingerichtet. Die Datei /etc/apt/sources.list wird verwendet, um die zu lokalisieren
   gewünschte Pakete. Wenn ein Bindestrich an den Paketnamen angehängt wird (mit
   kein Zwischenraum), wird das identifizierte Paket entfernt, wenn es
   ist installiert. In ähnlicher Weise kann ein Pluszeichen verwendet werden, um a zu bezeichnen
   zu installierendes Paket. Diese letzteren Merkmale können zum Überschreiben verwendet werden
   Entscheidungen, die vom Konfliktlösungssystem von apt-get getroffen werden.
muru
quelle
Daher sollte OP Folgendes tun: sudo apt install nautilus && sudo apt install nautilus-terminalWo war OP mit dem removeBefehl durchgegangen ? Sonst: sudo apt install nautilus-terminalWenn NO gewählt wurde?
George Udosen
3
Das Grundprinzip für diese Funktion besteht darin, dass Sie manchmal ein Paket installieren möchten, das mit einem bereits installierten Paket in Konflikt steht. Eines davon wird jedoch von einem anderen Paket benötigt, sodass beide Aktionen im selben Durchlauf ausgeführt werden müssen. ZB apt install sysvinit-core systemd-sysv-(wird entweder vom Essential- Init-Paket benötigt) oder apt install msmtp postfix-(viele Pakete hängen von einem MTA ab).
Simon Richter
1
@SimonRichter, das apt -s install upstart-sysvauf 16.04 versucht, zeigt an, dass aptes automatisch entfernt wird systemd-sysv(da sie in Konflikt stehen). Das Gleiche gilt für msmtp-mtaund postifx. Möglicherweise ist ein komplizierteres Beispiel erforderlich, in dem aptmöglicherweise das falsche Paket zum Entfernen ausgewählt wird.
muru
Danke, dass du mein blindes Auge repariert hast. Festgestellt, dass apt-get remove foo+foo installiert.
Ondra Žižka
Das ist eine nette Sache. : D
Andrea Lazzarotto
0

Die folgenden beiden bedeuten dasselbe:

# apt-get remove nautilus
# apt-get install nautilus-

Wenn Sie also nur eine Sache installieren oder entfernen, gibt es wirklich keinen Grund, eine über die andere zu wählen, und der removeBefehl kann auch verwendet werden.

Der "Minus" -Operator bietet sich in Fällen an, in denen Sie ein Paket entfernen und ein anderes in derselben Operation installieren möchten :

# apt-get install php5-cgi libapache2-mod-php5- 

Ich könnte mir kein besseres Beispiel vorstellen, aber es gibt Situationen, in denen das Entfernen und Hinzufügen eines anderen in separaten Vorgängen zusätzliche unnötige Installationen oder Entfernungen auslösen kann, während beide Vorgänge in einem einzigen Vorgang sofort einige Abhängigkeiten erfüllen und bewirken eine insgesamt einfachere Bedienung.

Als ob das Hinzufügen des Minus macht es einfacher , aus Versehen versehentlich etwas zu entfernen, ich in erster Linie beziehen Sie sich auf , wie einfach es ist , Schäden an Ihr System unbeabsichtigt auf der Kommandozeile erstellen sowieso . Es wurde nicht gebaut, um Sie vor sich selbst zu schützen, und es gibt Milliarden von noch einfacheren Befehlen, die Ihr System auslaugen können. Aber zweitens sagt es Ihnen in diesem Fall genau, was es tun wird und bestätigt, dass Sie es wirklich wollen. Dies ist ein geringes Risiko.

thomasrutter
quelle