在我的工作电脑和家用电脑上,我最近使用Ruby -install将Ruby升级到2.3.1。我使用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原始gem时,它告诉我找不到宝石,所以我运行gem安装gem,这就解决了问题。
在家里,一切都不正常。
我从常识和其他Stack问题中尝试过的事情:
gem pristine GEM
gem pristine --all
uninstalling and reinstalling the gem
gem update
gem update --system
bundle update
uninstalling and reinstalling bundler
uninstalling and reinstalling rails (Though, it's not a Rails specific problem.)
deleting ~/.bundle/
opening XCode and letting it install some extensions (It did need to do it, but it didn't fix anything.)
running brew doctor and solving all the minor issues, then brew update and brew upgrade
gem install curb (I can't imagine what this gem has to do with this issue, but two different people listed it as the last step of their fix to the same warning.)
我今天也遇到了这个问题,它让我很沮丧,因为我无法打字,因为我的整个编辑器闪烁着红色的错误消息。
我不完全确定到底是什么原因导致的,但我相信这是因为我们安装了多个ruby版本或多个ruby版本管理器,它们相互覆盖,否则就会扰乱你通往宝石的路径。
当您有rbenv和rvm时,gem命令也会被覆盖。
通过输入查看您已经安装了哪些;
which rvm
which rbenv
which chruby
如果安装了其中一个,它会返回一个路径。然后删除它们,确保完全清理所有目录,并开始全新安装。
删除
这是我对rvm所做的;
rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc
这是我对rbenv所做的
首先安装https://github.com/meowsus/rbenv-clean,然后
rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv
重新安装
然后就有了一个干净的主目录。我reïnstalled rbenv与如何安装Ruby 2.1.4 Ubuntu 14.04。最后;
rbenv rehash
如果您已经安装了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
在这里加入我自己的口味。我使用通过Homebrew安装的rbenv,得到了四个这样的“忽略…”没有构建扩展”的消息。具体地说:
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
我在这个帖子里尝试了很多东西,但都不走运。最后在我的例子中,我做到了:
酿造卸载rbenv
Rm -rf ~/.rbenv
编译安装rbenv
在这一点上,我仍然得到错误,但现在我只有一个Ruby版本的竞争:
$ rbenv versions
* system (set by /Users/will/.rbenv/version)
在这一点上,我尝试了sudo gem质朴——但被拒绝对系统Gems目录的权限。
所以我仔细检查了每一颗宝石,就像
Sudo gem primitive bcrypt -version 3.1.12 (etc)
最后,错误消失了。
运行Mac OS Catalina, brew和rbenv…
今天遇到了这个问题,并且看过了这里所有的答案,我最终发现了这个错误的另一个原因:
忽略nokogiri 1.10.7,因为它的扩展没有被构建。试试:gem primitive nokogiri——1.10.7版本
当然,宝石原始没有工作。
我的问题是硬编码的GEM_HOME和GEM_PATH环境变量覆盖了rbenv。
因此,检查您没有在~/.zshrc中设置GEM_PATH和GEM_HOME
这个解决方案对我的RubyMine IntelliJ很有效
我有两个不同的终端正在使用RVM和ruby<版本>。
解决方案:
我不得不将其切换到RVM版本,以便在首选项>语言和框架>Ruby SDK中消除错误
错误:
Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0 rubymine
Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0
这里的大多数评论都是正确的。这个问题经常发生在Ruby版本升级之后。我回顾了gem命令代码,下面是它的要点。
扩展被编译到gems主目录的gems/gem/ext子目录中。例如,在我的Cygwin安装上(在Raspbian下也类似),BigDecimal扩展被编译成
/usr/share/gems/gems/bigdecimal-1.3.5 / ext / bigdecimal / bigdecimal.so。
然而,这并不是执行扩展时引用的地方——而是从那里引用的
/usr/lib/gems/ruby/ver/gem.同样使用BigDecimal,从执行时加载扩展文件
/usr/lib/gems/ruby/2.3.0/bigdecimal-1.3.5 / bigdecimal.so
这里是关键:在同一个目录中,有一个空的标记文件
/usr/lib/gems/ruby/2.3.0/bigdecimal-1.3.5 / gem.build_complete
当gem命令启动时,它会引用gems/specifications目录以获得已安装gems的列表以及关于它们是否具有扩展的信息。如果一个gem确实有扩展,gem(在其他健全性检查中)会查找标记文件gem.build_complete。如果没有找到,它会发出错误消息“忽略gem,因为它的扩展没有构建”。
任何重新构建所有扩展的操作都将修复这个问题。或者,完全hack,如果你在匆忙和勇敢,你可以尝试复制/usr/lib/gems/ruby/oldver的所有内容到/usr/lib/gems/ruby/newver。
cd /usr/lib/gems/ruby
cp -nv 2.3.0/* 2.6