¿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.

Thomas
fuente
¿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
dnvtrn
fuente
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'

Thomas
fuente
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
Jameel Grand
fuente
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í!

Juice007
fuente
¡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í .

Rohini Choudhary
fuente
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
Ajeet Khan
fuente
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.

Lucas
fuente
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í.

Adán
fuente
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.

Matías
fuente
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
6

bundle update json. Ayudó a pasar.

anti-k
fuente
1
JSON 1.8.6 instalado con éxito (antes 1.8.3)
Simon Liu
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

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

Para OS X, asegúrese de tener coreutils

$ brew install coreutils
$ bundle
comonitos
fuente
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.

jearlu
fuente
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.

Haris Krajina
fuente
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í.

Davidmccoy
fuente
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

PerseP
fuente
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í

Koala7
fuente
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
iHS
fuente
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'.

Devin
fuente