問題は、次のコマンドラインを実行しようとすると、機能「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は次のとおりです。OSXYosemite10.10.5
Guest Additionsバージョン:4.2.0およびVirtualBoxバージョン:5.0
私はこの問題に直面している他の人の多くの解決策を試しましたが、私はそれを修正することができませんでした。
これは https://github.com/mitchellh/vagrant/issues/7625 です。次のリリースで修正される予定です。それまでは、ブロックされている場合は、vagrantにパッチを適用できます。
自分でパッチを当てたい場合
Method1:
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
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.5\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
)をvagrantフォルダーのインストールに置き換えるだけです