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, luegobrew update
ybrew 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.
Desinstalar y reinstalar Vagrant también funciona. Hay un script bash unistall.tool incluido en la imagen .dmg del instalador que eliminará Vagrant.
Encontré esta solución aquí: Actualización de extensiones de gemas y vagabundos no incorporadas
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.