Ignorando GEM porque sus extensiones no están construidas

133

Tanto en mi trabajo como en mi casa, recientemente actualicé Ruby a 2.3.1, usando ruby-install. Lo uso chrubycomo mi conmutador Ruby.

Empecé a ver esta advertencia en mi terminal:

Ignoring bcrypt-3.1.11 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built.  Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built.  Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built.  Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built.  Try: gem pristine debug_inspector --version 0.0.2

En mi trabajo, computadora, la lista era mucho más larga, pero fácil de resolver. Cuando probé lo sugerido gem pristine GEM, me dijo que no podía encontrar la gema, así que corrí gem install GEMy eso lo resolvió.

En casa, nada funciona.

Cosas que he intentado, desde el sentido común y otras preguntas de Stack:

  • gem pristine GEM
  • gem pristine --all
  • desinstalar y reinstalar la gema
  • gem update
  • gem update --system
  • bundle update
  • desinstalar y reinstalar bundler
  • desinstalar y reinstalar rails(aunque no es un problema específico de Rails).
  • borrando ~/.bundle/
  • abrir XCodey dejar que instale algunas extensiones (necesitaba hacerlo, pero no solucionó nada).
  • ejecutar brew doctory resolver todos los problemas menores, luego brew updateybrew upgrade
  • gem install curb (No puedo imaginar lo que esta gema tiene que ver con este problema, pero dos personas diferentes lo enumeraron como el último paso de su solución a la misma advertencia).
Phillip Longman
fuente
1
Incluso estoy viendo la misma advertencia si las gemas no están instaladas. Desinstalé bcrypty todavía me dio dos advertencias al respecto.
Phillip Longman el
1
¿Actualizaste el bundler? desinstalar y reinstalar solo usará lo que esté en su Gemfile.lock. Bundler es quien construirá las extensiones. Además, su resultado es una lista de múltiples versiones de gemas, por lo que debe saber que este es todo el sistema para esa versión de ruby ​​(lo que significa que tendrá varias gemas para reconstruir).
Anthony
Estaba en mi carpeta de inicio, no en un proyecto de Rails, así que no había Gemfile.
Phillip Longman
El mismo problema me sucedió (usando rvm). gem pristine --allno funcionó. Se resuelve eliminando todas las gemas, incluido el paquete. Luego instalé el paquete gem install bundlery finalmente volví a mi proyecto y ejecuté, lo bundle installque reinstaló todas mis gemas y todo está funcionando
David Watson,
En mi caso, fue causado por una extensión vim. Hice alias vim = "rvm use system do vim" para solucionarlo. Pero solo vi la advertencia cuando salí de vim, por lo que si lo está viendo en otras situaciones, esto probablemente no se aplique.
Brian Deterling

Respuestas:

179

Encontré este problema exacto hoy: ¡recibí advertencias como esta para gemas que ni siquiera estaban instaladas!

... Bueno, resulta que las gemas estaban instaladas, por un rubí diferente al que había activado con chruby (2.2.3 vs 2.3.1).

Cambiar a todos los diferentes rubíes y ejecutarlos gem pristine --alltodos resolvió el problema.

sevenseacat
fuente
3
Esto funcionó para mí haciendo esto solo en el rubí actual (uso rvm). Tal vez esto evite que alguien haga demasiada limpieza;)
Sandro L
1
A veces gem pristine --allno servirá de nada. Vea esta respuesta en Preguntar diferente para más información.
GDP2
si gem pristine --alltiene problemas de permisos, debe verificar which ruby. brew link --overwrite ruby && source ~/.bash_profiley correr gem pristine --allpuede ayudar
Chris Yim
Ninguna de esas soluciones me funciona y tengo este mismo problema.
Alex Cohen
19

Me encontré con este problema y seguí los mismos comandos que el anterior, incluso llegando a eliminar todas mis versiones de Ruby instaladas anteriormente. Sin embargo, el error persistió.

Resulta que había algunas gemas sobrantes para las diversas versiones (previamente desinstaladas) en ~/.gem/ruby/. Después de eliminar las carpetas que ya no usaba, los errores desaparecieron.

opes
fuente
2
Esto lo hizo por mi. rm -rf. Previamente intenté instalar todas mis gemas sin ningún resultado.
StevenNunez
10

También tuve este problema hoy y me frustraba porque no podía escribir porque todo mi editor parpadeaba en rojo con mensajes de error.

No estoy completamente seguro de qué lo causó exactamente, pero creo que es porque tenemos varias versiones de rubí O múltiples administradores de versiones de rubí instalados y se sobrescriben entre sí y de lo contrario arruinan sus caminos hacia las gemas.

El gemcomando también se sobrescribe cuando tienes rbenv y rvm.

Vea cuáles instaló escribiendo;

which rvm
which rbenv
which chruby

Si uno de esos está instalado, devolverá una ruta. Luego elimínelos, asegúrese de limpiar completamente todos los directorios y comience con una instalación limpia.


Eliminar

Esto es lo que hice para rvm ;

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc

Esto es lo que hice por rbenv

Primero instaló https://github.com/meowsus/rbenv-clean , luego

rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv

Reinstalar

Entonces tiene un directorio de inicio limpio para trabajar. Reinstalé rbenv con Cómo instalar Ruby 2.1.4 en Ubuntu 14.04 . Y finalmente;

rbenv rehash
Simon Somlai
fuente
Solo eliminar las cosas relacionadas con rvm me solucionó este problema en macOS
neu242
6

Hice todo lo mencionado anteriormente, incluyendo

  • xcode-select --instalar
  • reinstalar ruby
  • reinstalar todas las gemas
  • joya prístina --todos

Pero el problema era el mismo para mí. Acabo de reiniciar mi Mac como la última esperanza, y los mensajes de advertencia han desaparecido.

Extraño, pero si alguien tiene problemas con este problema después de probar todo en StackOverflow, intente reiniciar su máquina.

Sebastian Kim
fuente
44
Gracias por compartir el consejo de reinicio. Tuve el mismo problema, en una Mac, y pude resolver simplemente iniciando una nueva sesión de terminal.
Libby
3

Si ha instalado RVM, es posible que esté captando el error porque ha instalado diferentes versiones.

Verifique y elimine versiones inútiles, pero creo que este no es un buen enfoque. De todos modos los errores desaparecieron.

rvm list
rvm use ruby-version
rvm remove ruby-useless-version

Después de actualizar los cacaopods, debe inyectarse en .rvm GEM_HOME

gem uninstall cocoapods
gem install cocoapods

Probablemente pod COMMANDarrojará el error sobre minitestgem, así que ...gem install minitest

dimpiax
fuente
2

TL; DR: a las gemas de Ruby no les gustan los Rubies que se ejecutan desde enlaces simbólicos o se trasladaron desde donde se construyeron (debido a shebangs incrustados)

Si se invoca el directorio de Ruby o los vars del entorno apuntan a un directorio enlazado con un enlace simbólico, o se copian o cambian de nombre, es probable que aparezca este mensaje. Estoy usando chruby y estaba simpatizando /opt/rubies/->/usr/local/ruby/ , pero la lógica dinámica de búsqueda de bibliotecas de Ruby no funciona bien con esto.

La solución en mi caso fue reemplazar el enlace simbólico con rubíes reales /opt/rubies/y ejecutar gem pristine --allcada Ruby. Para otros que usan RVM o Rbenv, buena suerte con eso sin comenzar desde cero.

Puede que este no sea su problema exacto, pero espero que ayude.


fuente
1
Resultó ser la parte gem pristine --allde todos ellos corriendo . Gracias por resucitar esta pregunta muerta. Estaba cerca de quemarlo todo y comenzar de nuevo.
Phillip Longman
2

Agregando mi propio sabor aquí. Utilizo rbenvinstalado a través de Homebrew y recibí cuatro de estos mensajes "ignorando ... extensiones no compiladas". Específicamente:

Ignoring bcrypt-3.1.12 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.12
Ignoring bindex-0.5.0 because its extensions are not built.  Try: gem pristine bindex --version 0.5.0
Ignoring bootsnap-1.3.2 because its extensions are not built.  Try: gem pristine bootsnap --version 1.3.2
Ignoring byebug-10.0.2 because its extensions are not built.  Try: gem pristine byebug --version 10.0.2

Intenté muchas cosas en este hilo sin suerte. Finalmente en mi caso hice:

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

En este punto todavía recibía los errores, pero ahora solo tenía una versión de Ruby con la que lidiar:

$ rbenv versions
* system (set by /Users/will/.rbenv/version)

En este punto lo intenté sudo gem pristine --allpero fue rechazado por los permisos en el directorio de Gemas del sistema.

Así que fui y corrí impecable en cada gema, como

sudo gem pristine bcrypt --version 3.1.12 (etc.)

Y finalmente los errores se fueron.

Wrydere
fuente
1

Este es un hilo viejo, pero acabo de encontrarme con este problema.

No necesita reiniciar su máquina, solo necesita actualizar su entorno, puede hacerlo con el comando rehash:

rehash

Desde la página del manual: rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.

yacc
fuente
1
¿De qué sistema operativo estás hablando?
rbanffy
rehasho hash -rpara bash es un comando de shell disponible en * nix. Cuando se inicia el shell C, crea una tabla hash de todos los comandos en su ruta: cada nombre de comando y su ruta absoluta. Entonces, después de comenzar a ejecutar un csh, si se agregan nuevos programas a los directorios a lo largo de la ruta, debe usar el comando rehash del shell para reconstruir su tabla hash. (cf: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )
yacc
1

Tuve este problema pero solo cuando comencé a tmuxusar la sesión tmuxinator.

Resultó que es porque estoy usando tmuxinatordesde en brewlugar de instalarlo usando gem install. Quizás el uso chrubyal mismo tiempo también contribuyó al problema.

p / s: también eliminé el rubí no utilizado, ~/.gem/rubypero dudo que esa sea la razón por la que este problema se resolvió por mí.

Amree
fuente
1

Al gem pristine --allprincipio no funcionó, pero luego me di cuenta: el script que estaba ejecutando comenzó con la línea:

#!/usr/bin/ruby

En mi sistema macOS (Catalina, pero no creo que importe), esto apunta al Ruby que vino con el sistema, no al que instaló RVM. Ejecutar gem pristine --allestaba arreglando la instalación de RVM, pero mi script estaba llamando a una versión diferente de Ruby.

La solución para mí fue usar el envcomando para llamar a cualquier Ruby especificado en el shell actual PATH. Al cambiar la línea superior del script a esto, se solucionó:

#!/usr/bin/env ruby

Dave Ceddia
fuente
Me acaba de pasar, ¡gracias! Significa que bundle installinstaló las gemas (y sus extensiones nativas) para un ruby ​​seleccionado a través del conmutador RVM Ruby, donde un script que hace referencia al sistema Ruby no puede encontrarlos. Su solución es la práctica estándar para hacer que los scripts y gemas de Ruby funcionen con los rubíes instalados por el usuario ( consulte ).
tanius
Esto me puso en el camino correcto! En mi caso, quería que tmuxinator fuera una utilidad (no un paquete incluido para un proyecto específico), así que lo instalé en Ubuntu. Así lo hizo apt purge tmuxinatory luego lo gem install tmuxinatorhizo funcionar. Probablemente tendré que instalarlo cada vez que actualice mi versión ruby ​​que no sea de proyecto, pero me gusta más. ¡Gracias!
laberinto
1

Ejecutando Mac OS Catalina, brew y rbenv ...

Habiendo encontrado este problema exacto hoy, y revisado todas las respuestas aquí, finalmente encontré otra razón para este error:

Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7

Y, por supuesto, la gema prístina no funcionó.

Mi problema era un GEM_HOME y GEM_PATH variables de entorno codificadas que anulaban rbenv.

Por lo tanto, verifique que no haya configurado GEM_PATH y GEM_HOME en ~ / .zshrc

Tomm P
fuente
0

Tuve el mismo problema y estoy usando rbenv. Por alguna razón, mi configuración global de rbenv se perdió. Para solucionar este problema, configuré la versión global en una de mis versiones de rbenv ... por ejemplo:

rbenv global 2.5.1

Eric Jones
fuente
0

Esto también es un problema cuando está desarrollando en Mac y luego crea una imagen Docker: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0

Cuando realiza una "instalación de paquete - implementación", el paquete creará un directorio de proveedores con sus gemas en él. Tenga en cuenta que si bien esto incluye sus gemas en la carpeta local, solo incluirá las extensiones nativas para su plataforma. Como estás en macOS, este será Darwin. Tendrá que repetir el proceso en un entorno Linux x86 de 64 bits.

NorseGaud
fuente
0

La sugerencia de Libby de comenzar una nueva sesión terminal (que comentó sobre la respuesta de Sebastian Kim) funcionó para mí. Mucho más rápido que cualquiera de los otros también, así que quería darle una respuesta para que fuera más visible.

jim
fuente
0

En mi caso, estaba tratando de correr pristine --allpero estaba obteniendo:

Ignoring ffi-1.11.1 because its extensions are not built.  Try: gem pristine ffi --version 1.11.1
Ignoring jaro_winkler-1.5.3 because its extensions are not built.  Try: gem pristine jaro_winkler --version 1.5.3
Ignoring psych-3.1.0 because its extensions are not built.  Try: gem pristine psych --version 3.1.0
/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /.gem/gems/psych-3.1.0/lib/psych.bundle (fatal) 

Luego, eliminé el contenido Users/{{user.name}}⁩/⁨.gem⁩cuando lo necesitaba para ejecutar bundle install --force, reinstalé todo, luego el comando pristine --allfuncionó como se esperaba

Luisa Hernández
fuente
0

Esta solución me funcionó para RubyMine IntelliJ

Tenía dos terminales diferentes en uso y RVMy ruby<Version>.

Solución:

Tuve que cambiarlo a la versión RVM para que los errores desaparecieran en Preferences>Languages&Frameworks>Ruby SDK

Errores:

Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0 rubymine

Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0

ingrese la descripción de la imagen aquí

Roger Pérez
fuente