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

гостевые дополнения версия: 4.2.0 и VirtualBox версия: 5.0

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

1 ответов


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

если вы хотите подлечиться

Method1 :

  • поиск plugins/guests/ubuntu/guest.rb файл в вашей установке vagrant
    • например /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 (убедитесь, что у вас есть правильные права, если вы устанавливаете как admin, вы должны быть пользователем admin для сохранения файла)
  • альтернативно отредактируйте файл и замените все содержимое на

    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 : альтернативный метод исправления файл с помощью :

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

commit 00fa49191dba2bb7c6322fa8df9327ca505c0b41
Author: Seth Vargo <sethvargo@gmail.com>
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) С вашей установкой папки vagrant