Opción de Pacman para asumir "sí" a cada pregunta?

51

Al instalar software en sistemas Debian podemos poner algo como esto:

sudo apt-get install -y chromium-browser

de esa manera la instalación se realiza automáticamente, sin pedir confirmación para la instalación [S / n]. ¿Puedo hacer lo mismo con Pacman?

JohannRamos
fuente

Respuestas:

77

De man pacman:

--noconfirmar Omitir
todos y cada uno de los mensajes "¿Está seguro?". No es una buena idea hacer esto a menos que desee ejecutar pacman desde un script.

Tenga en cuenta la calificación sobre el uso de esto con cuidado ...

Arch es una versión continua, lo que significa que pacman tiene que, de vez en cuando, administrar algunas actualizaciones bastante complejas. En estos momentos, pacman le pedirá que confirme sus elecciones: ignorar estas indicaciones generalmente no será un problema importante, pero en algunos casos, como con el cambio reciente de /liba /usr/lib, la falta de atención causará una rotura importante. Este no es un hábito que quieras cultivar.

jasonwryan
fuente
Nunca he ejecutado pacman con "--noconfirm" en aproximadamente 3 años de uso de Arch, debido a esa advertencia. ¿Cuántas personas ejecutan pacman desde un script? ¿Cuáles son los grandes riesgos? He tenido que intervenir 3 o 4 veces para arreglar cosas que pacman se ha negado a actualizar.
Bruce Ediger
3
Asumo, dada la cultura de Arch, que la advertencia está ahí para desalentar la complacencia y la idea equivocada de que automatizar las actualizaciones de Pacman es una buena idea. Se puede atribuir mucha ruptura a las personas que no leen la producción de pacman; --noconfirmexacerbaría eso ...
jasonwryan
1
Tengo un script de "instalación" que usa --noconfirm. La idea es poder tomar un sistema con una instalación limpia recientemente actualizada y hacerla "utilizable" sin ninguna interacción del usuario.
StrongBad
3
En realidad, --noconfirmno asume yes, en su lugar, asume la respuesta predeterminada, que es bastante frecuente no. Ejemplo: # pacman -Scc Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove ALL files from cache? [y/N]para el caso anterior, se yes|pacman -Sccsuponeyes
Utgarda
1
En realidad, pacman --noconfirmes necesario si está utilizando un contenedor Docker, de lo contrario, solo esperará una entrada y, por lo tanto, cerrará el contenedor con un error.
Amin NAIRI
29

Si bien la página de manual sobre el asunto no es muy clara, la --noconfirmbandera no asumirá "sí" en cada respuesta. Asume la respuesta predeterminada que puede ser "no" a veces.

--noconfirmar Omitir
      todos y cada uno de los mensajes "¿Está seguro?". No es una buena idea
      hacer esto a menos que quieras ejecutar pacman desde un script

Para asumir "sí", puede canalizar la salida del yescomando a pacman.

yes | sudo pacman -S firefox
Drew Chapin
fuente
Úselo yes | LC_ALL=en_US.UTF-8 pacman [...]para compatibilidad con sistemas cuyo idioma no esté configurado en inglés. De lo contrario, las [Y/n]preguntas se convierten [J/n], por ejemplo.
ComFreek
3
También tenga cuidado con esta respuesta falla si Pacman alguna vez hace una pregunta sin yrespuesta, por ejemplo Enter a selection (default=all).
ComFreek
@ComFreek, en lugar de alterar las variables de entorno pasadas pacman, sería más fácil y probablemente más seguro hacerlo yes J | sudo pacman -S firefoxen ese caso. yes Jhará yesque se muestre repetidamente a en Jlugar de a y.
Drew Chapin el
"y probablemente más seguro" ¿Cómo es eso? La anulación anterior solo afecta el entorno del proceso (árbol) generado y termina con él. Además, la invocación anterior es exactamente la misma para todas las configuraciones regionales.
Kelvin
Además, ¿qué pasa si alguien copia / pega una de esas líneas de comando pero tiene una configuración regional en la que una de las opciones tiene el significado opuesto o completamente diferente? Ejemplo: J(o Y) significa "no" o "todos".
Kelvin