Cuando se utiliza este fragmento (inline shell provisioner):
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
el resultado es:
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
Parece que otras personas también han encontrado este problema. ¿Alguien sabe cómo solucionarlo?
Me di cuenta de que incluso este mensaje se mostraba como un error (en color ROJO), ¡el script se ejecutaba con éxito! Unos días más tarde vi una posible solución y he publicado una respuesta en SO. El "fix" es:
# Prevent TTY Errors (copied from laravel/homestead: "homestead.rb" file)... By default this is "bash -l".
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
Quizás no lo necesites, pero puedes probarlo y usarlo si te funciona.
Como se puede ver en la línea comentada arriba - el "mesg: ttyname failed Inappropriate ioctl for device" se ha evitado desde el equipo de laravel. ¡Gracias por esto!
A la mayoría de los desarrolladores nos gustaría evitar errores/advertencias cuando hacemos desarrollo, así que parece el fix (un posible fix) que necesitábamos.
¡Nota importante: No he'probado esta solución demasiado, pero la caja se inicia sin el "mesg: ttyname failed Inappropriate ioctl for device" error! Eres libre de probarlo y si experimentas algún problema, ¡deja un comentario para ahorrarle tiempo a alguien más!
¿Qué versiones de Vagrant y VirtualBox estás utilizando?
Me enfrentaba a este problema ayer cuando se utiliza Vagrant 1.8.5 con VirtualBox 5.1.4 (con Ubunty 16.04). Sin embargo, después de actualizar a Vagrant 1.9.2 y VirtualBox 5.1.14 hoy, el problema desapareció.
Tenga en cuenta que, antes de actualizar, como @Minister también mencionó, el script se ejecuta sin problemas. Era sólo la salida que "ttyname failed" mensaje, que dio la impresión de que se produjo un error, cuando en realidad la secuencia de comandos de aprovisionamiento ejecutado correctamente.