¿Por qué `sudo apt-get install XXXX` a veces solicita confirmación, otras no?

29

Solo por curiosidad, a veces, mientras instalo software a través apt-get install software_namedel terminal, me pide una confirmación "escriba Sí o No", pero no siempre.

No me refiero a la solicitud de contraseña de sudo, pero el mensaje "Se descargará y configurará XXX Kb, ¿continuar?" (o algo similar)

¿Por qué?

Strae
fuente
2
Esencialmente, si es necesario instalar paquetes distintos a los mencionados en los argumentos, se le preguntará.
Muru

Respuestas:

24

Por lo general, le preguntará si hay paquetes sugeridos o recomendados que dependen del software que está intentando instalar. También puede depender del tamaño del programa o la seguridad del repositorio desde el que está descargando.

Hola
fuente
pensé las mismas motivaciones ... pero quiero estar seguro de la respuesta
Strae
Sí, esta respuesta es correcta. Agregaré que puede (útil si está tratando de automatizar algo) usar la -ybandera si no desea que se le solicite.
Umang
@Umang: gracias por la pista, pero no necesito automatizar nada en este momento, fue solo una curiosidad;)
Strae
12

apt-get install new-package pedirá confirmación solo si también instala dependencias del paquete dado.

Si solo el paquete único que especificó se instalará sin ningún elemento adicional, se queda en silencio ya que ya "confirmó" que desea tener ese tipeo.
Pero si hay algunos paquetes de dependencia, es posible que cambie de opinión y desee detener la instalación (por ejemplo, porque uno de ellos causó problemas antes), por lo que le pedirá que ingrese y / n.

Ahora, si desea ver qué hará, puede hacer una ejecución en seco / simulación del comando de instalación. Establece este interruptor agregando un -sa los argumentos. Ejemplo: instalación del paquete únicosudoku

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])
Conf sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])

Eso le muestra lo que sucederá, pero no qué tan grandes serán las descargas, como lo haría el aviso de confirmación.

Por lo tanto, otro interruptor se puede utilizar, --print-uris. El mismo ejemplo:

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku --print-uris
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 28.4 kB of archives.
After this operation, 106 kB of additional disk space will be used.
'http://ftp.uni-stuttgart.de/ubuntu/pool/universe/s/sudoku/sudoku_1.0.1-5_i386.deb' sudoku_1.0.1-5_i386.deb 28426 MD5Sum:ecd0e3cd4fc1e4e4edfe6c59d1c54847

El --print-urisconmutador no solo bloqueará la instalación real, sino que mostrará los tamaños descargados e instalados e información adicional sobre el paquete (dirección web y MD5Sum).
Atención: no usar --print-uris y -s juntos. Se verá -ssolo como .
Tenga en cuenta también que debe agregar el -yconmutador (= asuma que sí a cada pregunta) si desea procesar la salida, ya que esta le pedirá confirmación siguiendo las mismas reglas que la instalación normal sin conmutadores.


Ahora, si desea filtrar la descarga y la información del tamaño del archivo instalado solo sin tener que leer todas las demás cosas, puede usar el siguiente comando para lograr esto (gracias a @terdon por ayudar). De nuevo con el ejemplo sudoku:

bytecommander@AlkaliMetal:~$ LANG=C sudo apt-get -y --print-uris install sudoku | grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? '
28.4 kB
106 kB

Verá que la primera línea de la salida es el tamaño de descarga y la segunda línea describe el espacio necesario para la instalación.

Debido a que este comando no es fácil de escribir y aún más difícil de recordar, copie lo siguiente en un archivo de script, por ejemplo, llamado apt-get-install-checker.sh:

#! /bin/bash

LANG=C sudo apt-get install -y --print-uris $* |
grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? ' |
sed '1,1s/^/Download size: /;2,2s/^/Installed size: /'

¡No olvides hacerlo chmod +x apt-install-checker.shantes de ejecutarlo!

Salida de ejemplo:

bytecommander@AlkaliMetal:~/bin$ ./apt-install-checker.sh sudoku
Download size: 28.4 kB 
Installed size: 106 kB 

Guión todavía en desarrollo! Características planificadas: debería preguntarle si desea realizar la instalación y luego continuar y ejecutarla. Tal vez algunos otros buenos artilugios que me vienen a la mente mañana ...

Byte Commander
fuente
Pero, ¿hay alguna manera de que te pregunte todo el tiempo? Incluso cambiando el código real del programa.
@Toroidal cambiar el código del programa es un poco fuera del alcance aquí - puede que tenga que cavar en apto apt-getpáginas de manual 's de averiguar cómo cambiar las preferencias, ya que es posible que ya hay un ajuste se puede cambiar a la fuerza.
Thomas Ward
9

Por lo que entiendo, apt-get solicita confirmación solo cuando hay dependencias adicionales para instalar. No hay forma de forzar la confirmación por defecto para todos los paquetes.

Sin embargo, es posible forzar la confirmación en cualquier comando de instalación cuando se usa aptitude.

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude
komputes
fuente
O, para obtener aptitudeun aviso en una ejecución específica, use aptitude -P.
Eliah Kagan