Snow Leopard + Ruby 1.9.1 + MySQL Gem =巨大的问题 [英] Snow Leopard + Ruby 1.9.1 + MySQL Gem = Huge problems

查看:63
本文介绍了Snow Leopard + Ruby 1.9.1 + MySQL Gem =巨大的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了大约3-4个小时,试图在snow leopard上安装ruby 1.9.1的mysql gem。在我升级到雪豹之前,在1.9.1上使用的MySQL gem工作得很好。我从我的机器上卸载MySQL服务器和宝石。然后我下载并安装:mysql-5.1.37-osx10.5-x86_64.dmg。我已经能够断言,我安装的这个新版本是作为一个64位应用程序运行的。



我卸载了mysql gem。当我试图用这个命令安装gem时:

 
env ARCHFLAGS = - arch x86_64gem install mysql --verbose - - -with-mysql-config = / usr / local / mysql / bin / mysql_config

我得到这个错误:

 
GET 304未修改:http://gems.rubyforge.org/latest_specs.4.8.gz
GET 200 OK:http:// gems。 github.com/latest_specs.4.8.gz
安装gem mysql-2.8.1
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING.ja
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8。 1 / History.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Manifest.txt
/Users/sean/.gem/ruby/1.9。 1 / gems / mysql-2.8.1 / README.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Rakefile
/ Users / sean /。 gem / ruby​​ / 1.9.1 / gems / mysql-2.8.1 / ext / mysql_api / extconf.rb
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext /mysql_api/mysql.c
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README.ht ml
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README_ja.html
/Users/sean/.gem/ruby/1.9.1/ gems / mysql-2.8.1 / extra / tommy.css
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/lib/mysql.rb
/ Users /sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/gem.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1 /tasks/native.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/vendor_mysql.rake
/Users/sean/.gem/ruby /1.9.1/gems/mysql-2.8.1/test/test_mysql.rb
构建本机扩展。这可能需要一段时间...
错误:安装mysql时出错:
错误:无法构建gem本机扩展。

/Users/sean/.rvm/ruby-1.9.1-p243/bin/ruby extconf.rb --with-mysql-config = / usr / local / mysql / bin / mysql_config
检查mysql_ssl_set()...是
检查rb_str_set_len()...没有
检查rb_thread_start_timer()...没有
检查mysql.h ...是
创建Makefile

make
gcc -I。 -I / Users / sean / .rvm / ruby​​-1.9.1-p243 / include / ruby​​-1.9.1 / i386-darwin9.8.0 -I / Users / sean / .rvm / ruby​​-1.9.1-p243 / include /ruby-1.9.1/ruby/backward -I / Users / sean / .rvm / ruby​​-1.9.1-p243 / include / ruby​​-1.9.1 -I。 -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I在/ usr /本地/ mysql /下包括-g -Os -arch x86_64的-fno-共同-D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno常见-02 -g -Wall - Wno-括号-fno-common -pipe -fno-common -o mysql.o -c mysql.c
从/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby包含的文件中-1.9.1 / ruby​​.h:32,
from mysql.c:5:
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ ruby / ruby​​.h:函数'INT2NUM':
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464:warning:由于数据类型范围有限,比较始终为真
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464:warning:comparison由于数据类型的范围有限,所以始终为真
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:在函数'UINT2NUM'中:
/Users/sean/.rvm/ruby-1.9。 1-p243 / include / ruby​​-1.9.1 / ruby​​ / ruby​​.h:472:警告:由于数据类型范围有限,比较总是为真
mysql.c:函数'escape_string':
mysql.c:290:错误:作为赋值左操作数所需的左值
mysql.c:290:错误:作为赋值左操作数需要左值
mysql.c:函数'real_escape_string':
mysql.c:434:错误:赋值左操作数需要左值
mysql.c:434:错误:赋值左操作数需要左值
make:*** [mysql.o ]错误1


Gem文件将保留安装在/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1中进行检查。
结果记录到/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

我已经尝试了以下所有链接中的所有内容。


  1. http://void-design.net/2009/08/05 / ruby​​-191-mysql-and-a-snow-leopard /

  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard -10a380 /

  3. Rails,MySQL和雪豹

有什么想法?

解决方案

Sean,我发现你正在rvm下运行Ruby 1.9.1。在同样的设置下(Snow Leopard,rvm,MySQL 64位软件包),我遇到了同样的问题。所有的替代宝石(mysqlplus,kwatch-mysql-ruby等)都会因相同的错误而失败。



我会怀疑MySQL的安装,但是一切都像在系统默认的Ruby下的冠军一样。所以我不知道rvm是不是猴子扳手。



编辑: 我想通了。在升级到Snow Leopard之前,我安装了rvm,因此需要重新编译我的Ruby 1.9.1安装。为了好的措施,我重新安装了rvm。



以下是我所做的:

  sudo gem uninstall rvm 
rm -rf〜/ .gem
sudo gem install rvm
rvm-install
rvm install 1.9.1
rvm 1.9。 1
env ARCHFLAGS = - arch x86_64gem install mysql

(注意:您不能在rvm下安装gem时使用sudo,因为rvm通过修改$ PATH来工作。)



(注意:我将/ usr / local / mysql / bin添加到我的$ PATH中在安装mysql gem时,我不必指定任何可怕的命令行参数。)



mysql gem安装时没有问题。

I tried for about 3-4 hours trying to get the mysql gem to install for ruby 1.9.1 on snow leopard. The mysql gem used to work just fine on 1.9.1 before I upgraded to snow leopard. I uninstalled MySQL server and gem from my machine. I then downloaded and installed: mysql-5.1.37-osx10.5-x86_64.dmg. I have been able to assert that this new version I installed is running as a 64bit application.

I uninstalled the mysql gem. When I tried to install the gem with this command:

env ARCHFLAGS="-arch x86_64" gem install mysql --verbose -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

I got this error:

GET 304 Not Modified: http://gems.rubyforge.org/latest_specs.4.8.gz
GET 200 OK: http://gems.github.com/latest_specs.4.8.gz
Installing gem mysql-2.8.1
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING.ja
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/History.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Manifest.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/README.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Rakefile
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/extconf.rb
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/mysql.c
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README.html
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README_ja.html
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/tommy.css
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/lib/mysql.rb
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/gem.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/native.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/vendor_mysql.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/test/test_mysql.rb
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.

/Users/sean/.rvm/ruby-1.9.1-p243/bin/ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config
checking for mysql_ssl_set()... yes
checking for rb_str_set_len()... no
checking for rb_thread_start_timer()... no
checking for mysql.h... yes
creating Makefile

make
gcc -I. -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/backward -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/mysql/include  -g -Os -arch x86_64 -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common  -O2 -g -Wall -Wno-parentheses  -fno-common -pipe -fno-common  -o mysql.o -c mysql.c
In file included from /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby.h:32,
                 from mysql.c:5:
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'INT2NUM':
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'UINT2NUM':
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:472: warning: comparison is always true due to limited range of data type
mysql.c: In function 'escape_string':
mysql.c:290: error: lvalue required as left operand of assignment
mysql.c:290: error: lvalue required as left operand of assignment
mysql.c: In function 'real_escape_string':
mysql.c:434: error: lvalue required as left operand of assignment
mysql.c:434: error: lvalue required as left operand of assignment
make: *** [mysql.o] Error 1


Gem files will remain installed in /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1 for inspection.
Results logged to /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

I have tried everything I have read from the following links.

  1. http://void-design.net/2009/08/05/ruby-191-mysql-and-a-snow-leopard/
  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/
  3. Rails, MySQL and Snow Leopard

Any ideas?

解决方案

Sean, I see that you are running Ruby 1.9.1 under rvm. I'm having the same problem under the same setup (Snow Leopard, rvm, MySQL 64-bit package). All of the alternate gems (mysqlplus, kwatch-mysql-ruby, etc) fail with the same error.

I would suspect the MySQL install, but everything works like a champ under the system default Ruby. So I wonder if rvm isn't the monkey wrench somehow.

EDIT: I figured it out. I installed rvm before upgrading to Snow Leopard, so my Ruby 1.9.1 install needed to be recompiled. For good measure, I reinstalled rvm from scratch.

Here's what I did:

sudo gem uninstall rvm
rm -rf ~/.gem
sudo gem install rvm
rvm-install
rvm install 1.9.1
rvm 1.9.1
env ARCHFLAGS="-arch x86_64" gem install mysql

(NOTE: You cannot use sudo when installing gems under rvm, because rvm works by modifying $PATH.)

(NOTE: I added /usr/local/mysql/bin to my $PATH so I didn't have to specify any of those awful command-line args when installing the mysql gem.)

The mysql gem installed without a hitch.

这篇关于Snow Leopard + Ruby 1.9.1 + MySQL Gem =巨大的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆