【问题标题】:Gem mysql2 installation error on ruby1.9.3ruby1.9.3上gem mysql2安装报错
【发布时间】:2019-04-12 08:28:20
【问题描述】:

刚刚更新到 macOS Mojave,通过 brew 重新安装了 mysql 并下载了最新的 xcode 9.2 。在尝试为旧的 rails 项目设置开发环境时,捆绑包在安装 mysql2 gem 时崩溃。一开始我以为是因为最新的 mysql2 版本与 ruby​​ 1.9 不兼容所以我尝试了:

gem install mysql2 -v '0.3.17'

我收到了:

/Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb 检查 ruby​​/thread.h... * extconf.rb 失败 * 由于某种原因无法创建 Makefile,可能缺少 必要的库和/或头文件。查看 mkmf.log 文件了解更多信息 细节。您可能需要配置选项。

提供的配置选项: --with-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --没有-make-prog --srcdir=。 --curdir --ruby=/Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:381:in try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:506:intry_cpp' 来自 /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:931:in block in have_header' from /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:790:inblock in checks_for' 来自 /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in block (2 levels) in postpone' from /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:inopen' 来自 /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in block in postpone' from /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:inopen' 来自 /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:280:in postpone' from /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:789:inchecking_for' 来自 /Users/me/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:930:in have_header' from extconf.rb:9:in'

从 /Users/me/.rvm/gems/ruby-1.9.3-p125@mailcatcher/gems/mysql2-0.2.18/ext/mysql2/mkmf.log 复制:

"/usr/bin/gcc-4.2 -o conftest -I/Users/me/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin10.8.0 -I /Users/me/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/me/.rvm/rubies/ruby-1.9.3-p125/include /ruby-1.9.1 -I. -I/Users/me/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-括号 -Wno-long-long -Wno -missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -fno-common -pipe conftest.c -L. -L/Users /me/.rvm/rubies/ruby-1.9.3-p125/lib -L/Users/me/.rvm/usr/lib -L. -L/usr/local/lib -lruby.1.9.1 -lpthread -低密度脂蛋白-lobjc“ 检查的程序是: /* 开始 / 1:#include“ruby.h” 2: 3: int main() {返回 0;} / 结束 */

【问题讨论】:

  • 您是否在安装后打开 XCode 并接受其许可协议?你安装了Command Line Developer Tools吗?
  • @spickermann 你是说x代码?如果是这样,是的,已经这样做了。

标签: ruby mysql2 macos-mojave


【解决方案1】:

听起来您要么缺少 XCode 命令行工具: xcode-select --install

或 mySQL 包: 如果您还没有自制软件: $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 然后安装mysql: brew install mysql

我不记得过去哪个为我解决了这个问题,但我确定它是其中之一。

【讨论】:

  • mysql 已通过自制软件成功安装,但 gem mysql2 仍然返回我上面提到的错误。
  • @HaCos 这可能是因为 Ruby 需要头文件(在开发工具包中找到)来安装 gem。 Homebrew 可以在没有这些头文件的情况下安装 mysql。如果你还没有,绝对应该运行xcode-select install 命令
  • @JayDorsey mysql 已经通过自制软件成功安装。
  • 之后,xcode-select --install,打开Xcode,安装“附加组件”,重启电脑,打开/Library/Developer/CommandLineTools/Packages,就会有一个文件macOS_SDK_headers_for_macOS_10.14.pkg。打开那个。
【解决方案2】:

将我的答案与几乎完全相同的问题交叉链接。我认为可能只是找不到正确的配置路径

sudo gem install mysql2 -- --with-mysql-config=/usr/local/bin/mysql_config

查看答案here

编辑:格式化

【讨论】:

  • 返回:错误:安装mysql2时出错:mysql2需要Ruby版本>=2.0.0。
  • 听起来您要么需要将 gem 降级到支持
  • 我尝试 gem install mysql2 -v '0.3.17' --source 'rubygems.org' 但我收到:构建本机扩展。这可能需要一段时间... 错误:安装 mysql2 时出错:错误:无法构建 gem 原生扩展。 /Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb 检查 ruby​​/thread.h... *** extconf.rb 失败 *** 由于无法创建 Makefile出于某种原因,可能缺少必要的库和/或标头。检查 mkmf.log 文件以获取更多详细信息。您可能需要配置选项。我用 mkmf.log 内容更新了我的初始帖子。
猜你喜欢
  • 2012-12-21
  • 2011-08-12
  • 2014-08-21
  • 2011-09-11
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
相关资源
最近更新 更多