无法在Mavericks上安装带有本机库的宝石(a.k.a. Travis call home)

时间:2014-04-27 17:08:19

标签: ruby-on-rails ruby rubygems gem

我无法在我的机器上安装许多ruby宝石,它们都会因编译本机部分而失败,我无法使任何解决方案起作用。

我期待着名的红宝石生产力,但经过一整天与这些安装问题的斗争后,我真的需要一些帮助来使数据库宝石工作,所以我可以开始使用RoR。

它首先发生在mysql gem上,但也发生在sqlite3上,甚至尝试重新安装ruby-debug gem。

OS:Mac OS X 10.9.2(Mavericks)。

ruby​​ -v =>

  

ruby​​ 2.1.1p76(2014-02-24修订版45161)[x86_64-darwin12.0]

rvm list =>

> rvm rubies
> =* ruby-2.1.1 [ x86_64 ]
> # => - current
> # =* - current && default
> #  * - default

rvm -v =>

  Wayne E. Seguin,rvm 1.25.24(master),   Michal Papis [https://rvm.io/]

gem -v =>

  

2.2.2

我有一个最新的Xcode 5.1 xcode-select -v => xcode-select版本2333。

我再次安装了命令行工具: xcode-select --install

然后我尝试了其他响应中的一些XCode命令,包括: sudo xcode-select -s / Library / Developer / CommandLineTools /

我尝试了多个与gcc相关的答案,并使用符号链接将gcc4.2与gcc相关联。

/usr/bin/gcc-4.2 -v =>

  

使用内置规格。目标:i686-apple-darwin11配置:   /Volumes/Media/Builds/gcc-5666.3/build/obj/src/configure   --disable-checking --prefix = / usr --mandir = / share / man --enable-languages = c,objc,c ++,obj-c ++,fortran --program-transform-name = / ^ [cg] [ ^ .-] * $ / s / $ / - 4.2 / --with-slibdir = / usr / lib --build = i686-apple-darwin11 --program-prefix = i686-apple-darwin11- --host = x86_64 -apple-darwin11 --target = i686-apple-darwin11 --with-gxx-include-dir = / include / c ++ / 4.2.1线程模型:posix gcc版本4.2.1(Apple Inc. build 5666)(第3点) )

示例失败就是这个:

gem install mysql2

  

构建原生扩展。这可能需要一段时间...错误:错误   安装mysql2:错误:无法构建gem原生扩展。

/Users/andrew/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb checking for ruby/thread.h... yes checking for rb_thread_call_without_gvl() in
     

ruby​​ / thread.h ...是检查rb_thread_blocking_region()...是的   检查rb_wait_for_single_fd()...是检查   rb_hash_dup()...是检查rb_intern3()...是的   -----在/ usr / local / mysql / bin / mysql_config中使用mysql_config   -----检查mysql.h ...是检查errmsg.h ...是检查mysqld_error.h ...是的   -----将rpath设置为/ usr / local / mysql / lib   -----创建Makefile

     

使“DESTDIR =”清洁

     

make“DESTDIR =”编译client.c编译infile.c编译   mysql2_ext.c编译result.c链接共享对象   mysql2 / mysql2.bundle ld:警告:找不到选项的目录   '-L /用户/特拉维斯/ .SM / PKG /活性/ lib中'

     

make“DESTDIR =”install ./install -m 0755 mysql2.bundle   ./.gem.20140427-52262-1rr56ob/mysql2 make:./ install:没有这样的文件或者   目录make: * [install-so]错误1

     

make install failed,退出代码2

     

Gem文件将保持安装状态   /Users/andrew/.rvm/gems/ruby-2.1.1/gems/mysql2-0.3.15进行检查。   记录结果   /Users/andrew/.rvm/gems/ruby-2.1.1/extensions/x86_64-darwin-12/2.1.0-static/mysql2-0.3.15/gem_make.out

任何想法?

我看到的一篇文章暗示了混合使用Ruby,Gems等64位和32位组件的问题。但是我没有看到修复,或者我应该如何重新安装仅32位组件。< / p>

P.S。看起来某个“Travis”应该尽量避免将对自己目录的引用放入代码中:

  

链接共享对象sqlite3 / sqlite3_native.bundle ld:警告:   找不到选项'-L / Users / travis / .sm / pkg / active / lib'

的目录

更新1

echo $PATH
/Users/andrew/.rvm/gems/ruby-2.1.1/bin:/Users/andrew/.rvm/gems/ruby-2.1.1@global/bin:/Users/andrew/.rvm/rubies/ruby-2.1.1/bin:/Users/andrew/.rvm/bin:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:.:/usr/lib/tuenti_tools/bin:/Users/andrew/bin:/Users/andrew/apache-maven-3.0.4/bin:/Users/andrew/android-sdk-macosx/platform-tools:/Users/andrew/android-sdk-macosx/tools:/Users/andrew/android-sdk-macosx/build_tools/17.0.0/:/Users/andrew/neo4j-community-2.0.0-M06/bin:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:.:/usr/lib/tuenti_tools/bin:/Users/andrew/bin:/Users/andrew/apache-maven-3.0.4/bin:/Users/andrew/android-sdk-macosx/platform-tools:/Users/andrew/android-sdk-macosx/tools:/Users/andrew/android-sdk-macosx/build_tools/17.0.0/:/Users/andrew/neo4j-community-2.0.0-M06/bin:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/mysql/bin

1 个答案:

答案 0 :(得分:0)

通常,当依赖关系和/或路径不合时,您会从exten.conf收到错误。首先确保您的路径正常运行,并且命令行中的ruby来自rvm:

# this should output the path to the ruby in the .rvm dir
which ruby

在尝试其他任何事情之前,请确保您的自制软件是最新且健康的:

# cd to the homebrew dir, typically here:
cd /usr/local/Cellar
git fetch origin
git reset --hard origin/master
brew update

在开始安装之前,请确保您的PATH正确加载。首先,您要先加载自制垃圾箱。在您的.bash_profile.bashrc文件中,您可能有也可能没有PATH的设置,但请确保您有一行将订单修改为以下内容:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:$PATH

您只是想确保首先加载/usr/local/bin。还要确保在.bash_profile.bashrc中正确加载RVM功能:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

确保所有brew依赖关系都已对齐,并修复它可能会说的任何内容:

brew missing

您还需要检查您的啤酒的健康状况,并修复它建议的任何内容(我知道您已经完成了这项工作,但在刷新本地仓库并清理之后可能会出现新问题上一个命令):

brew doctor

不确定你是如何修补的#34; gcc问题,但自制软件非常适合:

brew install apple-gcc42

毕竟,我可以放心,这不是您当地自制设置的问题。我建议在任何地方使用自制软件进行任何本机扩展(包括mysql / postgres / etc)。如果您已经这样做了,请卸载brew并重新安装:

brew uninstall mysql
brew install mysql

如果您仍然遇到错误,请尝试清理rvm:

rvm cleanup
rvm repair

然后卸载/安装失败的gem:

gem uninstall mysql2
gem install mysql2
祝你好运!