На рабочем и домашнем компьютерах я недавно обновил 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
(Я не могу себе представить, какое отношение этот драгоценный камень имеет к этой проблеме, но два разных человека указали это как последний шаг своего исправления к одному и тому же предупреждению.)
bcrypt
но он все равно дал мне два предупреждения об этом.gem pristine --all
не сработало. Решено путем удаления всех драгоценных камней, включая сборщик. Затем установил упаковщикgem install bundler
и, наконец, вернулся к моему проекту и запустил его,bundle install
который переустановил все мои драгоценные камни, и все работаетОтветы:
Сегодня я столкнулся именно с этой проблемой - получаю подобные предупреждения для драгоценных камней, которые даже не были установлены!
... Что ж, оказывается, драгоценные камни были установлены - для другого рубина, чем тот, который я активировал с помощью chruby (2.2.3 против 2.3.1).
Переход на все разные рубины и запуск
gem pristine --all
на всех из них решил проблему.источник
gem pristine --all
бесполезно. См. Этот ответ на Спросите у другого для получения дополнительной информации.gem pristine --all
есть проблемы с разрешениями, вы должны проверитьwhich ruby
.brew link --overwrite ruby && source ~/.bash_profile
и бегиgem pristine --all
может помочьЯ столкнулся с этой проблемой и выполнил все те же команды, что и выше, даже зашел так далеко, что удалил все мои ранее установленные версии Ruby. Однако ошибка не исчезла.
Оказалось, что для различных (ранее удаленных) версий в
~/.gem/ruby/
. После удаления папок, которыми я больше не пользовался, ошибки исчезли.источник
У меня тоже была эта проблема сегодня, и это расстраивало, потому что я не мог печатать, потому что весь мой редактор мигал красным с сообщениями об ошибках.
Я не совсем уверен , что именно послужило причиной, но я считаю , что это потому , что у нас есть несколько версий рубин ИЛИ несколько менеджеров рубин версий установленных и они перекрывают друг друга и в противном случае беспорядок ваших путей в сторону драгоценных камней.
Команда
gem
также перезаписывается, когда у вас есть rbenv и rvm.Посмотрите, какие из них вы установили, набрав;
Если один из них установлен, он вернет путь. Затем удалите их, обязательно полностью очистите все каталоги и начните с чистой установки.
удалять
Вот что я сделал для rvm ;
Вот что я сделал для rbenv
Сначала установил https://github.com/meowsus/rbenv-clean , затем
Переустановка
Тогда у вас будет чистый домашний каталог для работы. Я переустановил rbenv с помощью Как установить Ruby 2.1.4 на Ubuntu 14.04 . И наконец;
источник
Я сделал все, что было сказано выше, включая
но для меня проблема была такой же. Я просто перезагрузил свой Mac в качестве последней надежды, и предупреждающие сообщения исчезли.
Странно, но если кто-то борется с этой проблемой после того, как попробовал все на StackOverflow, попробуйте перезагрузить компьютер.
источник
Если вы установили RVM, возможно, вы заметили ошибку, потому что вы установили разные версии.
Проверяйте и удаляйте ненужные версии, но я думаю, что это не лучший подход. В любом случае ошибок нет.
После обновления cocoapods его следует ввести в .rvm GEM_HOME
Вероятно,
pod COMMAND
выдаст ошибку оminitest
драгоценном камне, поэтому -gem install minitest
источник
TL; DR - драгоценным камням Ruby не нравятся Ruby, работающие по символическим ссылкам или перемещенные оттуда, где они были созданы (из-за встроенных шебангов)
Если вызывается каталог Ruby или переменные среды указывают на каталог с символической ссылкой, или копируются или переименовываются, это сообщение скорее всего. Я использую chruby и использовал символическую ссылку
/opt/rubies/
->/usr/local/ruby/
, но логика динамического поиска библиотек Ruby не работает с этим.В моем случае решение состояло в том, чтобы заменить символическую ссылку на настоящие рубины
/opt/rubies/
и запускатьgem pristine --all
в каждом Ruby. Тем, кто использует RVM или Rbenv, удачи, не начинать с нуля.Возможно, это не ваша точная проблема, но, надеюсь, это поможет.
источник
gem pristine --all
по всей их части. Спасибо, что воскресили этот мертвый вопрос. Я был близок к тому, чтобы просто сжечь все это дотла и начать заново.Добавлю сюда свой вкус. Я использовал
rbenv
установку через Homebrew и получал четыре таких сообщения «игнорирование ... расширения не созданы». В частности:Я много чего пробовал в этой ветке, но безуспешно. Наконец, в моем случае я сделал:
brew uninstall rbenv
rm -rf ~/.rbenv
brew install rbenv
В этот момент я все еще получал ошибки, но теперь у меня была только одна версия Ruby, с которой нужно было бороться:
На этом этапе я попытался,
sudo gem pristine --all
но мне отказали в разрешении на доступ к системному каталогу Gems.Итак, я прошел через все драгоценные камни, как будто
sudo gem pristine bcrypt --version 3.1.12
(и т.д)И наконец ошибки исчезли.
источник
Это старая ветка, но я сам столкнулся с этой проблемой.
Вам не нужно перезагружать компьютер, вам просто нужно обновить среду, вы можете сделать это с помощью команды rehash:
На странице руководства:
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.
источник
rehash
илиhash -r
для bash - это команда оболочки, доступная в * nix. Когда оболочка C запускается, она строит хеш-таблицу всех команд на своем пути: имя каждой команды и ее абсолютный путь. Итак, после запуска csh, если новые программы добавляются в каталоги по пути, вам нужно использовать команду rehash оболочки, чтобы перестроить ее хеш-таблицу. (см. docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )У меня была эта проблема, но только когда я начинал
tmux
использовать сеансtmuxinator
.Оказалось, это потому, что я использую
tmuxinator
frombrew
вместо того, чтобы устанавливать егоgem install
. Возможно, использованиеchruby
в одно и то же время тоже способствовало возникновению проблемы.p / s: Я также удалил неиспользованный рубин,
~/.gem/ruby
но я сомневаюсь, что это причина, по которой эта проблема была решена для меня.источник
Запуск
gem pristine --all
сначала не помог, но потом я понял: скрипт, который я запускал, начинался со строки:#!/usr/bin/ruby
В моей системе macOS (Catalina, но я не думаю, что это имеет значение) это указывает на Ruby, поставляемый с системой, а не на тот, который установлен RVM. Запуск
gem pristine --all
исправлял установку RVM, но мой сценарий вызывал другую версию Ruby.Для меня исправление заключалось в использовании этой
env
команды для вызова любого Ruby, указанного в текущей оболочкеPATH
. Изменение верхней строки скрипта на это исправило:#!/usr/bin/env ruby
источник
bundle install
установлены драгоценные камни (и их собственные расширения) для рубина, выбранного с помощью переключателя RVM Ruby, где сценарий, относящийся к системному Ruby, не может их найти. Ваше решение - стандартная практика, позволяющая заставить скрипты и гемы Ruby работать с установленными пользователем рубинами ( см . Раздел Ресурсы ).apt purge tmuxinator
а потомgem install tmuxinator
заставил работать. Мне, вероятно, придется устанавливать его каждый раз, когда я обновляю свою версию Ruby, отличную от проекта, но мне это нравится больше. Спасибо!Запускаем Mac OS Catalina, варим и рбенв ...
Столкнувшись с этой точной проблемой сегодня и просмотрев здесь все ответы, я в конце концов наткнулся на другую причину этой ошибки:
Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7
И, конечно же, нетронутый драгоценный камень не помог.
Моя проблема заключалась в жестко запрограммированных переменных среды GEM_HOME и GEM_PATH, которые переопределяли rbenv.
Итак, убедитесь, что вы не установили GEM_PATH и GEM_HOME в ~ / .zshrc
источник
Также можно удалить и переустановить Vagrant. В
unistall.tool
образ .dmg установщика включен сценарий bash, который удалит Vagrant.Нашел это решение здесь: Обновление расширений Vagrant и Gems, не встроенных
источник
У меня была такая же проблема, и я использую rbenv. По какой-то причине моя глобальная настройка rbenv пропала. Чтобы решить эту проблему, я установил глобальную версию на одну из моих версий rbenv ... например:
rbenv глобальный 2.5.1
источник
Это также проблема, когда вы разрабатываете на Mac, а затем создаете образ Docker: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0
источник
Предложение Либби просто начать новый сеанс терминала (которое она прокомментировала ответом Себастьяна Кима) сработало для меня. Гораздо быстрее, чем любой другой, поэтому я хотел дать ответ, чтобы он был более заметным.
источник
В моем случае я пытался бежать,
pristine --all
но получал:Затем я удалил содержимое, так
Users/{{user.name}}/.gem
как мне нужно было запуститьbundle install --force
, он все переустановил, затем командаpristine --all
сработала, как ожидалосьисточник
Это решение сработало для меня для RubyMine IntelliJ
У меня было два разных терминала и
RVM
иruby<Version>
.Решение:
Мне пришлось переключить его на версию RVM, чтобы ошибки исчезли в
Preferences>Languages&Frameworks>Ruby SDK
Ошибки:
источник