Podczas korzystania z tego fragmentu kodu (wbudowanego dostawcy powłoki):
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
skutkuje:
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
Wygląda na to, że inni też znaleźli ten problem . Czy ktoś wie jak to rozwiązać?
Odpowiedzi:
Zauważyłem, że nawet ten komunikat był wyświetlany jako błąd (w kolorze CZERWONYM), skrypt został wykonany pomyślnie! Kilka dni później zobaczyłem możliwą poprawkę i opublikowałem odpowiedź na SO . „Poprawka” to:
Być może po prostu go nie potrzebujesz, ale możesz go wypróbować i użyć, jeśli to działa.
Jak widać w komentowanym wierszu powyżej - zespół laravel uniemożliwił "mesg: ttyname failed Nieprawidłowy ioctl dla urządzenia" Dzięki za to!
Większość programistów chce unikać błędów / ostrzeżeń podczas programowania, więc wydaje się, że potrzebna jest poprawka (możliwa poprawka).
Ważna uwaga: Nie testowałem tego rozwiązania zbyt wiele, ale okno zaczyna się bez błędu „mesg: ttyname nie powiodło się Niewłaściwe ioctl dla urządzenia”! Możesz go wypróbować, a jeśli wystąpią jakiekolwiek problemy, po prostu zostaw komentarz, aby zaoszczędzić czas innej osoby!
źródło
vagrant ssh -c '...'
. Możliwe, że podane argumenty są ignorowane.1) otwórz /root/.profile
2) usuń linię ofensywną
3) zamień na:
tty -s && mesg n
Szczęśliwego linuksa i wesołego nowego roku.
George Hart, LSU
źródło
/root/.profile
... Chociażman tty
na MacOS mówi, że „Opcja -s jest przestarzała na rzecz polecenia` `test -t 0 ''. , więc lepszym rozwiązaniem może byćtest -t 0 && mesg n
sed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Wygląda na to, jest to spowodowane interakcji między domyślnym Vagrant konfiguracji z
config.ssh.shell
siębash -l
(który symuluje powłokę logowania, dzięki czemu przetwarzanie logowania związane z plików konfiguracyjnych, takich jak.profile
) z linii w/root/.profile
pliku na przynajmniej niektórych dystrybucjach systemu Linux (w tym, np. ten w vagrant box ubuntu / xenial64 ), który ma:Lepszą opcją dla tego wiersza w tym pliku byłoby prawdopodobnie powiedzenie:
... a biorąc pod uwagę, że trudno to zmienić jako indywidualny włóczęgujący użytkownik, bardziej natychmiastowym rozwiązaniem jest usunięcie
-l
opcji z błędnej konfiguracji, np. za pomocą (wewnątrzVagrantfile
):(Zastrzeżenie: Można sobie wyobrazić, że ta zmiana mogłaby mieć potencjalnie negatywne skutki uboczne. Wydawało się jednak, że działa świetnie dla mnie z niektórymi podstawowymi dostawcami powłok, np. Z
apt-get update
, i tak dalej.)źródło
Jakich wersji Vagrant i VirtualBox używasz?
Wczoraj napotkałem ten problem podczas korzystania z Vagrant 1.8.5 z VirtualBox 5.1.4 (z Ubunty 16.04). Jednak po aktualizacji do Vagrant 1.9.2 i VirtualBox 5.1.14 problem zniknął.
Należy pamiętać, że przed aktualizacją, jak wspomniano również @Minister, skrypt został wykonany bez problemu. Właśnie wyświetlał komunikat „ttyname failed”, co sprawiało wrażenie, że wystąpił błąd, gdy faktycznie skrypt obsługi administracyjnej został pomyślnie wykonany.
źródło
Ten problem zaczął się pojawiać w instalacji Vagrant, z której korzystałem od lat i którą od czasu do czasu aktualizowałem. Uaktualniłem do najnowszej wersji Vagrant (1.9.1 -> 2.0.3) i problem zniknął. (wyeliminował również kilka innych dziwacznych rzeczy, które wkradły się do jego działania)
Nie jestem pewien, czy to nowa wersja go naprawiła, czy istniejące pliki / konfiguracje zostały odświeżone w procesie aktualizacji, czy też kombinacja tych dwóch.
źródło
Wygląda na to, że działa tylko w VirtualBox v6.0.2 dla Mojave / Catalina! (+ włóczęga 2.2.2 - nie jestem pewien, czy to ma znaczenie!)
EDYTOWAĆ:
Naprawiłem to teraz na komputerze Mac:
https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573
źródło