이 스 니펫 (인라인 셸 프로비저닝)을 사용하는 경우 :
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
결과는 다음과 같습니다.
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate 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
답변:
이 메시지조차도 오류 (빨간색)로 표시되어 스크립트가 성공적으로 실행되었습니다! 며칠 후 가능한 해결책을보고 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 failed 장치에 부적절한 ioctl이 실패했습니다"는 라 라벨 팀에서 방지되었습니다. 이것에 감사드립니다!
대부분의 개발자는 개발할 때 오류 / 경고를 피하고 싶기 때문에 필요한 수정 (가능한 수정) 인 것 같습니다.
중요 사항 :이 솔루션을 너무 많이 테스트하지는 않았지만 "mesg : ttyname failed 장치에 부적절한 ioctl"오류없이 상자가 시작됩니다! 무료로 사용해 볼 수 있으며 문제가 발생하면 다른 사람의 시간을 절약하기 위해 의견을 남기십시오!
vagrant ssh -c '...'
. 제공된 인수가 무시 될 수 있습니다.
1) /root/.profile을 엽니 다
2) 공격 라인을 제거
3) 다음과 같이 교체하십시오.
tty -s && 메시지 n
행복한 리눅스와 새해 복 많이 받으세요.
조지 하트, LSU
/root/.profile
...하지만 man tty
MacOS에서는 "-s 옵션은``test -t 0 ''명령을 위해 더 이상 사용되지 않습니다." 따라서 더 나은 대체품은 다음과 같습니다.test -t 0 && mesg n
sed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
이는 기본 사이의 상호 작용에 의해 발생되는 것 같습니다 방랑 구성 의 config.ssh.shell
될 bash -l
(이와 같은 로그인 관련 구성 파일 처리, 로그인 쉘 시뮬레이션 .profile
의 라인) /root/.profile
을 포함 리눅스의 적어도 일부 분포 (에 파일을 예를 들어, 우분투 / xenial64 방랑 상자에있는 것 ) :
mesg n || true
해당 파일에서이 줄에 대한 더 나은 옵션은 아마도 다음과 같이 말할 것입니다.
test -t 0 && mesg n
... 개별 개인 사용자로 변경하기가 어렵다는 점을 고려할 때 더 즉각적인 해결책은 -l
옵션을 다음과 같이 다음과 같이 구성 항목에서 삭제하는 것입니다 Vagrantfile
.
config.ssh.shell="bash"
(주의 사항 :이 변경으로 인해 부정적인 부작용이있을 수 있습니다.하지만 일부 기본 셸 제공 업체 (예 : apt-get update
등) 에서 나에게 큰 도움이되는 것처럼 보입니다 .)
사용중인 Vagrant 및 VirtualBox 버전은 무엇입니까?
어제 VirtualBox 5.1.4 (Ubunty 16.04)와 Vagrant 1.8.5를 사용할 때이 문제에 직면했습니다. 그러나 오늘 Vagrant 1.9.2 및 VirtualBox 5.1.14로 업그레이드 한 후에 문제가 사라졌습니다.
@Minister가 언급했듯이 업그레이드하기 전에 스크립트가 문제없이 실행되었습니다. 실제로 프로비저닝 스크립트가 성공적으로 실행될 때 오류가 발생했다는 느낌을주는 "ttyname failed"메시지를 출력했습니다.
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