web-dev-qa-db-ja.com

Vagrant-機能 '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は次のとおりです。OSXYosemite10.10.5

Guest Additionsバージョン:4.2.0およびVirtualBoxバージョン:5.0

私はこの問題に直面している他の人の多くの解決策を試しましたが、私はそれを修正することができませんでした。

17
dsds

これは https://github.com/mitchellh/vagrant/issues/7625 です。次のリリースで修正される予定です。それまでは、ブロックされている場合は、vagrantにパッチを適用できます。

自分でパッチを当てたい場合

Method1

  • 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
    • ウィンドウ: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
    

Method2patchコマンドを使用してファイルにパッチを適用する別の方法:

次のファイルを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フォルダーのインストールに置き換えるだけです

26