[英]Error when running “bundle install” on mac - therubyracer failing to install
我第一次尝试在运行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:警告:编译期间未使用的参数:'-rdynamic' rr.cpp:48:1:警告:控制到达非void函数[-Wreturn-type]的末尾} ^ 1警告生成。 编译 v8.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_array.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_callbacks.cpp clang:警告:编译期间未使用的参数:'-rdynamic ' 编译 v8_context.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_date.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_debug.cpp clang:警告:编译期间未使用的参数:'- rdynamic' 编译 v8_exception.cpp clang:警告:编译期间未使用的参数:'-rdynamic' v8_exception.cpp:10:16:警告:未使用的变量 'stack' [-Wunused-variable] static void* stack[20]; ^ 1 警告已生成。 编译 v8_external.cpp clang:警告:编译期间未使用的参数:'-rdynamic' v8_external.cpp:10:9:警告:未使用的变量 'references' [-Wunused-variable] VALUE 引用; ^ 1 警告已生成。 编译 v8_function.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_handle.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_locker.cpp clang:警告:编译期间未使用的参数:'-rdynamic ' v8_locker.cpp:45:5:警告:控制到达非空函数[-Wreturn-type]的结尾} ^ v8_locker.cpp:85:5:警告:控制到达非空函数的结尾[-Wreturn-type] ] } ^ 2 个警告生成。 编译 v8_message.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_object.cpp clang:警告:编译期间未使用的参数:'-rdynamic' v8_object.cpp:77:19:警告:未使用的变量 'proto' [ -Wunused-variable] 处理 proto(rr_rb2v8(prototype)); ^ 1 警告已生成。 编译 v8_script.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_string.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_template.cpp clang:警告:编译期间未使用的参数:'-rdynamic ' 编译 v8_try_catch.cpp clang:警告:编译期间未使用的参数:'-rdynamic' v8_try_catch.cpp:15:14:警告:将类型为 'v8::TryCatch *' 的指针从常量布尔表达式初始化为 null [-Wbool -转换]返回假; ^~~~~ 产生了 1 个警告。 编译 v8_v8.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 编译 v8_value.cpp clang:警告:编译期间未使用的参数:'-rdynamic' v8_value.cpp:100:9:警告:未使用的函数 'ToInt32' [ -Wunused-function] VALUE ToInt32(VALUE self) { ^ 1 警告生成。 编译 v8_weakref.cpp clang:警告:编译期间未使用的参数:'-rdynamic' 链接共享对象 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 项目。
有谁知道是什么问题?
这样做:
$ 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
像魅力一样工作! 谢谢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 可以替换为任何其他版本。
标准是您不使用系统红宝石,这是有原因的。 尽管您可能能够在系统 ruby 上解决这个特定问题,但使用 RVM 或 rbenv 等 ruby 管理器并与自制软件一起使用,您将能够快速解决任何依赖性问题。
这可能是一个漫长的过程,因为您首先需要从 Xcode 安装 Xcode 和其他命令行工具。 完成后,您需要获取 ruby-manager。
我真的很喜欢这个来自thoughtbot 的shell 脚本,它使用rbenv - https://github.com/thoughtbot/laptop
然后运行thoughtbot脚本。 一旦你开始,它会需要一段时间。 所以去泡杯咖啡吧。 这将安装自制软件、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 升级到带有 rails 3 的 ruby 2.0 和 rails 4 是不切实际的。所以当升级发生时,我必须切换我的 ruby 版本来运行应用程序并进行更改。 所以就去做吧。 远离系统红宝石。
这在 MAC 中对我有用
$ gem uninstall libv8
$ gem install therubyracer
然后试试
bundle install
PS 发布答案,以便将来可以帮助其他人。
只需这样做就可以解决我的问题:
Gemfile
gem 'therubyracer'
而在
Terminal
gem uninstall libv8 [mention version if required]
bundle install
当我从 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
当我从 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)
我更改了我的 ruby 版本,它在 macos big sur 中工作。
rvm list rubies
rvm use 2.3.7
rvm install 2.3.7
运行rvm install 2.3.7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.