OS X 10.9上的Ruby由于未构建扩展而忽略了gem


36

每隔几天,就会knife在OS X上的Ruby CLI(尤其是使用Chef 的实用程序)中执行各种操作时发生这种情况(无法在其他环境中复制; Linux,FreeBSD等):

Ignoring bcrypt-3.1.7 because its extensions are not built.  Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built.  Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built.  Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built.  Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built.  Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built.  Try: gem pristine sqlite3-1.3.9

尽管这是一个简单的修复程序,但它一直在发生。有人遇到过吗?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]

Answers:


5

我最近切换到来自rvmchruby就跑gem update --system,这就是当问题发生开始为我。此后,每当我运行捆绑软件时,都会遭到同样的警告。仍然不确定是什么引起了问题。

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

不知道是什么原因解决了,但是我做了两件事,警告消失了:

gem uninstall bundler
gem install bundler

gem install curb

奇怪的是,当我从OS X捆绑的Ruby切换到RVM时,它对我来说就开始了。通常,它会在几天后自动清除,或者如果我打开一个新会话(在中午发生,这很麻烦)。通常,我必须在给定时间重新安装我正在使用的任何设备,这通常是刀。
tony_perkis666

我的机器上发生了几十个宝石。我认为他们只需要重建
lfender6445 2014年

对于我自己,我必须卸载发出警告的每颗宝石,然后用bundle install
Noah Passalacqua '16

“我被宰了”-哇。
B

不管我尝试什么You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory,这些问题都是自己开始的,我什至不知道怎么用红宝石。但是我收到关于clocale-0.0.3每次启动新Shell时都没有构建的扩展的错误
Vadorequest

62

就我而言,安装后我开始看到此错误 rvm

我用以下方法解决了这个问题: gem pristine --all


什么有用的命令
lfender6445

2
这个工作......但我不知道为什么
Hubro

1
卸载捆绑程序并安装不起作用。但是,这一工作!谢谢!
Srikanth Jeeva

3
这应该是公认的答案。
ILikeTurtles '16

19

如果gem是针对当前运行的其他libruby编译的,则会出现此问题。例如,如果一个人使用chruby使用位于其主目录中的ruby并将宝石安装到〜/ .gem / ruby​​,但是运行了一个调用/ usr / bin / ruby​​的脚本,该脚本将重复使用在那里安装的宝石。在这种情况下gem pristine --all将无济于事,因为这些宝石只能与一个红宝石版本链接。


啊,谢谢你!运行“ rails s”时出现该错误。我切换到“ bundle exec rails s”,问题消失了。
格里2015年

1
这应该是公认的答案
Dominik Schreiber

1
这个答案是正确的。如果问题出在保存宝石的Rails仓库中vendor/bundle,请使用删除它们,rm -rf vendor/bundle然后使用重新安装bundle install
vmarquet

谢谢。我试着gem pristine --all直到脸色发青,现在我知道为什么它不起作用了……
GDP2 '18


2

这在MacOs Sierra上为我工作:

xcode-select --install
gem install nokogiri

在运行上述命令之前,我已经安装了整个xcode,但是无论如何我还是必须这样做,也许是因为第一个脚本更新了一些内部库/依赖项。


这就是我在寻找MacOS Sierra解决方案的方法。谢谢
Sakares

1

确保为正确版本的红宝石运行“ gem pristine --all”。如果正在调用/ usr / bin / ruby​​ ...,请使用“ / usr / bin / gem pristine --all”。如果您使用的是rvm,并且安装了10个版本的ruby,则这种情况并不明显。

这解决了我一天的问题,然后又回来了。

似乎更永久的解决方案是执行“ rvm reset”,以使默认的ruby为已安装的OSX版本/ usr / bin / ruby​​和/ usr / bin / gem。如果要为项目使用较新版本的ruby,请在项目根目录中使用.ruby-version和.ruby-gemset来显式设置要使用的ruby版本。不理想...但是它应该使此错误消失。



0

我对Rails非常陌生,因此这可能是完全错误的建议,但是由于其他解决方案都对我无效,因此我认为我会与我分享。

Mic92和Gerry使我走上了正确的道路:我使用rails s它会导致错误,因为它运行的Rails版本可能与项目版本不同。

我尝试与进行连接bin/rails server,但遇到了另一个错误(缺少宝石),所以我跑了bundle install

此时,我得到了第三个错误(“不兼容的库版本”),该错误已spring stop解决。

然后我又跑rails generate controller了,春天重新开始了,一切正常(我哭了一点)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.