apt-get install z '-' (minus / myślnik) usuwa pakiety

22

Szukałem jakiegoś pakietu ( nautilus-terminal) i przypadkowo to zrobiłem:

$ 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                                                                                                                                                                                          

Jest to dość niebezpieczne, ponieważ usunięcie jest o wiele trudniejsze do pomyłki niż zwykła kreska po nieudanym autouzupełnianiu.

Czy to odpowiednik apt-get remove? Nie mogłem znaleźć na to żadnej dokumentacji. Edycja: oprócz przeoczenia strony podręcznika ...

Ondra Žižka
źródło
1
Dlaczego jest to bardziej niebezpieczne niż apt-get remove? Apt-get mówi nawet, co zrobi, i prosi o potwierdzenie.
marcelm
3
@marcelm, ponieważ o removewiele trudniej jest pomylić się niż prosta kreska po nieudanym autouzupełnianiu.
stebu92
@ stebu92 Idealne sformułowanie, dodaję, że jeśli nie masz nic przeciwko.
Ondra Žižka
Myślę, że przynajmniej Y / n należy zmienić na y / N, gdy -jest używany.
Ondra Žižka
Może źle interpretuję, ale wydaje mi się, że to bardziej przeszkoda / skarga niż pytanie. Na jakie pytanie masz nadzieję uzyskać odpowiedź w wyniku opublikowania tego?
thomasrutter

Odpowiedzi:

28

Od man apt-get:

zainstalować
   po instalacji następuje jeden lub więcej pożądanych pakietów
   instalacja lub aktualizacja. Każda paczka jest nazwą paczki, a nie
   pełna nazwa pliku (na przykład w systemie Debian,
   argument apt-utils nie byłby podany
   apt-utils_1.2.10_amd64.deb). Wszystkie pakiety wymagane przez
   pakiety określone do instalacji zostaną również pobrane i
   zainstalowany. Plik /etc/apt/sources.list służy do zlokalizowania pliku
   pożądane pakiety. Jeśli do nazwy pakietu dołączany jest łącznik (z
   brak miejsca), zidentyfikowany pakiet zostanie usunięty, jeśli będzie
   jest zainstalowane. Podobnie można użyć znaku plus do oznaczenia
   pakiet do zainstalowania. Te ostatnie funkcje można wykorzystać do zastąpienia
   decyzje podejmowane przez system rozwiązywania konfliktów apt-get.
muru
źródło
Stąd OP powinno działać: sudo apt install nautilus && sudo apt install nautilus-terminalgdzie OP przeszło przez removepolecenie: sudo apt install nautilus-terminaljeśli NIE wybrano?
George Udosen
3
Uzasadnieniem tej funkcji jest to, że czasami chcesz zainstalować pakiet, który jest w konflikcie z już zainstalowanym, ale jeden z nich jest wymagany przez inny pakiet, więc obie akcje muszą być w tym samym przebiegu. Np. apt install sysvinit-core systemd-sysv-(Albo wymagany przez pakiet Essential init) albo apt install msmtp postfix-(wiele pakietów zależy od MTA).
Simon Richter
1
@ SimonRichter próbuje apt -s install upstart-sysv16.04 wskazuje, że aptzostanie automatycznie usunięty systemd-sysv(ponieważ powodują konflikty). To samo dotyczy msmtp-mtai postifx. Może być potrzebny bardziej skomplikowany przykład, w którym aptmożna wybrać niewłaściwy pakiet do usunięcia.
muru
Dzięki za naprawienie mojego ślepego oka. Zauważono, że apt-get remove foo+instaluje Foo.
Ondra Žižka
To całkiem fajna funkcja. : D
Andrea Lazzarotto,
0

Dwa następujące oznaczają to samo:

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

Więc jeśli instalujesz lub usuwasz tylko jedną rzecz, to naprawdę nie ma powodu, aby wybierać jedną z nich, a removekomendy równie dobrze można użyć.

Przydaje się operator „minus” w przypadkach, gdy chcesz usunąć jeden pakiet i zainstalować inny w tej samej operacji :

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

Nie mogłem wymyślić lepszego przykładu, ale istnieją sytuacje, w których usunięcie jednego i dodanie drugiego w osobnych operacjach może spowodować dodatkowe niepotrzebne instalacje lub usunięcia, a wykonanie ich obu w jednej operacji natychmiast zaspokoi niektóre współzależności i sprawi, że będzie to ogólnie prostsza obsługa.

Co do tego, czy dodanie minusa ułatwia przypadkowo usunąć coś nieumyślnie, to przede wszystkim odnosić się do tego, jak łatwo jest stworzyć uszkodzenia systemu w sposób niezamierzony w wierszu poleceń w każdym razie . Nie został zbudowany, aby chronić cię przed sobą, a istnieją miliardy jeszcze prostszych poleceń, które mogą zapełnić twój system. Ale po drugie, w tym przypadku mówi dokładnie, co zamierza zrobić i potwierdza, że ​​naprawdę chcesz to zrobić. To jest niskie ryzyko.

thomasrutter
źródło