Ao usar este trecho (provisionador de shell embutido):
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
resulta em:
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
Parece que outras pessoas também encontraram esse problema . Alguém sabe como resolver isso?
Respostas:
Notei que mesmo esta mensagem foi mostrada como um erro (na cor VERMELHA), o script foi executado com sucesso! Alguns dias depois, vi uma possível correção e postei uma resposta no SO . A "correção" é:
Talvez você simplesmente não precise, mas você pode tentar e usá-lo se funcionar para você.
Como você pode ver na linha de comentário acima - o "mesg: ttyname falhou ioctl inadequado para o dispositivo" foi impedido pela equipe do laravel. Obrigado por este!
A maioria dos desenvolvedores gostaria de evitar erros / avisos quando desenvolvemos, portanto parece a correção (uma possível correção) necessária.
Nota importante: Não testei muito esta solução, mas a caixa inicia sem o erro "mesg: ttyname falhou ioctl inadequado para dispositivo"! Você é livre para experimentá-lo e, se tiver algum problema, basta enviar um comentário para economizar o tempo de outra pessoa!
fonte
vagrant ssh -c '...'
. Possivelmente como os argumentos fornecidos são ignorados.1) abra /root/.profile
2) remover a linha ofensiva
3) substitua-o por:
tty -s && mesg n
Feliz linux e um feliz ano novo.
George Hart, LSU
fonte
/root/.profile
... No entanto,man tty
no MacOS diz que "a opção -s está obsoleta em favor do comando` `test -t 0 ''". , assim que um substituto melhor seriatest -t 0 && mesg n
sed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Parece que isso é causado por uma interação entre a configuração vagrant padrão de
config.ssh.shell
to bebash -l
(que simula um shell de login, processando arquivos de configuração relacionados ao login, como.profile
) com uma linha no/root/.profile
arquivo em pelo menos algumas distribuições do Linux (incluindo, por exemplo, aquele na caixa vagabundo ubuntu / xenial64 ), que possui:Uma opção melhor para esta linha nesse arquivo provavelmente seria dizer:
... e, considerando que é difícil mudar como usuário vagante individual, uma solução mais imediata é abandonar a
-l
opção da configuração vagante, por exemplo, com (dentroVagrantfile
):(Advertência: é possível que essa alteração possa ter efeitos colaterais potencialmente negativos. Pareceu funcionar muito bem para mim, porém, com alguns provisionadores de shell básicos, por exemplo
apt-get update
, com e assim por diante.)fonte
Quais versões do Vagrant e do VirtualBox você está usando?
Ontem eu estava enfrentando esse problema ao usar o Vagrant 1.8.5 com o VirtualBox 5.1.4 (com o Ubunty 16.04). No entanto, depois de atualizar para o Vagrant 1.9.2 e o VirtualBox 5.1.14 hoje, o problema foi resolvido.
Observe que, antes da atualização, como o @Minister também mencionou, o script foi executado sem problemas. Acabei de emitir a mensagem "ttyname falhou", que deu a impressão de que ocorreu um erro quando, na verdade, o script de provisionamento foi executado com êxito.
fonte
Esse problema começou a acontecer em uma instalação do Vagrant que eu usava há anos e que fazia atualizações de tempos em tempos também. Atualizei para o Vagrant mais recente (1.9.1 -> 2.0.3) e o problema foi resolvido. (também eliminou outras coisas peculiares que haviam entrado em operação)
Não tenho certeza se foi a nova versão que a corrigiu ou se os arquivos / configurações existentes foram atualizados no processo de atualização ou em uma combinação dos dois.
fonte
Parece que só funciona no VirtualBox v6.0.2 para Mojave / Catalina! (+ vagrant 2.2.2 - embora não tenha certeza!)
EDITAR:
Isso foi corrigido para mim agora no seu Mac host:
https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573
fonte