¿Cómo puedo automatizar dpkg/apt-get?
Pregunta
Estoy tratando de crear un script que descarga automáticamente los paquetes para los nuevos servidores.Sin embargo, algunas cosas como 'mysql-server' no se puede instalar automáticamente causar que usted necesita para configurar en la interfaz ncurses primera.He mirado a través de las páginas de manual y no puede encontrar nada adecuado.
No me importa si tengo que subir o editar un fichero de configuración más tarde-sólo tengo los paquetes necesarios instalados.
Alguien sabe qué hacer además de acaparamiento de tar y la construcción de mí mismo?
ACTUALIZACIÓN descubrí que para cosas como mysql-server puedes hacer:
DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server
sin embargo esperan que se parece a algo que voy a necesitar para sun-java6-jdk;no ha evaluado todavía
Solución
Para los paquetes que hacen preguntas a través de debconf (que es lo que pone la pantalla ncurses), se puede pre-contestar las preguntas. Para tomar el java, las preguntas pueden ser pre-respondieron siguiendo las instrucciones de la dirección http://www.davidpashley.com/blog/debian/java-license
Otros consejos
En primer lugar, instale el paquete con normalidad; a continuación, extraer las respuestas de configuración de los archivos de datos de debconf:
sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed
A continuación, para otras instalaciones, se puede aplicar antes de instalar el paquete:
sudo debconf-set-selections ./something.seed
Cualquier paquete Debian que utiliza debconf
para obtener los valores de configuración se puede ejecutar en modo desatendido.El truco es que debconf
primero de búsqueda para pre-instalado respuestas para cualquier config pregunta que un determinado paquete.
Pre-instalación de config respuestas
Basta con crear un archivo con el siguiente formato
# Use one line for each question
package-name question-name question-type answer
package-name question-name question-type really long \
answer here
package-name question-name question-type answer
...
y se avance en el sistema así:
$ debconf-set-selections my-selections-file
Ahora, usted está listo para apt-get install
, como de costumbre.
One-off
Desde este comando también se lee de stdin, usted puede hacer:
$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections
Encontrar respuestas predeterminadas
¿Cómo saber que paquetes de utilizar estas respuestas?Bien, si ya has instalado el paquete en cuestión de forma interactiva, puede consultar su sistema local para ver qué valores están configurados actualmente. debconf-get-selections
imprime una lista de todos los config respuestas para el sistema actual.Por ejemplo
$ debconf-get-selections | grep '^man'
devuelve el siguiente en mi sistema:
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Puede que tenga que instalar el debconf-utils
paquete para hacer de este comando está disponible.
La muestra
# Preset values to questions which would otherwise be asked while
# installing packages.
# Use debconf-set-selections to install
openssh-server openssh-server/permit-root-login boolean false
man-db man-db/install-setuid boolean false
man-db man-db/auto-update boolean true
Fuentes
- Anthony Towns' respuesta & los bits de descomposición enlace
- Hombre debconf-set-selections(1)
- Duplicar respuesta en ServerFault
No estoy seguro de necesidades MySQL-server exactamente qué configuración, pero se puede intentar algo así como esperar