apt-get install con '-' (meno / trattino) rimuove i pacchetti


22

Stavo cercando un pacchetto ( nautilus-terminal), e per sbaglio ho fatto questo:

$ 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                                                                                                                                                                                          

È abbastanza pericoloso perché rimuovere è molto più difficile da digitare male di un semplice trattino da un completamento automatico fallito.

È un equivalente di apt-get remove? Non sono riuscito a trovare alcuna documentazione per questo. Modifica: tranne per trascurare la pagina man ...


1
Perché è più pericoloso di apt-get remove? Apt-get ti dice anche cosa farà e chiede conferma.
marzo

3
@marcelm perché removeè molto più difficile digitare male di un semplice trattino da un completamento automatico fallito.
stebu92,

@ stebu92 Formulazione perfetta, lo sto aggiungendo se non ti dispiace.
Ondra Žižka,

Penso che almeno Y / n dovrebbe essere cambiato in y / N quando -viene utilizzato.
Ondra Žižka,

Forse sto interpretando male ma questo sembra più una lamentela / lamentela che una domanda. A quale domanda speri di ottenere una risposta a seguito della pubblicazione di questo?
thomasrutter

Risposte:


28

Da man apt-get:

installare
   l'installazione è seguita da uno o più pacchetti desiderati per
   installazione o aggiornamento. Ogni pacchetto è un nome di pacchetto, non un
   nome file completo (ad esempio, in un sistema Debian,
   apt-utils sarebbe l'argomento fornito, non
   apt-utils_1.2.10_amd64.deb). Tutti i pacchetti richiesti dal
   verranno inoltre recuperati i pacchetti specificati per l'installazione
   installato. Il file /etc/apt/sources.list viene utilizzato per individuare il file
   pacchetti desiderati. Se un trattino viene aggiunto al nome del pacchetto (con
   nessuno spazio intermedio), il pacchetto identificato verrà rimosso in tal caso
   è installato. Allo stesso modo un segno più può essere usato per designare a
   pacchetto da installare. Queste ultime funzionalità possono essere utilizzate per sovrascrivere
   decisioni prese dal sistema di risoluzione dei conflitti di apt-get.

Quindi OP dovrebbe fare: sudo apt install nautilus && sudo apt install nautilus-terminaldove OP aveva superato il removecomando else: sudo apt install nautilus-terminalse si fosse scelto NO ?
George Udosen,

3
La logica di questa funzione è che a volte si desidera installare un pacchetto in conflitto con uno già installato, ma uno di essi è richiesto da un altro pacchetto, quindi entrambe le azioni devono essere eseguite nella stessa sequenza. Ad esempio apt install sysvinit-core systemd-sysv-(o è richiesto dal pacchetto Init essenziale ) o apt install msmtp postfix-(molti pacchetti dipendono da un MTA).
Simon Richter,

1
@SimonRichter provando apt -s install upstart-sysvsu 16.04 indica che aptverranno rimossi automaticamente systemd-sysv(poiché sono in conflitto). Idem per msmtp-mtae postifx. Potrebbe essere necessario un esempio più complicato, in cui aptscegliere il pacchetto errato da rimuovere.
Muru,

Grazie per aver fissato il mio occhio cieco. Ho notato che apt-get remove foo+installa foo.
Ondra Žižka,

È una specie di caratteristica ordinata. : D
Andrea Lazzarotto,

0

I seguenti due significano lo stesso:

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

Quindi, se stai semplicemente installando o rimuovendo una cosa, allora non c'è davvero alcun motivo per scegliere una sull'altra e il removecomando può anche essere usato.

Quando l'operatore "meno" è utile è nei casi in cui si desidera rimuovere un pacchetto e installarne un altro nella stessa operazione :

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

Non riuscivo a pensare a un esempio migliore, ma ci sono alcune situazioni in cui la rimozione di uno e l'aggiunta di un altro in operazioni separate potrebbero innescare ulteriori installazioni o rimozioni non necessarie, mentre eseguirle entrambe in una singola operazione soddisferà immediatamente alcune co-dipendenze e lo farà un'operazione nel complesso più semplice.

Per quanto riguarda se l'aggiunta del meno rende più facile la rimozione accidentale di qualcosa involontariamente, in primo luogo vi rimando a quanto sia facile creare danni al sistema involontariamente sulla riga di comando comunque . Non è stato creato per proteggerti da te stesso e ci sono miliardi di comandi ancora più semplici che possono far passare il tuo sistema. Ma in secondo luogo, in questo caso ti dice esattamente cosa sta per fare e conferma che vuoi davvero farlo. Questo è a basso rischio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.