Подтвердить что ты не робот

Игнорирование GEM, поскольку его расширения не построены

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

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

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 update
  • gem update --system
  • bundle update
  • удаление и переустановка bundler
  • удаление и переустановка rails (Хотя это не проблема с Rails.)
  • удаление ~/.bundle/
  • открытие XCode и возможность установки некоторых расширений (это нужно было сделать, но ничего не исправить).
  • работает brew doctor и решает все незначительные проблемы, затем brew update и brew upgrade
  • gem install curb (я не могу себе представить, что этот камень имеет отношение к этой проблеме, но два разных человека указали это как последний шаг их исправления на одно и то же предупреждение.)
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

which rvm
which rbenv
which chruby

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


Удалить

Вот что я сделал для rvm;

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

Переустановка

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

rbenv rehash

Ответ 4

Я сделал все, что упоминалось выше, включая

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

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

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

Ответ 5

Если вы установили 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, поэтому - gem install minitest

Ответ 6

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

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

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

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

Ответ 8

Предложение Либби просто начать новую терминальную сессию (которую она прокомментировала в ответе Себастьяна Кима) сработало для меня. Гораздо быстрее, чем любой другой, поэтому я хотел, чтобы это было ответом, чтобы он был более заметным.

Ответ 9

У меня была такая же проблема, и я использую rbenv. По некоторым причинам моя глобальная настройка rbenv пропала. Чтобы решить эту проблему, я установил глобальную версию на одну из моих версий rbenv... например:

rbenv global 2.5.1

Ответ 10

Это старая ветка, но я сам столкнулся с этой проблемой.

Вам не нужно перезагружать компьютер, вам просто нужно обновить среду, вы можете сделать это с помощью команды rehash:

rehash

Со страницы man: 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.

Ответ 11

Это также проблема, когда вы разрабатываете на Mac, а затем создаете образ Docker: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0

Когда вы выполняете "комплектную установку --deployment", bundler создаст в ней каталог вендора с вашими драгоценными камнями. Обратите внимание, что, хотя ваши драгоценные камни включены в локальную папку, они будут включать только собственные расширения для вашей платформы. Поскольку вы работаете в macOS, это будет Дарвин. Вам нужно будет повторить процесс в 64-битной среде Linux x86.

Ответ 12

Добавляя мой собственный вкус здесь. Я использую rbenv установленный через Homebrew, и получаю четыре из этих сообщений "игнорирование... расширения не встроены". В частности:

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

Я перепробовал много вещей в этой теме без удачи. Наконец, в моем случае я сделал:

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

В этот момент я все еще получал ошибки, но теперь у меня была только одна версия Ruby, с которой нужно было бороться:

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

В этот момент я попробовал sudo gem pristine --all но sudo gem pristine --all было отказано в разрешениях на системный каталог Gems.

Так что я прошел и побежал нетронутым на каждом драгоценном камне, как

sudo gem pristine bcrypt --version 3.1.12 (и т.д.)

И, наконец, ошибки исчезли.

Ответ 13

Удалите самоцветы и установите самоцветы с помощью sudo gem uninstall [имя самоцвета]

Ответ 14

В моем случае я пытался запустить pristine --all, но получал:

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) 

Затем я удалил контент на Users/{{user.name}}⁩/⁨.gem⁩, затем, когда мне нужно было запустить bundle install --force, он переустановил все, затем команда pristine --all работала, как и ожидалось.