Al usar este fragmento (aprovisionador de shell en línea):
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
en resultado de:
==> 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 resolverlo?
Respuestas:
Noté que incluso este mensaje se mostró como un error (en color ROJO), ¡el script se ejecutó con éxito! Unos días después vi una posible solución y publiqué una respuesta en SO . La "solución" es:
Tal vez simplemente no lo necesite, pero puede probarlo y usarlo si funciona para usted.
Como puede ver en la línea comentada arriba, el equipo de laravel ha impedido que "mesg: ttyname falló ioctl inapropiado para el dispositivo". Gracias por este!
A la mayoría de los desarrolladores les gustaría evitar errores / advertencias cuando hacemos desarrollo, por lo que parece ser la solución (una posible solución) que necesitábamos.
Nota importante: No he probado esta solución demasiado, pero el cuadro comienza sin el error "mesg: ttyname falló Inactivo apropiado para el dispositivo". Puede probarlo y, si tiene algún problema, ¡simplemente deje un comentario para ahorrarle tiempo a otra persona!
fuente
vagrant ssh -c '...'
. Posiblemente como los argumentos proporcionados son ignorados.1) abrir /root/.profile
2) eliminar la línea ofensiva
3) reemplácelo con:
tty -s && mesg n
Feliz linuxing y feliz año nuevo.
George Hart, LSU
fuente
/root/.profile
... Sin embargo,man tty
en MacOS dice que "La opción -s está en desuso a favor del comando` `test -t 0 ''". , por lo que podría ser un mejor reemplazotest -t 0 && mesg n
sed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Parece que esto es causado por una interacción entre la configuración vagabunda predeterminada de
config.ssh.shell
to bebash -l
(que simula un shell de inicio de sesión, procesando así los archivos de configuración relacionados con el inicio de sesión como.profile
) con una línea en el/root/.profile
archivo en al menos algunas distribuciones de Linux (que incluyen, por ejemplo, el que está en el cuadro ubuntu / xenial64 vagabundo ), que tiene:Una mejor opción para esta línea en ese archivo probablemente sería que diga:
... y, dado que es difícil de cambiar como un usuario vagabundo individual, una solución más inmediata es eliminar la
-l
opción de la configuración vagabunda, por ejemplo con (dentroVagrantfile
):(Advertencia: es concebible que este cambio pueda tener efectos secundarios potencialmente negativos. Sin embargo, pareció funcionar muy bien para mí con algunos proveedores básicos de shell, por ejemplo
apt-get update
, con , etc.)fuente
¿Qué versiones de Vagrant y VirtualBox estás usando?
Ayer me enfrenté a este problema cuando usaba Vagrant 1.8.5 con VirtualBox 5.1.4 (con Ubunty 16.04). Sin embargo, después de que actualicé a Vagrant 1.9.2 y VirtualBox 5.1.14 hoy, el problema desapareció.
Tenga en cuenta que, antes de actualizar, como también mencionó @Minister, el script se ejecutó sin problemas. Simplemente estaba emitiendo el mensaje "ttyname falló", que daba la impresión de que se produjo un error, cuando en realidad el script de aprovisionamiento se ejecutó con éxito.
fuente
Este problema comenzó a suceder en una instalación de Vagrant que había estado usando durante años y que también había actualizado de vez en cuando. Actualicé al último Vagrant (1.9.1 -> 2.0.3) y el problema desapareció. (también eliminó algunas otras cosas extravagantes que también se habían infiltrado en su funcionamiento)
No estoy seguro de si fue la nueva versión la que lo arregló o si los archivos / configuraciones existentes se actualizaron en el proceso de actualización o una combinación de ambos.
fuente
¡Parece que solo funciona en VirtualBox v6.0.2 para Mojave / Catalina! (+ vagabundo 2.2.2 - ¡aunque no estoy seguro de que importe!)
EDITAR:
Esto me lo arregló ahora en su host Mac:
https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573
fuente