忽略GEM,因为它的扩展未构建

Phi*_*man 109 ruby rubygems chruby

在我的工作和家用计算机上,我最近使用了将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
Run Code Online (Sandbox Code Playgroud)

在我的工作,计算机上,列表要长得多,但很容易解决.当我尝试建议时gem pristine GEM,它告诉我它找不到宝石,所以我跑了gem install GEM,这就解决了.

在家里,没有任何工作.

我尝试过的事情,从常识和其他各种Stack问题:

  • gem pristine GEM
  • gem pristine --all
  • 卸载并重新安装gem
  • gem update
  • gem update --system
  • bundle update
  • 卸载并重新安装 bundler
  • 卸载并重新安装rails(虽然,这不是Rails特定的问题.)
  • 删除 ~/.bundle/
  • 打开XCode并让它安装一些扩展(它确实需要这样做,但它没有修复任何东西.)
  • 运行brew doctor和解决所有的小问题,然后brew updatebrew upgrade
  • gem install curb (我无法想象这个宝石与这个问题有什么关系,但是两个不同的人将它列为他们修复同一警告的最后一步.)

sev*_*cat 149

我今天遇到了这个问题 - 对于甚至没有安装的宝石都会收到这样的警告!

......好吧,事实证明宝石已经安装了 - 不同于我用chruby设置的红宝石(2.2.3 vs 2.3.1).

切换到所有不同的红宝石并gem pristine --all在所有红宝石上运行解决了这个问题.

  • 如果 `gem pristine --all` 有权限问题,你应该检查 `which ruby​​`。`brew link --overwrite ruby​​ && source ~/.bash_profile` 并运行 `gem pristine --all` 可能会有所帮助 (4认同)
  • 这对我来说只对当前的 ruby​​ 有效(我使用 rvm)。也许这可以防止某人做太多清理工作;) (3认同)
  • 这些解决方案都不适合我,我也有同样的问题。 (2认同)

ope*_*pes 16

我遇到了这个问题,并遵循了上述所有相同的命令,甚至可以删除我以前安装的所有Ruby版本.但是,错误仍然存​​在.

事实证明,对于各种(以前未安装的)版本,有一些剩余的宝石~/.gem/ruby/.删除我不再使用的文件夹后,错误消失了.

  • 这为我做到了。rm -rf。我以前尝试过原始安装我所有的 gem 无济于事。 (3认同)

Mar*_*uch 15

就我而言,警告本身已经提出了解决方案,所以我只是一一运行它们。

Ignoring bigdecimal-2.0.0 because its extensions are not built. Try: gem pristine bigdecimal --version 2.0.0
Ignoring date-3.0.1 because its extensions are not built. Try: gem pristine date --version 3.0.1
Ignoring dbm-1.1.0 because its extensions are not built. Try: gem pristine dbm --version 1.1.0
Ignoring etc-1.1.0 because its extensions are not built. Try: gem pristine etc --version 1.1.0
Run Code Online (Sandbox Code Playgroud)

这里有一个例子:

gem pristine bigdecimal --version 2.0.0
Run Code Online (Sandbox Code Playgroud)

所以运行每一行的命令解决了我的问题。


Seb*_*Kim 11

我做了上面提到的一切,包括

  • xcode-select --install
  • 重新安装红宝石
  • 重新安装所有宝石
  • 宝石原始 - 全部

但问题对我来说是一样的。我只是作为最后的希望重新启动了我的 Mac,警告消息消失了。

很奇怪,但如果有人在 StackOverflow 上尝试了所有内容后仍遇到此问题,请尝试重新启动您的机器。

  • 感谢分享重启技巧。我在 Mac 上遇到了同样的问题,只需启动一个新的终端会话即可解决。 (7认同)

Sim*_*lai 9

我今天也遇到了这个问题而且很沮丧,因为我无法输入,因为我的整个编辑器都闪烁着红色的错误消息.

我不完全确定究竟是什么导致了它,但我相信这是因为我们安装了多个ruby版本或多个ruby版本管理 ,它们会相互覆盖,否则会破坏你的宝石路径.

gem当你有rbenv和rvm时,该命令也会被覆盖.

通过键入查看您已安装的那些;

which rvm
which rbenv
which chruby
Run Code Online (Sandbox Code Playgroud)

如果安装了其中一个,它将返回一个路径.然后删除它们,确保完全清除所有目录并从干净安装开始.


去掉

这是我为rvm做的事情 ;

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc
Run Code Online (Sandbox Code Playgroud)

这是我为rbenv所做的

首先安装https://github.com/bernsie/rbenv-clean,然后

rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv
Run Code Online (Sandbox Code Playgroud)

重新安装

然后你有一个干净的主目录来工作.我重新介绍了如何在Ubuntu 14.04上安装Ruby 2.1.4的 rbenv .最后;

rbenv rehash
Run Code Online (Sandbox Code Playgroud)


Dav*_*dia 6

运行一开始gem pristine --all并没有帮助,但后来我意识到:我正在运行的脚本从以下行开始:

#!/usr/bin/ruby

在我的 macOS 系统(Catalina,但我认为这无关紧要)上,这指向系统附带的 Ruby,而不是 RVM 安装的那个。运行gem pristine --all正在修复 RVM 安装,但我的脚本正在调用不同版本的 Ruby。

对我来说,修复方法是使用该env命令调用当前 shell 的PATH. 将脚本的第一行更改为此修复了它:

#!/usr/bin/env ruby


wry*_*ere 5

在这里添加我自己的味道。我使用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
Run Code Online (Sandbox Code Playgroud)

我在这个线程中尝试了很多东西,但都没有运气。最后在我的情况下,我做了:

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

此时我仍然收到错误消息,但现在我只有一个 Ruby 版本需要处理:

$ rbenv versions
* system (set by /Users/will/.rbenv/version)
Run Code Online (Sandbox Code Playgroud)

在这一点上,我尝试过sudo gem pristine --all但由于系统 Gems 目录的权限而被拒绝。

所以我经历并在每颗宝石上运行原始,就像

sudo gem pristine bcrypt --version 3.1.12 (等等)

最后错误消失了。