Saat menggunakan cuplikan ini (penyedia shell inline):
config.vm.provision "shell" do |s|
s.inline = <<-SHELL
<shell code>
SHELL
end
itu menghasilkan:
==> default: mesg:
==> default: ttyname failed
==> default: :
==> default: Inappropriate ioctl for device
Sepertinya orang lain juga menemukan masalah ini . Adakah yang tahu bagaimana mengatasinya?
Jawaban:
Saya perhatikan bahwa bahkan pesan ini ditampilkan sebagai kesalahan (dalam warna MERAH), skrip telah dieksekusi dengan sukses! Beberapa hari kemudian saya melihat kemungkinan perbaikan dan saya mengirim jawaban pada SO . "Memperbaiki" adalah:
Mungkin Anda tidak membutuhkannya, tetapi Anda dapat mencobanya dan menggunakannya jika itu berhasil untuk Anda.
Seperti yang dapat Anda lihat di baris komentar di atas - "mesg: ttyname gagal Ioctl untuk perangkat" telah dicegah dari tim laravel. Terima kasih untuk yang ini!
Sebagian besar pengembang ingin menghindari kesalahan / peringatan ketika kami melakukan pengembangan, jadi sepertinya perbaikan (kemungkinan perbaikan) yang kami butuhkan.
Catatan penting: Saya belum menguji solusi ini terlalu banyak, tetapi kotak mulai tanpa kesalahan "mesg: ttyname Gagal ioctl untuk perangkat"! Anda bebas untuk mencobanya dan jika Anda mengalami masalah, berikan komentar untuk menghemat waktu orang lain!
sumber
vagrant ssh -c '...'
. Mungkin karena argumen yang diberikan diabaikan.1) buka / root / profil
2) menghapus garis ofensif
3) ganti dengan:
tty -s && mesg n
Selamat linuxing dan selamat tahun baru.
George Hart, LSU
sumber
/root/.profile
... Meskipun,man tty
pada MacOS mengatakan bahwa "Opsi -s ditinggalkan karena mendukung perintah` `test -t 0 ''." , jadi pengganti yang lebih baik mungkintest -t 0 && mesg n
sed -i -e 's/mesg n .*true/tty -s \&\& mesg n/g'
Sepertinya ini disebabkan oleh interaksi antara default konfigurasi gelandangan dari
config.ssh.shell
menjadibash -l
(yang mensimulasikan shell login, sehingga pengolahan file-file konfigurasi yang terkait dengan login seperti.profile
) dengan garis di/root/.profile
file di setidaknya beberapa distribusi Linux (termasuk, mis., yang ada di kotak gelran ubuntu / xenial64 ), yang memiliki:Opsi yang lebih baik untuk baris ini di file itu mungkin mengatakan:
... dan, mengingat bahwa itu sulit untuk diubah sebagai pengguna gelandangan individual, solusi yang lebih cepat adalah dengan menjatuhkan
-l
opsi dari konfigurasi gelandangan, misalnya dengan (dalamVagrantfile
):(Peringatan: Dapat dibayangkan bahwa perubahan ini dapat memiliki efek samping yang berpotensi negatif. Namun, tampaknya ini bekerja baik bagi saya, dengan beberapa penentu shell dasar, misalnya dengan
apt-get update
, dan sebagainya.)sumber
Versi Vagrant dan VirtualBox apa yang Anda gunakan?
Saya menghadapi masalah ini kemarin ketika menggunakan Vagrant 1.8.5 dengan VirtualBox 5.1.4 (dengan Ubunty 16.04). Namun, setelah saya memutakhirkan ke Vagrant 1.9.2 dan VirtualBox 5.1.14 hari ini, masalahnya hilang.
Perhatikan bahwa, sebelum meningkatkan, seperti @Minister juga menyebutkan, skrip dieksekusi tanpa masalah. Itu hanya keluaran bahwa pesan "ttyname gagal", yang memberi kesan bahwa kesalahan terjadi, ketika sebenarnya skrip penyediaan dijalankan dengan sukses.
sumber
Saya memiliki masalah ini mulai terjadi di instalasi Vagrant yang telah saya gunakan selama bertahun-tahun dan telah ditingkatkan dari waktu ke waktu juga. Saya memutakhirkan ke Vagrant terbaru (1.9.1 -> 2.0.3) dan masalahnya hilang. (Ini juga menghilangkan beberapa hal aneh lainnya yang telah merayap ke dalam operasinya)
Tidak yakin apakah itu versi baru yang memperbaikinya atau file / konfigurasi yang ada disegarkan dalam proses peningkatan atau kombinasi keduanya.
sumber
Sepertinya itu hanya berfungsi di VirtualBox v6.0.2 untuk Mojave / Catalina! (+ gelandangan 2.2.2 - tidak yakin itu penting!)
EDIT:
Ini memperbaikinya bagi saya sekarang di Mac host Anda:
https://github.com/hashicorp/vagrant/issues/1941#issuecomment-42274573
sumber