【问题标题】:Ruby - Gem - mysql - Failed to build gem native extensionRuby - Gem - mysql - 无法构建 gem 原生扩展
【发布时间】:2011-05-27 20:54:11
【问题描述】:

两天以来,我遇到了一个我无法解决的问题。我正在尝试在 debian 机器上安装 redmine。当涉及到 gem mysql 的安装时,它失败了。我不知道该怎么办了。我的最后一个例子是你的帮助。

错误

root@host:~# gem1.8 安装mysql 构建原生扩展。这可能需要一段时间... 错误:安装mysql时出错: 错误:无法构建 gem 原生扩展。 /usr/bin/ruby1.8 extconf.rb 检查 mysql_ssl_set()... 否 检查 rb_str_set_len()... 否 检查 rb_thread_start_timer()... 否 检查mysql.h ...不 检查 mysql/mysql.h... 否 *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能缺少 必要的库和/或头文件。查看 mkmf.log 文件了解更多信息 细节。您可能需要配置选项。 提供的配置选项: --with-opt-dir --without-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=/usr/bin/ruby1.8 --with-mysql-config --没有-mysql-config Gem 文件将继续安装在 /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1 以供检查。 结果记录到 /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

我尝试过的


系统

user@host:~# uname -a  
Linux www.example.org 2.6.18-028stab070.4 #1 SMP Tue Aug 17 18:32:47 MSD 2010 x86_64 GNU/Linux
root@s15428277:~# aptitude search '~i (mysql|ruby)|mysql.*dev' i A libdbd-mysql-perl - MySQL 数据库的 Perl5 数据库接口 p libghc6-hsql-mysql-dev - Haskell 的多数据库接口系统 p libgnademysql-dev - GNat Ada 数据库环境 - MySQL 编程接口 p liblua5.1-sql-mysql-dev - lua 语言版本 5.1 的 luasql 开发文件 i libmysql++-dev - mysql C++ 库绑定(开发) i A libmysql++2c2a - mysql C++ 库绑定(运行时) p libmysql-ocaml-dev - MySql 的 OCaml 绑定 v libmysqlclient-dev- i libmysqlclient15-dev - MySQL 数据库开发文件 i A libmysqlclient15off - MySQL 数据库客户端库 i libopenssl-ruby1.8 - Ruby 1.8 的 OpenSSL 接口 i A libreadline-ruby1.8 - Ruby 1.8 的 Readline 接口 i A libruby1.8 - 运行 Ruby 1.8 所需的库 i libsqlite3-ruby1.8 - Ruby 1.8 的 SQLite3 接口 i A mysql-client-5.0 - MySQL 数据库客户端二进制文件 i A mysql-common - MySQL 数据库通用文件 i mysql-server - MySQL 数据库服务器(元数据包取决于最新版本) i mysql-server-5.0 - MySQL 数据库服务器二进制文件 i ruby​​1.8 - 面向对象脚本语言 Ruby 1.8 的解释器 i ruby​​1.8-dev - 用于为 Ruby 1.8 编译扩展模块的头文件 root@host:~# gem1.8 --version 1.3.7 root@host:~# ruby​​1.8 --version ruby 1.8.7 (2008-08-11 补丁级别 72) [x86_64-linux]


文件

mkmf.log

have_func: 检查 mysql_ssl_set()... -------------------- 否 “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))mysql_ssl_set;返回0; } /* 结尾 */ “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { mysql_ssl_set();返回0; } /* 结尾 */ -------------------- have_func: 检查 rb_str_set_len()... -------------------- 否 “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))rb_str_set_len;返回0; } /* 结尾 */ “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { rb_str_set_len();返回0; } /* 结尾 */ -------------------- have_func: 检查 rb_thread_start_timer()... -------------------- 否 “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))rb_thread_start_timer;返回0; } /* 结尾 */ “cc -o conftest -I.-I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr /include/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L /usr/lib/mysql -lmysqlclient -lruby1.8-static -L/usr/lib/mysql -lmysqlclient -lpthread -ldl -lcrypt -lm -lc" 检查的程序是: /* 开始 */ 1: /*顶部*/ 2: int main() { 返回 0; } 3: int t() { rb_thread_start_timer();返回0; } /* 结尾 */ -------------------- have_header: 检查 mysql.h... -------------------- 否 "cc -E -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr/包括/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -o conftest.i" 检查的程序是: /* 开始 */ 1:#包括 /* 结尾 */ -------------------- have_header: 检查 mysql/mysql.h... -------------------- 没有 "cc -E -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api -I/usr/包括/mysql -DBIG_JOINS=1 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -o conftest.i" 检查的程序是: /* 开始 */ 1:#包括 /* 结尾 */ --------------------

【问题讨论】:

  • 更新了 ruby​​ ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
  • 我遇到了同样的问题,对我来说解决方案是安装 gcc。如果错误消息说明了这一点,那就太好了。哦,好吧。

标签: mysql ruby debian gem redmine


【解决方案1】:

看起来您走在正确的轨道上。即使您似乎已经安装了 mysql 库,您也需要确保完全安装了 MySQL 开发头文件及其依赖项,以便编译 MySQL gem。

试试:

sudo apt-get install mysql-dev

然后:

sudo gem 安装 mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

显然,确切的命令取决于 mysql-dev 文件的安装位置。

【讨论】:

  • 你好斯科特。感谢您的快速答复。但我已经为 mysql 安装了开发人员。 (libmysqlclient15-dev)
  • 好的。对不起约翰内斯。嗯,值得一试。
  • 当然,我非常感谢您的每一条评论和提示。并且 gem install mysql 与 mysql 配置也不起作用。
  • 我有另一个想法:也许您的 Ruby 安装太旧或不完整。 2008-08-11 已经两岁了,Ruby/Gems 世界的发展很快。您可以尝试通过 RVM 安装最新的 ruby​​,以使所有内容完全更新。
  • redmine 的要求是ruby1.8 (redmine.org/wiki/redmine/…) 所以我只好留在ruby1.8
【解决方案2】:

我遇到了同样的问题。 我的解决方案是安装 ruby​​-dev。 也许它可以帮助其他人,我看到你已经解决了你的问题。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多