apt-get install con '-' (menos / guión) elimina los paquetes

22

Estaba buscando un paquete ( nautilus-terminal), y accidentalmente hice esto:

$ 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                                                                                                                                                                                          

Eso es bastante peligroso porque eliminar es mucho más difícil de escribir mal que un simple guión de un autocompletado fallido.

¿Es eso un equivalente de apt-get remove? No pude encontrar ninguna documentación para eso. Editar: excepto para pasar por alto la página de manual ...

Ondra Žižka
fuente
1
¿Por qué es eso más peligroso que apt-get remove? Apt-get incluso te dice qué hará y pide confirmación.
marcelm
3
@marcelm porque removees mucho más difícil de escribir mal que un simple guión de un autocompletado fallido.
stebu92
@ stebu92 Redacción perfecta, agrego eso si no le importa.
Ondra Žižka
Creo que al menos la Y / n debería cambiarse a y / N cuando -se usa.
Ondra Žižka
Tal vez estoy malinterpretando, pero esto parece más una queja / queja que una pregunta. ¿Qué pregunta es la que espera obtener una respuesta como resultado de publicar esto?
thomasrutter

Respuestas:

28

De man apt-get:

instalar
   la instalación es seguida por uno o más paquetes deseados para
   instalación o actualización. Cada paquete es un nombre de paquete, no un
   nombre de archivo completo (por ejemplo, en un sistema Debian,
   apt-utils sería el argumento proporcionado, no
   apt-utils_1.2.10_amd64.deb). Todos los paquetes requeridos por el
   los paquetes especificados para la instalación también se recuperarán y
   instalado El archivo /etc/apt/sources.list se utiliza para localizar el
   paquetes deseados Si se agrega un guión al nombre del paquete (con
   sin espacio intermedio), el paquete identificado se eliminará si
   esta instalado. Del mismo modo, se puede usar un signo más para designar un
   Paquete para instalar. Estas últimas características pueden usarse para anular
   decisiones tomadas por el sistema de resolución de conflictos de apt-get.
muru
fuente
Por lo tanto, OP debería estar haciendo: sudo apt install nautilus && sudo apt install nautilus-terminaldonde OP había pasado con el removecomando más: sudo apt install nautilus-terminalsi se eligió NO ?
George Udosen
3
La razón de esta característica es que a veces desea instalar un paquete que entra en conflicto con uno que ya está instalado, pero otro paquete requiere uno de ellos, por lo que ambas acciones deben estar en la misma ejecución. Por ejemplo apt install sysvinit-core systemd-sysv-(es requerido por el paquete Essential init) o apt install msmtp postfix-(muchos paquetes dependen de un MTA).
Simon Richter
1
@SimonRichter probando apt -s install upstart-sysven 16.04 indica aptque se eliminará automáticamente systemd-sysv(ya que entran en conflicto). Lo mismo para msmtp-mtay postifx. Podría ser necesario un ejemplo más complicado, donde aptpodría elegir el paquete incorrecto para eliminar.
muru
Gracias por arreglar mi ojo ciego. Notó que apt-get remove foo+instala foo.
Ondra Žižka
Esa es una característica interesante. : D
Andrea Lazzarotto
0

Los dos siguientes significan lo mismo:

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

Entonces, si simplemente está instalando o eliminando una cosa, entonces no hay realmente ninguna razón para elegir una sobre la otra, y el removecomando también puede usarse.

Cuando el operador "menos" es útil es en los casos en que desea eliminar un paquete e instalar otro en la misma operación :

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

No podría pensar en un mejor ejemplo, pero hay algunas situaciones en las que eliminar una y agregar otra en operaciones separadas podría desencadenar instalaciones o eliminaciones innecesarias adicionales, mientras que hacer ambas cosas en una sola operación satisfará inmediatamente algunas codependencias y lo hará Una operación más simple en general.

En cuanto a si agregar el signo menos hace que sea más fácil eliminar accidentalmente algo sin querer, en primer lugar, lo remito a lo fácil que es crear daños a su sistema sin querer en la línea de comandos de todos modos . No fue diseñado para protegerte de ti mismo y hay miles de millones de comandos aún más simples que pueden manguear tu sistema. Pero en segundo lugar, en este caso, le dice exactamente lo que va a hacer y confirma que realmente desea hacerlo. Esto es de bajo riesgo.

thomasrutter
fuente