При использовании этого фрагмента (встроенный поставщик оболочки):
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 . «Исправить» это:
Может быть, вам это просто не нужно, но вы можете попробовать его и использовать, если оно работает на вас.
Как вы можете видеть в приведенной выше строке комментариев - команда laravel предотвратила ошибку «mesg: ttyname failed». Неуместное ioctl для устройства ». Спасибо за это!
Большинство разработчиков хотели бы избежать ошибок / предупреждений, когда мы занимаемся разработкой, поэтому кажется, что исправление (возможное исправление) нам нужно.
Важное примечание: я не слишком много тестировал это решение, но окно запускается без ошибки «mesg: ttyname failed« Неуместное ioctl для устройства »! Вы можете попробовать это, и если у вас возникнут какие-либо проблемы, просто оставьте комментарий, чтобы сэкономить чужое время!
источник
vagrant ssh -c '...'
. Возможно, поскольку предоставленные аргументы игнорируются.1) открыть /root/.profile
2) убрать наступательную линию
3) заменить его на:
tty -s && mesg n
Счастливого линукса и веселого нового года.
Джордж Харт, ЛГУ
источник
/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
файле , по крайней мере , некоторых дистрибутивах Linux ( в том числе, например, тот, что находится в vaugrant-окне ubuntu / xenial64 ), который имеет:Лучшим вариантом для этой строки в этом файле, вероятно, будет следующее:
... и, учитывая, что это трудно изменить как отдельного бродячего пользователя, более немедленное решение - исключить
-l
опцию из бродячей конфигурации, например, с помощью (в пределахVagrantfile
):(Предостережение: вполне возможно, что это изменение может иметь потенциально негативные побочные эффекты. Однако мне показалось, что оно отлично работает с некоторыми базовыми поставщиками оболочек, например, с
apt-get update
и т. Д.)источник
Какие версии Vagrant и VirtualBox вы используете?
Я столкнулся с этой проблемой вчера, когда использовал Vagrant 1.8.5 с VirtualBox 5.1.4 (с Ubunty 16.04). Однако после того, как я сегодня обновился до Vagrant 1.9.2 и VirtualBox 5.1.14, проблема исчезла.
Обратите внимание, что до обновления, как также упоминалось @Minister, скрипт выполнялся без проблем. Он просто выводил это сообщение «ttyname failed», что создавало впечатление, что произошла ошибка, когда фактически выполнялся сценарий инициализации.
источник
У меня эта проблема начала возникать в установке Vagrant, которую я использовал годами, а также время от времени обновлялся. Я обновился до последней версии Vagrant (1.9.1 -> 2.0.3), и проблема исчезла. (это также устранило некоторые другие причудливые вещи, которые вошли в его работу)
Не уверен, что это была новая версия, которая это исправила, или что существующие файлы / конфигурации были обновлены в процессе обновления или их комбинации.
источник