ttyname failed.を解決するには?Vagrant で不適切な ioctl for device` を解決するには?

このスニペット(インラインシェルプロビジョナー)を使用する場合。

config.vm.provision "shell" do |s|
  s.inline = <<-SHELL
    <shell code>
  SHELL
end

という結果になります。

==> default: mesg: 
==> default: ttyname failed
==> default: : 
==> default: Inappropriate ioctl for device

他の方もこの問題を発見されているようです。どなたか解決方法をご存じないでしょうか?

質問へのコメント (3)

1)/root/.profileを開く

  1. 攻撃的な行を削除する

  2. に置き換える。

tty -s && mesg n

リナックスでハッピー、そしてメリーニューイヤー。

ジョージ・ハート、LSU

解説 (2)

これは、 config.ssh.shellのデフォルトのvagrant構成bash -l(ログインシェルをシミュレートするため、次のようなログイン関連の構成ファイルを処理する)になることによるようです。 .profile)Linuxの少なくとも一部のディストリビューション(たとえば、.、ubuntu / xenial64 vagrant box)の1つ。

mesg n || true

そのファイルのこの行のより良いオプションは、おそらくそれを言うことです:

test -t 0 && mesg n

そして、それを個々の浮浪者ユーザーとして変更するのは難しいことを考えると、より迅速な解決策は、浮浪者構成から「-l」オプションを削除することです。.. と( Vagrantfile内):.

config.ssh.shell="bash"

(警告:この変更が潜在的に否定的な副作用をもたらす可能性があると考えられます。 しかし、それは私にとってはうまく機能しているように見えました。 「apt-get update」など。)

解説 (1)
ソリューション

このメッセージがエラーとして表示されても(赤色で)、スクリプトは正常に実行されていることに気づきました。数日後、修正可能な方法を見つけたので、SOに回答を投稿しました。その"fix"は、以下の通りです。

# 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 failed Inappropriate ioctl for device" は、laravelチームから防止されました。これはありがとうございます!

開発者の多くは、開発を行う際にエラー・警告を避けたいと思うので、必要な修正(可能性のある修正)だと思われます。

重要:私はこの解決策をあまりテストしていませんが、箱は "mesg: ttyname failed Inappropriate ioctl for device" エラーなしで起動します!(笑)もし何か問題があれば、他の人の時間を節約するためにコメントを残してください。

解説 (2)

VagrantとVirtualBoxのバージョンは?

昨日、Vagrant 1.8.5 with VirtualBox 5.1.4 (with Ubunty 16.04)を使用しているときにこの問題に直面しました。 しかし、今日、Vagrant 1.9.2 と VirtualBox 5.1.14 にアップグレードしたら、この問題は解消されました。

なお、アップグレード前は、@Ministerさんもおっしゃっているように、スクリプトは問題なく実行されていました。 ただ、"ttyname failed" というメッセージが出力され、プロビジョニング スクリプトが正常に実行されたのに、エラーが発生したかのような印象を与えていました。

解説 (0)

この問題は、私が長年使用していて、時々アップグレードしたVagrantインストールで起こり始めました。 最新のVagrant(1.9.1 -> 2.0.3)にアップグレードしたところ、問題はなくなりました。 (それはまた、その操作に忍び込んだ他のいくつかの風変わりなものも排除しました)。

修正したのは新しいバージョンなのか、既存のファイル/構成がアップグレードプロセスで更新されたのか、それとも2つの組み合わせであったのかはわかりません。

解説 (0)

Mojave / CatalinaのVirtualBox v6.0.2でのみ動作するようです。! (+vagrant 2.2.2-しかし、それが重要であるかどうかはわかりません。!)。

編集:

これでホストMacで修正されました。

vagrant halt
sudo ifconfig vboxnet0 down
sudo ifconfig vboxnet0 up
vagrant up

https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573

解説 (0)