Игнорирование GEM, потому что его расширения не построены



на моем рабочем и домашнем компьютерах я недавно обновил Ruby до 2.3.1, используя ruby-install. Я использую chruby как мой рубиновый переключатель.



я начал видеть это предупреждение в мой терминал:



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


на моей работе, компьютер, список был намного длиннее, но легко решить. Когда я попробовал предложенный gem pristine GEM, Он сказал мне, что не может найти камень, поэтому я побежал gem install GEM, и это решено.



дома, ничего не работает.



вещи у меня есть пробовал, из здравого смысла и различных других вопросов стека:




  • gem pristine GEM

  • gem pristine --all

  • удаление и переустановка gem

  • gem update

  • gem update --system

  • bundle update

  • удалить и переустановить bundler

  • удалить и переустановить rails (хотя, это не конкретная проблема рельсов.)

  • удаление ~/.bundle/

  • открытие XCode и позволить ему установить некоторые расширения (ему действительно нужно было это сделать, но он ничего не исправил.)

  • под управлением brew doctor и решить все мелкие вопросы, то brew update и brew upgrade


  • gem install curb (я не могу себе представить, что этот камень имеет отношение к этой проблеме, но два разных человека перечислили его как последний шаг их исправления к одному и тому же предупреждению.)

757   7  

7 ответов:

я наткнулся на эту точную проблему сегодня-получение предупреждений, как это для драгоценных камней, которые даже не были установлены!

... Ну вот и получается самоцветы были установлен-для другого Рубина, чем тот, который я установил активным с помощью chruby (2.2.3 vs 2.3.1).

переключение на все рубины и под управлением gem pristine --all на всех из них решена проблема.

я столкнулся с этой проблемой и следовал всем тем же командам, что и выше, даже зайдя так далеко, чтобы удалить все мои ранее установленные версии Ruby. Однако ошибка сохранялась.

оказывается, были некоторые оставшиеся драгоценные камни для различных (ранее неустановленных) версий в ~/.gem/ruby/. После удаления папок, которые я больше не использовал, ошибки исчезли.

у меня тоже была эта проблема сегодня, и это расстроило, потому что я не мог печатать, потому что весь мой редактор мигал красным цветом с сообщениями об ошибках.

Я не совсем уверен, что именно вызвало это, но я верю, что это потому что у нас есть несколько версий ruby или несколько менеджеров версий rubyустановлен и они перезаписывают друг друга и в противном случае испортить ваши пути к драгоценным камням.

The gem команда также перезаписывается, когда у вас есть rbenv и РВМ.

смотрите, какие из них вы установили, введя;

which rvm
which rbenv
which chruby

если один из них установлен, он вернет путь. Затем удалить их, убедитесь, что полностью очистить все каталоги и начать с чистой установки.


удалить

вот что я сделал для РВМ;

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

вот что я сделал для rbenv

впервые установлена https://github.com/bernsie/rbenv-clean, затем

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

переустановить

тогда у вас есть чистый домашний каталог для работы. Я reïnstalled rbenv с Как установить Ruby 2.1.4 на Ubuntu 14.04. И, наконец;

rbenv rehash

TL;DR - Ruby gems не любят рубины, запущенные из символических ссылок или перемещенные оттуда, где они были построены (из-за встроенных shebangs)

если каталог Рубин вызывается или окружающей среде Варс указывать на каталог, символьная ссылка объед, или скопирован или переименован, это сообщение, скорее всего. Я использую chruby и был symlinking /opt/rubies/ ->/usr/local/ruby/, но динамическая логика поиска библиотек Ruby не очень хорошо с этим справляется.

решение в моем случае было заменить символическую ссылку на фактическую рубины в /opt/rubies/ и работать gem pristine --all в каждом Руби. Для других, использующих RVM или Rbenv, удачи с этим, не начиная с нуля.

это может быть не ваша точная проблема, но, надеюсь, это поможет.

Я сделал все выше, в том числе

  • xcode-select --install
  • переустановить ruby
  • переустановить все драгоценные камни
  • драгоценный камень первозданный -- все

но проблема была такой же для меня. Я просто перезагрузил свой Mac как последнюю надежду, и предупреждающие сообщения исчезли.

странно, но если кто-то борется с этой проблемой после попытки все, на StackOverflow, попробуйте перезагрузить компьютер.

если вы установили RVM, возможно, вы ловите ошибку, потому что вы установили разные версии.

проверьте и удалите бесполезные версии, но я думаю, что это не хорошо подход. В любом случае ошибки нет.

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

после обновления cocoapods, он должен быть введен .rvm GEM_HOME

gem uninstall cocoapods
gem install cocoapods

наверное pod COMMAND выдаст ошибку о minitest драгоценный камень, так что -gem install minitest

удаление и переустановка Vagrant также работает. Там есть unistall.tool скрипт bash включен в установщик .dmg изображение, которое удалит Бродяга.

нашел это решение здесь: обновление Vagrant и драгоценные камни расширений, которые не построили в

Comments

    Ничего не найдено.