ttyname failed : Vagrant에서 장치에 부적절한 ioctl을 해결하는 방법은 무엇입니까? s.inline = <<-SHELL

이 스 니펫 (인라인 셸 프로비저닝)을 사용하는 경우 :

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”오류없이 상자가 시작됩니다! 무료로 사용해 볼 수 있으며 문제가 발생하면 다른 사람의 시간을 절약하기 위해 의견을 남기십시오!


답변

1) /root/.profile을 엽니 다

2) 공격 라인을 제거

3) 다음과 같이 교체하십시오.

tty -s && 메시지 n

행복한 리눅스와 새해 복 많이 받으세요.

조지 하트, LSU


답변

이는 기본 사이의 상호 작용에 의해 발생되는 것 같습니다 방랑 구성config.ssh.shellbash -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”메시지를 출력했습니다.


답변

이 문제는 수년간 사용해 왔으며 때때로 업그레이드 된 Vagrant 설치에서 발생하기 시작했습니다. 최신 Vagrant (1.9.1-> 2.0.3)로 업그레이드했는데 문제가 해결되었습니다. (또한 작동에 영향을 미치는 다른 기발한 것들도 제거했습니다)

새 버전으로 수정했는지 또는 업그레이드 과정에서 기존 파일 / 구성이 새로워 졌는지 또는 두 가지를 함께 사용했는지 확실하지 않습니다.


답변

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


답변