我正在尝试在运行 OS X 10.9 (Mavericks)的新macbook pro上首次安装rails,我遇到了安装 therubyracer 的问题。当我做“捆绑安装”时,我收到此错误:
安装therubyracer(0.10.2)时发生错误,而Bundler则不能 继续。 在捆绑之前确保
gem install therubyracer -v '0.10.2'
成功。
然后我按照他们的指示运行
gem install therubyracer -v '0.10.2'
然后我收到此错误消息:
构建原生扩展。这可能需要一段时间...... 错误:安装therubyracer时出错: 错误:无法构建gem原生扩展。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
在-lobjc中检查main()...是的 创建Makefile
制作“DESTDIR =” 编译rr.cpp clang:warning:编译过程中未使用的参数:' - undynamic' rr.cpp:48:1:警告:控制到达非空函数的末尾[-Wreturn-type] } ^ 产生1个警告。 编译v8.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_array.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_callbacks.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_context.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_date.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_debug.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_exception.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_exception.cpp:10:16:警告:未使用的变量'stack'[-Wunused-variable] static void * stack [20]; ^ 产生1个警告。 编译v8_external.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_external.cpp:10:9:警告:未使用的变量'references'[-Wunused-variable] VALUE引用; ^ 产生1个警告。 编译v8_function.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_handle.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_locker.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_locker.cpp:45:5:警告:控制到达非空函数的末尾[-Wreturn-type] } ^ v8_locker.cpp:85:5:警告:控制到达非空函数的末尾[-Wreturn-type] } ^ 产生了2个警告。 编译v8_message.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_object.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_object.cpp:77:19:警告:未使用的变量'proto'[-Wunused-variable] 处理原型(rr_rb2v8(原型)); ^ 产生1个警告。 编译v8_script.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_string.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_template.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_try_catch.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_try_catch.cpp:15:14:警告:将类型'v8 :: TryCatch *'的指针从常量布尔表达式初始化为null [-Wbool-conversion] 返回false; ^ ~~~~ 产生1个警告。 编译v8_v8.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 编译v8_value.cpp clang:warning:编译过程中未使用的参数:' - undynamic' v8_value.cpp:100:9:警告:未使用的函数'ToInt32'[-Wunused-function] VALUE ToInt32(VALUE self){ ^ 产生1个警告。 编译v8_weakref.cpp clang:warning:编译过程中未使用的参数:' - undynamic' 链接共享对象v8.bundle clang:错误:没有这样的文件或目录:'/ Library/Ruby/Gems/2.0.0/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a' make: * [v8.bundle]错误1
Gem文件将保留在/Library/Ruby/Gems/2.0.0/gems/therubyracer-0.10.2中以供检查。 结果记录到/Library/Ruby/Gems/2.0.0/gems/therubyracer-0.10.2/ext/v8/gem_make.out
我不确定这意味着什么,或者如何解决这个问题。
我真正想做的就是运行我的rails项目。
任何人都知道这是什么问题?
答案 0 :(得分:11)
这样做:
$ gem uninstall libv8 # ignore if this fails
$ gem install libv8 -v 3.16.14.3 -- --with-system-v8 # 2013-08 x86_64-darwin-12 (32.6 MB)
同时修改Gemfile
并强制使用较新版本的therubyracer
gem "therubyracer", "~> 0.12"
然后再试一次:
$ bundle update
答案 1 :(得分:3)
标准是您不使用系统ruby,并且有理由说明原因。虽然您可能能够修复系统ruby上的这个特定问题,但是使用像RVM或rbenv这样的ruby-manager并与homebrew一起使用,您将能够快速解决任何依赖性问题。
这可能是一个漫长的过程,因为您首先需要从Xcode安装Xcode和其他命令行工具。完成之后,你需要得到红宝石经理。
我非常喜欢来自thinkbot的这个shell脚本,它使用rbenv - https://github.com/thoughtbot/laptop
然后运行思想机器人脚本。一旦你开始它将需要一段时间。所以去煮一些咖啡吧。这将安装自制程序,rbenv并设置所有内容。
重新启动终端后,它应该加载新的bash_profile zsh。运行'rbenv --help'列出命令。例如,您可以使用命令“rbenv versions”查看计算机上可用的内容。或者要安装'rbenv install 2.0.0-p353'然后在全局设置ruby版本,您可以使用'rbenv global 2.0.0-p353或您正在使用的任何当前版本。
并且您希望保持最新的补丁,其中一些是安全补丁。这是经理的另一个原因。因此,您可以轻松地将您的系统更新到最新和最好!随着时间的推移,您的新项目将获得更新的版本,您的旧项目将需要旧版本。不要与补丁混淆,例如从ruby 1.9迁移到ruby 2.0。这个变化非常重要,因为有些项目从使用rails 3的ruby 1.9升级到ruby 2.0和rails 4是不切实际的。所以当升级发生时,我必须切换我的ruby版本来运行应用程序并进行更改。所以就这么做吧。远离系统红宝石。
答案 2 :(得分:2)
这在MAC中适用于我
$ gem uninstall libv8
$ gem install therubyracer
然后尝试
bundle install
P.S。发布答案,以便将来帮助其他人。
答案 3 :(得分:1)
像魅力一样工作!谢谢https://stackoverflow.com/a/58842254/642616
$ brew install v8@3.15
$ bundle config build.libv8 --with-system-v8
$ bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15)
$ bundle install
@ 3.15可以用任何其他版本替换。
答案 4 :(得分:0)
今天,我失去了很多时间来解决这个问题
因为libv8是therubyracer使用的V8引擎的接口,所以即使已经安装了V8,也可能需要使用libv8。
来自gihub
这对我有什么帮助
如果您使用bundler
bundle config build.libv8 --with-system-v8
如果您使用rubygems
gem install libv8 -- --with-system-v8
和this
答案 5 :(得分:0)
这样做可以解决我的问题:
Gemfile
gem 'therubyracer'
并在
Terminal
gem uninstall libv8 [mention version if required]
bundle install
答案 6 :(得分:0)
当我从OSX Mountain Lion升级到OSX Mavericks时,我遇到了同样的问题。
从ruby-1.8.7-p354升级到ruby-1.8.7-375让我获得libv8和therubyracer gem
假设rbenv:
rbenv install 1.8.7-p375
rbenv rehash
rbenv global 1.8.7-p375
bundle install
答案 7 :(得分:0)
从OS X Mountain Lion升级到OS X Mavericks时,我遇到了同样的问题。
我遵循了以下步骤:
brew install v8
gem install libv8 -v '3.16.14.3' -- --with-system-v8
gem install therubyracer -v '0.12.3' --source 'https://rubygems.org/'
可能会产生错误,请放心bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15)
答案 8 :(得分:0)
我更改了我的 ruby 版本,它在 macos big sur 中工作。
rvm list rubies
rvm use 2.3.7
rvm install 2.3.7