¿Por qué el paquete no instala JSON gem?


82

Recibo el siguiente error al intentar ejecutar cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

Puede ser importante tener en cuenta que esta implementación estaba funcionando, entonces actualicé a Ruby 2.1.0 para eliminar un error de codificación. Actualicé localmente que funcionó bien. Ejecuté rvm install 2.1.0y rvm use 2.1.0luego cambié mi .ruby-versionarchivo para reflejar esta actualización de Ruby.

El bundle installcomando funciona localmente, pero produce el mismo error anterior cuando me dirijo al servidor de destino y ejecuto este comando.

Si corro gem list, puedo ver esto en la lista de gemas.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

Si pruebo la solución recomendada gem install json -v '1.8.1'localmente y en el servidor de destino, obtengo el siguiente resultado:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

Entonces parece que la gema está instalada, ¿verdad? ¿Por qué está pasando esto? ¿Como puedo resolver esto? Cualquier ayuda será muy apreciada.


¿Qué bundle show jsonte da?
user2503775

Agregar gem json, '1.8.1'a Gemfile
user2503775

Tengo gem json, '1.8.1' en mi archivo de gemas, desafortunadamente
Thomas

paquete show json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Thomas

6
Necesitaba sudo apt-get install ruby-deven mi Ubuntu.
e9t

Respuestas:


73
$ bundle update json
$ bundle install

2
¡Esto lo hizo por mí en Ruby 2.4.0!
Molino de viento

También funciona para rbenv ruby ​​2.4.1 (debian / ubuntu)
Aleksey Deryagin

Esto funcionó para mí también. Ruby 2.4.0 High Sierra. ¡Gracias!
Robert_T_Taylor

También funcionó para mí en Ruby versión 2.4.2p198. Gracias.
fatihturan

Elegí esta respuesta porque funcionó para mí, mientras que la respuesta aceptada no lo hizo. Como @Robert_T_Taylor, ejecuté esto en macOS High Sierra.
Scott Lawrence

68

Entonces, después de medio día en esto y casi inmediatamente después de publicar mi pregunta, encontré la respuesta. Bundler 1.5.0 tiene un error en el que no reconoce las gemas predeterminadas como se hace referencia aquí

La solución fue actualizar al paquete 1.5.1 usando gem install bundler -v '= 1.5.1'


10
Tuve el mismo problema incluso después de actualizar el paquete, hacer una gem install json -v '1.8.1'actualización después de la actualización solucionó el mensaje de error para mí.
Jason Denney

5
gem install json -v '1.8.1'seguido de bundle packagehizo el truco para mí
Obie

Me ahorró algunas palabrotas. ¡Gracias por esto!
Bagre

1
¿No se supone que el bundler debe instalar estas gemas por ti? No entiendo por qué tienes que instalar las gemas manualmente. bundler.io/rationale.html Estoy usando Bundler versión 1.7.11
Snowcrash

2
Estoy usando la versión 1.14.6 del paquete y también obtengo este error
Catfish

48

Ejecute este comando, entonces todo estará bien

sudo apt-get install libgmp-dev

También funcionó para mí :) ¡Gracias!
Deepak Kumar Padhy

@Imran Tienes que poner esto en una terminal linux. ¿Supongo que está ejecutando Windows?
Rcordoval

41

si está en MacOS Sierra y su versión de ruby ​​es 2.4.0. La versión de ruby ​​no es compatible con json 1.8.3.

Puede intentar agregar esta línea en su Gemfile:

gem 'json', github: 'flori/json', branch: 'v1.8'

¡Esto funciona para mí!


¡Gracias, eso me ahorró mucha frustración!
Echelon

32

Para resolver este problema, simplemente ejecute:

bundle update

Actualizará la versión de su paquete. Entonces corre:

bundle install

Tu problema se resolverá. La solución está bien explicada aquí .


1
+1 Realmente útil y me despegó. Después bundle update, la instalación funcionó muy bien. Gracias por la solución limpia.
twknab

3
bundle updateactualizará todas tus gemas. gem update bundleractualizará el paquete.
eebbesen

20

Encontré la solución aquí . Hay un problema con la versión 1.8.1 de json y con ruby ​​2.2.3, así que instale la versión 1.8.3 de json.

gem install json -v1.8.3

1
Esto funcionó fantásticamente para mí en OSX, Ubuntu en múltiples versiones malas de la gema json. En un caso, tuve que eliminar el archivo de bloqueo y reconstruir desde cero: git rm Gemfile.lock bundle install
fuzzygroup

2
Funcionó bien, en primer lugar elimino el Gemfile.locky luego simplemente ejecuto bundle instally eso es todo.
alexventuraio

12

Deberías intentarlo

$ sudo gem install json -v '1.8.2'

en mi caso (Ubuntu 14.04) eso no funcionó directamente y tuve que hacer esto:

$ sudo apt-get install ruby-dev

y luego podría instalar la gema y continuar. Tuve un problema más que fue solucionado por:

$ sudo apt-get install libsqlite3-dev

La esperanza ayuda.


9

Si la respuesta recomendada no ayudó porque ya está utilizando una versión más reciente de bundler. Prueba la solución que funcionó para mí.

Elimine todo dentro de la carpeta de su proveedor. Agrega una línea a tu archivo de gemas

gem 'json', '1.8.0'

Entonces corre - bundle update json .

Parece ser un problema con 1.8.1, así que volver a 1.8.0 funcionó para mí.


Funcionó al actualizar de ruby ​​2.0.0 a 2.2.4.
Loubot

1
No es necesario borrar todo. "paquete de actualización json" fue suficiente.
Joffrey Baratheon

1
El uso gem 'json', '1.8.6'funcionó para mí. Es posible que desee probar eso.
etagwerker

7

Me encontré con este error mientras intentaba que un proyecto se ejecutara en mi caja de desarrollo local (OSX 10.6), usando Sinatra y Postgresql (a través de activerecord), ejecutándose en un rvm'd ruby ​​2.1. Encontré mi respuesta aquí: https://github.com/wayneeseguin/rvm/issues/2511

Mi problema exacto (después del primer bloque de entradas de registro):

También recibo un error al intentar crear extensiones nativas para gemas.

La respuesta :

rvm reinstalar 2.1.0 --disable-binary

La explicacion :

OSX no tiene un administrador de paquetes, por lo que todas las bibliotecas deben ser instaladas manualmente por el usuario, esto hace que sea virtualmente imposible vincular el binario dinámicamente y, como puede ver, hay problemas con el binario (pseudo) estáticamente vinculado.

En aras de la integridad, primero me había olvidado de actualizar rvm ( rvm get head), lo que produjo algunos otros errores, pero aún necesitaba la --disable-binarybandera una vez que lo había hecho.


Obtenga el siguiente error con su solución: "La versión '2.1.0' es ambigua. No se puede seleccionar la implementación / versión de Ruby, sea más específico. No se puede reinstalar el paquete desconocido ''"
holyredbeard

Es posible que no tenga ruby ​​2.1.0 o más de una versión instalada a través de rvm. Ejecuta rvm listy verás cuál es tu versión actual. Utilice la cadena completa (por ejemplo, ruby-2.0.0-p451) en lugar de la 2.1.0mencionada anteriormente.
Matthias


5

Cuando intenté instalar la gema json usando gem install jsonseparado de solo usar bundle installI got ERROR: Failed to build gem native extension., buscando eso encontré usando

    apt-get install ruby-dev

Hizo el truco


increíble - ¡me salvaste el día!
Unkas

3

Para OS X, asegúrese de tener coreutils

$ brew install coreutils
$ bundle

1
Aunque recibí una advertencia "Advertencia: coreutils 8.32 ya está instalado y actualizado", esto funcionó.
Paul Verschoor

2

Esto parece ser un error en Bundler que no reconoce las gemas predeterminadas instaladas junto con ruby ​​2.x. Seguí experimentando el problema incluso con la última versión del paquete (1.5.3).

Una solución es simplemente eliminar json-1.8.1.gemspec del directorio predeterminado de gemspec.

rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec

Después de hacer esto, el agrupador no debería tener problemas para localizar la gema. Tenga en cuenta que estoy usando chruby. Si está utilizando otro administrador de ruby, deberá actualizar su ruta en consecuencia.


sí, es sencillo resolver un problema con el paquete json. Gracias
hainguyen

2

Me faltaba la solución de encabezados C para descargarlo para Xcode, esta es la mejor manera.

xcode-select --install

Espero eso ayude.


2

El paquete no podía instalar json -v '1.8.1' y eliminar mi Gemfile.lock y ejecutar el paquete nuevamente resolvió este problema para mí.


1

Instalé la última versión de json:

gem install json

Luego eliminó la línea json (1.8.1) del Gemfile.lock e hizo un

bundle install

Y luego el archivo Gemfile.lock usa json (1.8.3) sin errores


1
Simplemente ejecutar una actualización de paquete resolvió este problema para mí ... en otras palabras, usando una compilación de gemas JSON más nueva.
Francis Malloch

0

Cambiar la versión de ruby ​​de 1.9 a 2.2 con rvm hizo el trabajo por mí


0

Para mí, algunas de las respuestas mencionadas anteriormente fueron útiles desde el punto de vista de la comprensión, pero no resolvieron mi problema.

Entonces esto es lo que hice para resolver el problema.

  • Gemfile.lock modificado para actualizar json (2.0.2) ( Anteriormente, era 1.8.3 )
  • Compruebe la versión de Bundler instalada (Bundler -v comando). Tenía instalada la versión 1.12.5
  • Instale la versión del paquete 1.11.2 (usando gem install bundler -v '1.11.2')
  • Luego ejecute la instalación del paquete

0

Para macOS Sierra:

Me encontré con este error cuando usé bundler ( v1.15.3) en el v4.2proyecto Rails ( ). La solución para mí es gem uninstall bundler -v '1.15.3'y gem install bundler -v '1.14.6'.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.