2016-07-28 5 views
16

Проблема заключается в том о возможностях «change_host_name» не поддерживается гостем, когда я пытаюсь выполнить следующую команду:Vagrant - Не поддерживается мандатной «change_host_name»

vagrant up 

Это дает мне ошибку как следующее:

Vagrant attempted to execute the capability 'change_host_name' 
on the detect guest OS 'linux', but the guest doesn't 
support that capability. This capability is required for your 
configuration of Vagrant. Please either reconfigure Vagrant to 
avoid this capability or fix the issue by creating the capability. 

Обратите внимание, что моя ОС: OS X Yosemite 10.10.5

Guest Additions Версия: 4.2.0 и VirtualBox Версия: 5.0

Я пробовал много решений других лиц, которые сталкиваются с этой проблемой, но я не мог это исправить.

ответ

26

Это https://github.com/mitchellh/vagrant/issues/7625. Это будет исправлено в следующей версии, до тех пор, если его блокирует вас, вы не можете залатать бродячие себе

Если вы хотите, чтобы исправить себя

method1:

  • поиск файла plugins/guests/ubuntu/guest.rb в вашей бродяжной установке
    • eg /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb на Mac/Linux по умолчанию установить
    • или /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb
    • окна: C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugin‌​s\guests\ubuntu\gues‌​t.rb
  • заменить https://raw.githubusercontent.com/carlosefr/vagrant/1c631c18d1a654405f6954459a42ac19a1a2f096/plugins/guests/ubuntu/guest.rb (убедитесь, что с правильными правами, если вы установите в качестве администратора, вы должны быть админ пользователем, чтобы сохранить файл)
  • альтернативно редактировать файл и заменить все содержимое на

    module VagrantPlugins 
        module GuestUbuntu 
        class Guest < Vagrant.plugin("2", :guest) 
         def detect?(machine) 
         # This command detects if we are running on Ubuntu. /etc/os-release is 
         # available on modern Ubuntu versions, but does not exist on 14.04 and 
         # previous versions, so we fall back to lsb_release. 
         # 
         # GH-7524 
         # GH-7625 
         # 
         machine.communicate.test <<-EOH.gsub(/^ {10}/, "") 
          if test -r /etc/os-release; then 
          source /etc/os-release && test xubuntu = x$ID 
          elif test -x /usr/bin/lsb_release; then 
          /usr/bin/lsb_release -i 2>/dev/null | grep -q Ubuntu 
          else 
          exit 1 
          fi 
         EOH 
         end 
        end 
        end 
    end 
    

Method2: Альтернативный метод пропатчить файл, используя patch команду:

сохранить следующий файл под vagrant-guest.patch

commit 00fa49191dba2bb7c6322fa8df9327ca505c0b41 
Author: Seth Vargo <[email protected]> 
Date: Sat Jul 23 11:40:36 2016 -0400 

    guests/ubuntu: Revert detection 

    - Semi-reverts GH-7524 
    - Fixes GH-7625 

diff --git a/plugins/guests/ubuntu/guest.rb b/plugins/guests/ubuntu/guest.rb 
index 9aeb7aa..f60108e 100644 
--- a/plugins/guests/ubuntu/guest.rb 
+++ b/plugins/guests/ubuntu/guest.rb 
@@ -2,7 +2,22 @@ module VagrantPlugins 
    module GuestUbuntu 
    class Guest < Vagrant.plugin("2", :guest) 
     def detect?(machine) 
-  machine.communicate.test("test -r /etc/os-release && . /etc/os-release && test xubuntu = x$ID") 
+  # This command detects if we are running on Ubuntu. /etc/os-release is 
+  # available on modern Ubuntu versions, but does not exist on 14.04 and 
+  # previous versions, so we fall back to lsb_release. 
+  # 
+  # GH-7524 
+  # GH-7625 
+  # 
+  machine.communicate.test <<-EOH.gsub(/^ {10}/, "") 
+   if test -r /etc/os-release; then 
+   source /etc/os-release && test xubuntu = x$ID 
+   elif test -x /usr/bin/lsb_release; then 
+   /usr/bin/lsb_release -i 2>/dev/null | grep -q Ubuntu 
+   else 
+   exit 1 
+   fi 
+  EOH 
     end 
    end 
    end 

и выполните следующую команду, чтобы применить патч

sudo patch -p1 --directory /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/ < vagrant-guest.patch 

Просто замените /opt/vagrant/embedded/gems/gems/vagrant-1.8.5 (или /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb) wit h Ваша установка для бродячих папок

+0

Большое спасибо Frederic, это работает для меня! – dsds

+0

Nice one - исправил его для меня, большое спасибо за –

+0

В окне установки по умолчанию C: \ HashiCorp \ Vagrant \ embedded \ gems \ gems \ vagrant-1.8.5 \ plugins \ гости \ ubuntu \ guest.rb Приняли меня некоторое время, чтобы найти этот файл ... –