Vagrant: no se admite la capacidad ''change_host_name''
virtualbox vagrantfile (1)
El problema es que el invitado no admite la capacidad ''change_host_name'' cuando intento ejecutar la siguiente línea de comando:
vagrant up
Me da un error como el siguiente:
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.
Tenga en cuenta que mi sistema operativo es: OS X Yosemite 10.10.5
Versión de Guest Additions: 4.2.0 y Versión de VirtualBox: 5.0
He probado muchas soluciones de otras personas que enfrentan este problema, pero no pude solucionarlo.
Esto es https://github.com/mitchellh/vagrant/issues/7625 . Se solucionará en la próxima versión, hasta entonces, si te está bloqueando, puedes parchear a ti mismo.
Si quieres parchearte
Método 1 :
- busque el archivo
plugins/guests/ubuntu/guest.rb
en su instalación errante- por ejemplo,
/opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb
en la instalación predeterminada de mac / linux - o
/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
- por ejemplo,
- reemplaza con https://raw.githubusercontent.com/carlosefr/vagrant/1c631c18d1a654405f6954459a42ac19a1a2f096/plugins/guests/ubuntu/guest.rb (asegúrate de tener los derechos correctos si realizas la instalación como administrador, debes ser el usuario administrador para guardar el archivo )
Alternativamente, edite el archivo y reemplace todos los contenidos por
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
Método 2: un método alternativo para parchear el archivo usando el comando patch
:
guarda el siguiente archivo en 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
y ejecuta el siguiente comando para aplicar el parche
sudo patch -p1 --directory /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/ < vagrant-guest.patch
Simplemente reemplace /opt/vagrant/embedded/gems/gems/vagrant-1.8.5
(o /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb
) con su instalación de carpeta /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb