gpt4 book ai didi

ruby-on-rails - 无法在 Mavericks 上安装带有 native 库的 gems(又名 Travis call home)

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:30 24 4
gpt4 key购买 nike

我无法在我的机器上安装许多 ruby​​ gem,它们都因与编译 native 部分相关的问题而失败,而且我无法获得任何解决方案。

我很期待著名的 ruby​​ 生产力,但在与这些安装问题斗争了一整天之后,我真的需要一些帮助来让数据库 gem 正常工作,这样我才能开始使用 RoR。

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

操作系统:Mac OS X 10.9.2 (Mavericks)。

ruby -v =>

ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

rvm 列表 =>

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

rvm -v =>

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

gem -v =>

2.2.2

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

我已经使用以下命令再次安装了命令行工具:xcode-select --install

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

我尝试了多个与 gcc 相关的答案以及使用符号链接(symbolic link)将 gcc4.2 链接到 gcc。

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

Using built-in specs. Target: i686-apple-darwin11 Configured with: /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 Thread model: posix gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)

一个失败的例子是:

gem 安装 mysql2

Building native extensions. This could take a while... ERROR: Error installing mysql2: ERROR: Failed to build gem native extension.

/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... yes checking for rb_thread_blocking_region()... yes checking for rb_wait_for_single_fd()... yes checking for rb_hash_dup()... yes checking for rb_intern3()... yes ----- Using mysql_config at /usr/local/mysql/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for mysqld_error.h... yes ----- Setting rpath to /usr/local/mysql/lib ----- creating Makefile

make "DESTDIR=" clean

make "DESTDIR=" compiling client.c compiling infile.c compiling mysql2_ext.c compiling result.c linking shared-object mysql2/mysql2.bundle ld: warning: directory not found for option '-L/Users/travis/.sm/pkg/active/lib'

make "DESTDIR=" install ./install -m 0755 mysql2.bundle ./.gem.20140427-52262-1rr56ob/mysql2 make: ./install: No such file or directory make: * [install-so] Error 1

make install failed, exit code 2

Gem files will remain installed in /Users/andrew/.rvm/gems/ruby-2.1.1/gems/mysql2-0.3.15 for inspection. Results logged to /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 位的组件。

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

linking shared-object sqlite3/sqlite3_native.bundle ld: warning: directory not found for option '-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

最佳答案

通常,当依赖项和/或路径不正常时,您会从 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

您还需要检查您的 brews 的健康状况,并修复它建议的任何内容(我知道您已经这样做了,但是在刷新您的本地存储库并从上一个命令中清理后可能会出现新问题):

brew doctor

不确定您是如何“修补”gcc 问题的,但是自制软件非常适合:

brew install apple-gcc42

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

brew uninstall mysql
brew install mysql

如果仍然出现错误,请尝试清理 rvm:

rvm cleanup
rvm repair

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

gem uninstall mysql2
gem install mysql2

祝你好运!

关于ruby-on-rails - 无法在 Mavericks 上安装带有 native 库的 gems(又名 Travis call home),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23326360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com