ruby - descargar - No se pueden instalar complementos vagos en Ubuntu
rvm install rails (6)
Estaba intentando instalar el plugin vagabundo vbguest
, pero obtuve los siguientes errores en la terminal:
$ vagrant plugin install vbguest
Installing the ''vbguest'' plugin. This can take a few minutes...
/usr/lib/ruby/2.3.0/rubygems/specification.rb:946:in `all='': undefined method `group_by'' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:275:in `with_isolated_gem''
from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:231:in `internal_install''
from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:102:in `install''
from /usr/lib/ruby/vendor_ruby/vagrant/plugin/manager.rb:62:in `block in install_plugin''
from /usr/lib/ruby/vendor_ruby/vagrant/plugin/manager.rb:72:in `install_plugin''
from /usr/share/vagrant/plugins/commands/plugin/action/install_gem.rb:37:in `call''
from /usr/lib/ruby/vendor_ruby/vagrant/action/warden.rb:34:in `call''
from /usr/lib/ruby/vendor_ruby/vagrant/action/builder.rb:116:in `call''
from /usr/lib/ruby/vendor_ruby/vagrant/action/runner.rb:66:in `block in run''
from /usr/lib/ruby/vendor_ruby/vagrant/util/busy.rb:19:in `busy''
from /usr/lib/ruby/vendor_ruby/vagrant/action/runner.rb:66:in `run''
from /usr/share/vagrant/plugins/commands/plugin/command/base.rb:14:in `action''
from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:32:in `block in execute''
from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:31:in `each''
from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:31:in `execute''
from /usr/share/vagrant/plugins/commands/plugin/command/root.rb:56:in `execute''
from /usr/lib/ruby/vendor_ruby/vagrant/cli.rb:42:in `execute''
from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:268:in `cli''
from /usr/bin/vagrant:173:in `<main>''
Estoy usando Virtual Box 5.0.18_Ubuntu r106667 y ruby 2.3.0p0. También me enfrenté al mismo problema al intentar instalar el plugin de sahara
. ¿Cómo puedo arreglarlo?
Debido a que nadie parece haberlo mencionado hasta ahora, aquí está el aquí es el informe de error para Ubuntu 16.04: https://bugs.launchpad.net/ubuntu/+source/vagrant/+bug/1562696
A partir de ahora, nadie copió el parche para 16.04, por lo que parece tener que parchear manualmente o descargar un paquete fijo .
En lugar de parches, arreglé el problema usando vagrant v1.8.0 en ubuntu 16.04:
- Descargar paquete:
wget https://releases.hashicorp.com/vagrant/1.8.0/vagrant_1.8.0_x86_64.deb
-
sudo dpkg -i vagrant_1.8.0_x86_64.deb
-
vagrant plugin install vagrant-vbguest
Mantenga un ojo y actualice a 1.8.2 cuando se lance ... ¡Disfrútelo!
Esto se soluciona en la versión reciente de Vagrant, por lo que debe actualizarla.
Si no puede, ejecute este comando para solucionar el problema:
sudo sed -i'''' "s/Specification.all = nil/Specification.reset/" /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb
Nota: El permiso sudo
es obligatorio o se ejecuta sin una raíz.
Esto aplicará un parche a su archivo bundler.rb
según PR (# 7198) .
También debe actualizar su bundler
a por lo menos 1.12.5 según esta RP vagabundo (# 7404) :
sudo gem install bundler --version ">= 1.12.5"
Sí, hay un problema: https://github.com/mitchellh/vagrant/issues/7073 en Vagrant 1.8.1
PR con arreglo: https://github.com/mitchellh/vagrant/pull/7198
La corrección debería ser lanzada en Vagrant 1.8.2
.
Pero hasta eso, puedes parcharlo manualmente.
Aquí están los pasos para arreglar Vagrant 1.8.1
bajo Ubuntu 16.04
que tiene ruby 2.3.0
.
1.) Cree el archivo vagrant-plugin.patch
con los siguientes contenidos :
---
lib/vagrant/bundler.rb | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
index 5a5c185..c4a3837 100644
--- a/lib/vagrant/bundler.rb
+++ b/lib/vagrant/bundler.rb
@@ -272,7 +272,6 @@ module Vagrant
# Reset the all specs override that Bundler does
old_all = Gem::Specification._all
- Gem::Specification.all = nil
# /etc/gemrc and so on.
old_config = nil
@@ -286,6 +285,8 @@ module Vagrant
end
Gem.configuration = NilGemConfig.new
+ Gem::Specification.reset
+
# Use a silent UI so that we have no output
Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do
return yield
2.) Aplicar el parche:
sudo patch --directory /usr/lib/ruby/vendor_ruby/vagrant < vagrant-plugin.patch
que corrige /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb
.
Tengo el mismo error con otro complemento: vagrant-triggers
He encontrado un parche para aplicar en /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb
.
pero entonces, vagabundo ingrese en un gran bucle intente infinitamente instalar el paquete.
actualizar ruby funcionó para mí. Ubuntu 16.04. Seguí esta guía https://www.brightbox.com/blog/2017/04/25/updated-ruby-ubuntu-packages/