Vagrant - 不支持该功能 'change_host_name'
Vagrant - Not Supported the capability 'change_host_name'
问题是当我尝试执行以下命令行时,客户机不支持 '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 是:
OS X Yosemite 10.10.5
来宾添加版本:4.2.0 和 VirtualBox 版本:5.0
我尝试了其他人遇到此问题的许多解决方案,但无法解决。
这是https://github.com/mitchellh/vagrant/issues/7625。它将在下一个版本中修复,在此之前如果它阻止了你,你可以自己修补 vagrant
如果你想给自己打补丁
方法 1 :
- 在您的 vagrant 安装中搜索
plugins/guests/ubuntu/guest.rb
文件
- 例如
/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
- windows :
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\guests\ubuntu\guest.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 <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 文件夹安装
问题是当我尝试执行以下命令行时,客户机不支持 '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 是: OS X Yosemite 10.10.5
来宾添加版本:4.2.0 和 VirtualBox 版本:5.0
我尝试了其他人遇到此问题的许多解决方案,但无法解决。
这是https://github.com/mitchellh/vagrant/issues/7625。它将在下一个版本中修复,在此之前如果它阻止了你,你可以自己修补 vagrant
如果你想给自己打补丁
方法 1 :
- 在您的 vagrant 安装中搜索
plugins/guests/ubuntu/guest.rb
文件- 例如
/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
- windows :
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\plugins\guests\ubuntu\guest.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 <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 文件夹安装