ruby rubygems chruby

ruby - Ignorando GEM porque sus extensiones no están construidas



rubygems chruby (12)

Tanto en mi trabajo como en las computadoras de mi hogar, recientemente actualicé Ruby a 2.3.1, usando ruby-install . Yo uso chruby como 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é la gem pristine GEM sugerida gem pristine GEM , me dijo que no podía encontrar la gema, así que ejecuté la gem install GEM , y 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 el bundler
  • desinstalar y reinstalar rails (aunque no es un problema específico de Rails).
  • eliminar ~/.bundle/
  • abrir XCode y dejar que instale algunas extensiones (necesitaba hacerlo, pero no solucionó nada).
  • ejecutando brew doctor y resolviendo todos los problemas menores, luego brew update y brew 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).

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 Ruby o los vars de entorno apuntan a un directorio con enlace simbólico, o se copian o cambian de nombre, es probable que 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 en /opt/rubies/ y ejecutar gem pristine --all en cada 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.


Agregando mi propio sabor aquí. Utilizo rbenv instalado a través de Homebrew y rbenv cuatro de estos mensajes "ignorando ... extensiones no rbenv ". 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 probé sudo gem pristine --all pero me rechazaron por 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.



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 de manual: el 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.


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.


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 , intente reiniciar su máquina.


Me encontré con 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 ejecutar gem pristine --all todos resolvieron el problema.


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.


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

Comprobar y eliminar 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 cocoapods, debe inyectarse en .rvm GEM_HOME

gem uninstall cocoapods gem install cocoapods

Probablemente pod COMMAND arrojará el error sobre la gema más minitest , así que - gem install minitest


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 múltiples 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 comando gem también se sobrescribe cuando tienes rbenv y rvm.

Vea cuáles instaló escribiendo;

which rvm which rbenv which chruby

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

retirar

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/bernsie/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


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


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.