このスニペットを使用する場合(インラインシェルプロビジョニングツール):
config.vm.provision "Shell" do |s|
s.inline = <<-Shell
<Shell code>
Shell
end
結果は次のとおりです。
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
他の人もこの問題を発見したようです。誰かがそれを解決する方法を知っていますか?
このメッセージでもエラーとして表示され(赤い色で)、スクリプトが正常に実行されたことがわかりました。数日後、私は可能な修正を見て、 SO に答えを投稿しました。 「修正」は次のとおりです。
# 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に失敗しました"はlaravelチームから防がれました。これをありがとう!
私たちが開発をするとき、ほとんどの開発者はエラー/警告を避けたいので、それは私たちが必要とした修正(可能な修正)のようです。
重要な注意:私はあまりにもこの解決策をテストしていません、しかし、ボックスは "mesg:ttynameが失敗しました不適切なioctl for device"エラーなしで始まります!あなたはそれを試してみるのは自由です、そして、あなたが何か問題を経験したならば、ただ誰かの時間を節約するためにコメントを落としてください!
1)/root/.profileを開きます
2)攻撃線を削除します
3)それを取り替えなさい:
tty -s && mesg n
ハッピーLinuxと陽気な新年。
ジョージハート、LSU
これは、config.ssh.Shell
のデフォルト vagrant設定 がbash -l
(ログインシェルをシミュレートし、ログイン関連の設定を処理する)になることによる相互作用が原因のようです。 Linuxの少なくともいくつかのディストリビューション上の.profile
ファイル内の行を含む/root/.profile
)などのファイル(例えば、 ubuntu/xenial64 vagrantボックス内のものを含む )、それは持っています:
mesg n || true
そのファイルのこの行のためのよりよいオプションはおそらくそれが言うことでしょう:
test -t 0 && mesg n
...そして、個々のvagrantユーザーとして変更するのは難しいので、もっと早急な解決策はvagrant設定から-l
オプションを削除することです。 with(Vagrantfile
内):
config.ssh.Shell="bash"
(警告:この変更は潜在的にマイナスの副作用をもたらす可能性があると考えられます。ただし、apt-get update
などの基本的なShellプロビジョニングツールを使用すると、うまくいくように思えました。)
VagrantとVirtualBoxのどのバージョンを使用していますか?
昨日この問題に直面していたのは、VirtualBox 5.1.4(Ubunty 16.04)でVagrant 1.8.5を使用していたときです。しかし、今日Vagrant 1.9.2とVirtualBox 5.1.14にアップグレードした後、問題は解決しました。
@Ministerも述べたように、アップグレードの前にスクリプトは問題なく実行されたことに注意してください。 「ttyname failed」というメッセージが出力されただけで、実際にはプロビジョニングスクリプトが正常に実行されたときにエラーが発生したという印象を与えました。
私は長年使用していたVagrantのインストールでこの問題が発生し始め、時々アップグレードしていました。私は最新のVagrant(1.9.1 - > 2.0.3)にアップグレードし、問題は解決しました。 (それはまた、その動作に入り込んでいた他のいくつかの風変わりなものも排除しました)
それがそれを修正したのは新しいバージョンなのか、それとも既存のファイル/設定がアップグレードプロセスまたはその2つの組み合わせで新しくされたのかはっきりしません。