`Ttyname başarısız oldu: Vagrant'ta cihaz için uygun olmayan ioctl` nasıl çözülür?


21

Bu snippet'i kullanırken (satır içi kabuk sağlayıcısı):

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

sonuç:

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

Diğer insanlar da bu sorunu bulmuş gibi görünüyor . Bunu nasıl çözeceğini bilen var mı?


Bu mesajın bir hata olarak gösterildiğini fark ettim, komut dosyası başarıyla yürütüldü! Birkaç gün sonra olası bir düzeltme gördüm ve burada bir cevap gönderdim . Yani belki sadece ona ihtiyacınız yoktur, ama sizin için işe yarıyorsa deneyebilir ve kullanabilirsiniz.
Bakan

@Minister Teşekkürler. Sorunu çözer. Cevabı SO'dan kaldırabilir ve SuperUser'a gönderebilir misiniz? Stackoverflow programlama ile ilgilidir.
030

Çözümün sizin için de çalışmasından memnunum! Hızlı onayınız için teşekkür ederiz! Buraya bir cevap gönderdim, ancak cevabımı SO'dan kaldırmak zorunda mıyım yoksa bir moderatör soruyu SU'daki SO'dan buraya taşımalı mı? Uygun izinlere sahip bir kişi cevabımı düzenler / silerse sorun değil, ama başka birine yardımcı olabilir, bu yüzden şimdilik "olduğu gibi" bırakıyorum, bunun bir çeşit kopya olduğunu fark ediyorum (soru gibi görünüyor). ..
Bakan

Yanıtlar:


10

Bu mesajın bir hata olarak (KIRMIZI renkte) gösterildiğini fark ettim, komut dosyası başarıyla yürütüldü! Birkaç gün sonra olası bir düzeltme gördüm ve SO'ya bir cevap gönderdim . "Düzeltme":

# 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'"

Belki sadece ona ihtiyacınız yoktur, ama sizin için işe yarıyorsa deneyebilir ve kullanabilirsiniz.

Yukarıdaki yorum satırında gördüğünüz gibi - "mesg: ttyname başarısız oldu laravel ekibinden cihaz için uygunsuz ioctl" engellendi. Bunun için teşekkürler!

Çoğu geliştirici, geliştirme yaparken hatalardan / uyarılardan kaçınmak ister, bu yüzden ihtiyacımız olan düzeltme (olası bir düzeltme) gibi görünür.

Önemli not: Bu çözümü çok fazla test etmedim, ancak kutu "mesg: ttyname başarısız oldu Cihaz için uygun olmayan ioctl" hatası olmadan başlar! Denemekte özgürsünüz ve herhangi bir sorunla karşılaşırsanız, başka birinin zamanından tasarruf etmek için bir yorum bırakın!


1
Bu kırılmış gibi görünüyor vagrant ssh -c '...'. Muhtemelen sağlanan argümanlar göz ardı edilir.
Skeen

Bu benim için bu hatayı gizliyor gibi görünüyor ama hala çalışmıyor
OZZIE

16

1) /root/.profile dosyasını açın

2) Saldırı hattını kaldırın

3) ile değiştirin:

tty -s && mesg n

Mutlu linuxing ve neşeli bir yeni yıl.

George Hart, LSU


5
İç çekmek. Sadece ubuntu (ve diğer?) Dağıtım (lar) bunu standartta düzeltirse /root/.profile... Bununla birlikte, man ttyMacOS'ta "-s seçeneği` `test -t 0 '' komutu lehine kullanımdan kaldırılmıştır. , bu yüzden daha iyi bir yedek olabilirtest -t 0 && mesg n
Aralık'ta

1
Bunu otomatikleştirmek için şunları kullanabilirsinizsed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Gogowitsch

11

Bu varsayılan arasındaki etkileşim nedeniyle gibi görünüyor serseri konfigürasyona ait config.ssh.shellolmak bash -l(böylece örneğin, girişle ilgili yapılandırma dosyaları işleme, bir giriş kabuğu taklit .profilebir çizgi ile) /root/.profiledahil olmak üzere Linux'un en azından bazı dağılımlar (dosyanın, örneğin, ubuntu / xenial64 vagrant kutusundaki );

mesg n || true

Bu dosyadaki bu satır için daha iyi bir seçenek muhtemelen şunu söylemelidir:

test -t 0 && mesg n

... ve bunun bireysel bir vagrant kullanıcısı olarak değiştirilmesinin zor olduğu göz önüne alındığında, daha acil bir çözüm -lseçeneği vagrant yapılandırmasından çıkarmaktır , örneğin (içinde Vagrantfile):

config.ssh.shell="bash"

(Uyarı: Bu değişikliğin potansiyel olarak olumsuz yan etkilere sahip olabileceği düşünülebilir. Bununla birlikte, bazı temel kabuk tedarikçileriyle, örneğin apt-get update, vb.


Bunun için çok teşekkür ederim! Benim almam: /root/.profile github.com/felixhummel/saltstates/blob/debian9/warts/bash/…
felixhummel

1

Hangi Vagrant ve VirtualBox sürümlerini kullanıyorsunuz?

Dün Vagrant 1.8.5'i VirtualBox 5.1.4 ile (Ubunty 16.04 ile) kullanırken bu sorunla karşı karşıya kaldım. Ancak, bugün Vagrant 1.9.2 ve VirtualBox 5.1.14 sürümlerine geçtikten sonra sorun ortadan kalktı.

Yükseltmeden önce, @Minister'ın da belirttiği gibi, komut dosyasının sorunsuz bir şekilde yürütüldüğünü unutmayın. Sadece "ttyname başarısız oldu" iletisini çıktı.


0

Bu sorunu yıllardır kullandığım ve zaman zaman da yükselttiğim bir Vagrant kurulumunda başlamaya başladım. En son Vagrant'a (1.9.1 -> 2.0.3) geçtim ve sorun ortadan kalktı. (ayrıca operasyonuna sızan bazı ilginç şeyleri de ortadan kaldırdı)

Düzeltme işleminin yeni sürüm olup olmadığından veya yükseltme işleminde veya ikisinin bir kombinasyonunda varolan dosyaların / yapılandırmaların tazelenmiş olduğundan emin değilsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.