7 votos

Incapaz de hacer que Debian hacer la instalación desatendida... libc6 quiere interactivo confirmar

Estoy tratando de crear una secuencia de comandos que obliga a una Debian Lenny instalar para instalar la versión más reciente de CRAN R. Durante la instalación aparece libc6 se actualiza y la instalación se quiere interactivo confirmar que ACEPTAR para reiniciar los tres servicios (mysql, exim4, cron). Este proceso TIENE que ser desatendida ya que se ejecuta en Amazon Elastic mapreduce (EMR) de las máquinas. Pero me estoy quedando sin opciones. Aquí hay un par de cosas que he probado:

Esta pregunta anterior parece ser exactamente lo que estoy buscando. Así que puedo configurar mi script de instalación de la siguiente manera:

# set my CRAN repos... yes, I know there's a new convention where to put these. 
echo "deb http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list

# set the dpkg.cfg options per the previous SuperUser question
echo "force-confold" | sudo tee -a  /etc/dpkg/dpkg.cfg
echo "force-confdef" | sudo tee -a  /etc/dpkg/dpkg.cfg
export DEBIAN_FRONTEND=noninteractive

# add key to keyring so it doesn't complain 
gpg --keyserver pgp.mit.edu --recv-key 381BA480
gpg -a --export 381BA480 > jranke_cran.asc
sudo apt-key add jranke_cran.asc

sudo apt-get update

# install the latest R
sudo apt-get install --yes --force-yes r-base 

Pero esta secuencia de comandos se bloquea con la siguiente petición de entrada:

enter image description here

OK, así que traté de detención de los servicios mediante la siguiente secuencia de comandos:

sudo /etc/init.d/mysql stop
sudo /etc/init.d/exim4 stop
sudo /etc/init.d/cron stop
sudo apt-get install --yes --force-yes libc6

Esto no funciona y la pantalla interactiva viene de vuelta, pero esta vez con sólo cron aparece como el servicio que debe ser reiniciado.

Entonces, ¿hay una manera de hacer libc6 sólo tienes que reiniciar estos servicios con ninguna entrada de usuario? O hay una forma de detener el cron para que no se causa un prompt interactivo? Tal vez una opción creativa nunca he pensado?

Tenga en cuenta que este sistema es traído algunas de Hadoop código se ejecuta y, a continuación, es derribado. Así que puedo poner para arriba con los efectos secundarios y el mal comportamiento que puede que no nos quieren en la producción de máquina de escritorio o servidor web.

11voto

harshit Puntos 1823

Yo no soy positivo en la configuración de Lenny, pero yo sé que en Squeeze, sudo está configurado con env_reset lo que significa que se tira todo pero muy pocos seleccione env variables antes de ejecutar el comando.

Esto significa que el DEBIAN_FRONTEND variable se establece en realidad nunca lo que es la apt-get install --yes --force-yes r-base. Si usted tiene acceso completo a sudo, lo que significa que en el sudoers archivos con ALL = ALL permisos, a continuación, puede modificar este comportamiento.

Intente utilizar el siguiente lugar.

sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes r-base

Edit: se Nota que reescribir el guión para no usar sudo en todas partes y en lugar de ejecutar la secuencia de comandos como root también funcionaría. Pero hacer eso sería evitar que el verdadero problema que he señalado, en lugar de resolver y aprender de ella.

4voto

Bill Mark Puntos 51

Una forma más concisa de la variante de la debconf solución mencionado en otra respuesta es la siguiente:

echo 'libc6 bibliotecas/reiniciar-sin-pidiendo boolean true' | sudo debconf-set-selections

Acabo de utilizar esta solución con éxito al actualizar glibc en Debian 7 (wheezy).

Para los curiosos, el camino me encontré con el derecho de configuración de la variable de set fue de la siguiente manera:

sudo apt-get install debconf-utils

sudo apt-get install-y libc6 # respuesta pronta de forma interactiva

debconf-get-selections | grep libc6

3voto

Aleksandr Levchuk Puntos 1713

Paso 1

En el host que tenía el paquete instalado manualmente (opción interactivo de selección) ejecutar:

apt-get install debconf-utils
debconf-get-selections > answers.conf


Paso 2 (Opcional)

En este punto usted puede filtrar las respuestas.conf para incluir la configuración de respuestas sólo para paquete específico(s). He probado sin filtrar.


Paso 3

A la hora de crear un nuevo host, incluyen respuestas.conf junto con su script de instalación automática. Antes de ejecutar apt-get install, en la secuencia de comandos, ejecute:

debconf-set-selections --verbose < answers.conf


Resultado

Este va a llenar la base de datos de debconf con respuestas predefinidas. Las preguntas interactivas no se le pedirá al ejecutar apt-get install.

2voto

Dirk Eddelbuettel Puntos 198

Además de lo que hemos discutido en el correo electrónico, también existe el dicho

Si usted no puede vencer em, únete a em.

así que usted podría crear una máquina virtual en su computadora portátil que corresponde a la (base) de los paquetes en la nube instancia, y luego reconstruir su propio local R 2.12.1 .deb en contra de los paquetes. Como no actualiza libc6 está involucrado, sería eludir el problema.

O, en línea con su comentario sobre los posibles efectos secundarios de ser permitido, usted puede desinstalar exim4, mysql y cron. Su R puestos de trabajo no los necesita. Algo como

sudo dpkg --force-depends --remove ...names of your packages here...

pero realmente no puedo creer que me recomienda esta :) puede que Usted necesite una prueba y error para obtener todos los relacionados con el exim y mysql paquetes.

1voto

JD Long Puntos 381

Yo era capaz de deducir que el libc6 instalador estaba llevando a reiniciar cron incluso si el cron no se estaba ejecutando la que parece extraño. En cualquier caso, yo era capaz de conseguir alrededor de que por el cambio de nombre de la cron init.d scripts para que el instalador del paquete fue engañado en no pensar en el cron estaba presente. Ugh. Qué lío:

sudo /etc/init.d/mysql stop
sudo /etc/init.d/exim4 stop
sudo /etc/init.d/cron stop
sudo mv /etc/init.d/cron /etc/init.d/cron.bak
sudo apt-get install --yes --force-yes libc6
sudo mv /etc/init.d/cron.bak /etc/init.d/cron
sudo /etc/init.d/mysql start
sudo /etc/init.d/exim4 start
sudo /etc/init.d/cron start

Después de esa pequeña danza kabuki puedo instalar la ultima R.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: