2016-11-26 82 views
2

我在每個vagrant up的末尾運行幾個內聯腳本。Vagrant ubuntu盒內嵌腳本發出「mesg ttyname失敗不適當的ioctl設備」

Vagrant.configure(2) do |config| 
    config.vm.box = "bento/ubuntu-16.04" 

    ... omitting all the other steps related to networking, folders, etc 

    config.vm.provision "shell", inline: "service nginx restart", run: "always" 

    config.vm.post_up_message = "Done!" 
end 

而且我得到這個在我的日誌:

==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` 
==> default: flag to force provisioning. Provisioners marked to run always will still run. 
==> default: Running provisioner: shell... 
    default: Running: inline script 
==> default: mesg: 
==> default: ttyname failed 
==> default: : 
==> default: Inappropriate ioctl for device 

==> default: Machine 'default' has a post `vagrant up` message. This is a message 
==> default: from the creator of the Vagrantfile, and not from Vagrant itself: 
==> default: 
==> default: Done! 

從什麼我已經找出迄今爲止 - 它應該是在Ubuntu的配置,不是無業遊民本身。我發現並嘗試這個解決方案沒有成功: https://github.com/mitchellh/vagrant/issues/7368

但是,如果相關 - 我正在運行最新的Vagrant 1.8.7和macOS Sierra。

+0

這種情況發生在Vagrant 1.8.7和Ubuntu 16.04的shell配置程序中。它每次都發生在我身上,你可以忽略它,因爲命令仍然成功。 –

+0

是的,確切地說。我知道這個命令成功了,並且它由shell提供程序觸發。但我問爲什麼以及如何解決它:) – ddinchev

+0

忽略它,並等待從Hashicorp或Canonical修復。 –

回答

5

也許是對這個問題的答案爲時已晚,但因爲這可以幫助別人,這是很好的分享我的嘗試:

# 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'" 

所以你可以在註釋行上面看到的 - 的「mesg:ttyname失敗」不適當的ioctl for device「已被阻止來自laravel團隊。

大多數開發人員希望在開發時避免錯誤/警告,所以它看起來像我們需要的修復。

重要說明:我沒有太多地測試過這個解決方案,但是這個盒子沒有「mesg:ttyname失敗不適當的ioctl for device」錯誤!您可以自由嘗試,如果您遇到任何問題,只需發表評論以節省別人的時間!