MySQL安装:错误:无法构建gem本机扩展


76

我正在尝试将MySQL安装到最新版本,因为某些安装错误。我运行命令,gem install mysql并且收到以下信息:

构建本机扩展。这可能需要一段时间...错误:安装mysql时出错:错误:无法生成gem本机扩展。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb extconf.rb:4:警告:PATH模式下不安全的世界可写目录/ usr / bin,模式040777 extconf.rb:4:警告:PATH模式040777 extconf.rb中不安全的世界可写目录/ usr / bin:7:警告:PATH模式040777 mkmf.rb中的不安全世界可写目录/ usr / bin在/ System上找不到ruby的头文件/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

宝石文件将保留安装在/Library/Ruby/Gems/1.8/gems/mysql-2.8.1中,以进行检查。结果记录到/Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

我已经搜索并尝试了很多事情,从安装特定版本到尝试重新安装ruby,没有任何运气。

有什么想法我可能会出错吗?

我正在尝试将MySQL安装到最新版本,因为某些安装错误。我运行命令,gem install mysql并且收到以下信息:

构建本机扩展。这可能需要一段时间...错误:安装mysql时出错:错误:无法生成gem本机扩展。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb extconf.rb:4:警告:PATH模式下不安全的世界可写目录/ usr / bin,模式040777 extconf.rb:4:警告:PATH模式040777 extconf.rb中不安全的世界可写目录/ usr / bin:7:警告:PATH模式040777 mkmf.rb中的不安全世界可写目录/ usr / bin在/ System上找不到ruby的头文件/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

宝石文件将保留安装在/Library/Ruby/Gems/1.8/gems/mysql-2.8.1中,以进行检查。结果记录到/Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

我已经搜索并尝试了很多事情,从安装特定版本到尝试重新安装ruby,没有任何运气。

有什么想法我可能会出错吗?

编辑:我从我的雪豹DVD安装XCode,错误只是稍微更改为以下内容:

构建本机扩展。这可能需要一段时间...错误:安装mysql时出错:错误:无法生成gem本机扩展。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb extconf.rb:4:警告:PATH模式下不安全的世界可写目录/ usr / bin,模式040777 extconf.rb:4:警告:PATH模式040777 extconf.rb中的不安全世界可写目录/ usr / bin:7:警告:PATH模式040777 extconf.rb:17中的不安全世界可写目录/ usr / bin:警告:不安全世界可写目录/ usr / bin在PATH模式040777中检查-lmysqlclient中的mysql_query()...不检查-lm中的main()...是-lmysqlclient中的mysql_query()检查...- lz ...是,在-lmysqlclient中检查mysql_query()...在-lsocket中不检查main()...在-lmysqlclient中不检查mysql_query()... -lnsl中的main()。 ..不检查-lmysqlclient中的mysql_query()...不检查-lmygcc中的main()...在-lmysqlclient中不检查mysql_query()... * extconf.rb失败* 由于某些原因(可能缺少必要的库和/或头文件)而无法创建Makefile。检查mkmf.log文件以获取更多详细信息。您可能需要配置选项。

提供的配置选项:--with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib-没有-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =。--curdir --ruby = / System / Library / Frameworks / Ruby.framework / Versions / 1。

宝石文件将保留安装在/Library/Ruby/Gems/1.8/gems/mysql-2.8.1中,以进行检查。结果记录到/Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

在命令行上执行“哪个mysql”不会返回任何内容,这意味着它无法识别它。我还安装了MySQL系统偏好设置选项,并且无法阻止MySQL运行。现在,我完全不知所措!

编辑编辑

我已经使用本指南http://hivelogic.com/articles/installing-mysql-on-mac-os-x完全重新安装了MySQL

不幸的是,这也不起作用,我仍然收到相同的错误。我什至无法在命令行上执行mysql -uroot,出现以下错误:

错误2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)

所以我想我已经尝试了一切。

**解决了*

抱歉,不起作用的原因是由于MySQL路径。我在这里写过博客:http : //www.kieransenior.co.uk/2010/02/mysql-cant-connect-using-ruby-on-rails-mac-os-x-snow-leopard/

Answers:


62

在OSX上安装mysql gem

在终端中。首先执行“查找mysql_config” ,然后将以下命令中的路径替换为该文件所在的位置

$ sudo gem install mysql -- —–with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions. This could take a while…
Successfully installed mysql-2.7
1 gem installed

2
我为OSX安装了XAMPP,所以我的命令是:gem install mysql -- --with-mysql-config=/Applications/XAMPP/bin/mysql_config。不需要sudo!
thesmart

1
只是 我仍然无法安装,但是后来我意识到/ usr / local / mysql / bin不在我的PATH环境变量中。一旦在PATH上找到了它,就可以毫无问题地安装它。
justspamjustin

3
我必须sudo locate mysql_config获取配置路径。否则,它返回以下消息:WARNING: The locate database (/var/db/locate.database) does not exist. ...
RNickMcCandless 2014年

在此答案最终对我有用之前,我必须安装xcode命令行工具。看到这个相关的答案:stackoverflow.com/questions/761521/… ,然后sudo gem install mysql1 etc像这样回答:)
Josh Burson

@JoshBurson如果您想获得在OSX上从头开始安装mysql的完整指南,我认为这是一个完全不同的故事。
跋涉

163

在Debian(或Ubuntu)系统上,只需使用以下命令安装libmysqlclient-dev软件包:

sudo apt-get install libmysqlclient-dev

然后:

gem install mysql

它将被安装而没有任何错误。


1
大!在Ubuntu 14.10 64位中工作
miquel 2014年

也为我工作,Ubuntu 14.4 LTS值得信赖
user3632930

17

首先,您需要区分作为服务器的MySQL,作为客户端的MySQL和与MySQL的Ruby绑定。

我不熟悉Mac,但是对于* nix操作系统,您需要通过软件包管理器安装MySQL。要安装Ruby绑定

gem install mysql

您需要ruby的开发标头(在Ubuntu中是ruby-dev包)和MySQL-Client的开发标头(当前libmysqlclient16-dev在Ubuntu中)。我不知道它们在Mac上的名称是否不同,但是在安装完它们之后,Ruby绑定应该安装没有任何错误。


毋庸置疑,有一个多包装的版本可以同时完成这两个任务。我也经历了这个过程。我认为您是对的,我确实需要区分两者,因为这主要是我的问题。也许另一个选择是安装MAMP并使用它?那我需要什么?
Kezzer 2010年

MAMP代表Mac,Apache,MySQL,Php。因此,您仍然需要MySQL服务器和Apache 2,以及apache的php库。我不确定是否可以在包管理器中选择MAMP,它会安装所有必需的文件。也许Mac用户可以帮助您。
Aurril

确实,它并不需要MAMP,但这只是提供MySQL实例的简单方法。
Kezzer

4
这正是我在Ubuntu上需要的:sudo apt-get install ruby-devsudo gem install mysql。谢谢!
丹·布雷斯劳

1
是的,这工作: 'sudo易于得到安装Ruby-dev的libmysqlclient16-dev的'然后'须藤宝石安装mysql'
特拉维斯里德

9

许多人认为这篇文章很有帮助。

另外,我需要先输入以下内容:

yum install mysql-devel

然后:

gem install mysql 

对于某些人,您可能需要输入:

gem install mysql -- --with-mysql-config=/usr/local/mysql/mysql_config

杜德,如果我能给你2个,我会的!尽管需要注意的是,此yum命令仅对某些类型的LINUX有用。就我而言,CentOS 6.0
Onema 2012年

5

在OSX mountain Lion上:如果已brew安装,则brew install mysql按照并instructions在计算机上使用mysql创建测试数据库。您不必一路过关斩将,我不需要这样做之后,我便可以捆绑安装和安装rake。


这是唯一对我有用的解决方案!队友的欢呼声!
辛西娅·桑切斯

3

为了解决

Gem :: Ext :: BuildError:错误:无法为mysql2建立gem本机扩展错误,

我认为libmysql-rubyruby-mysql改变了

只需尝试使用以下命令,

sudo apt-get install ruby-mysql

& 然后

sudo apt-get install libmysqlclient-dev


2

我也有类似的经历,所以这是我尝试过的事情

首先,我尝试通过在终端中运行以下命令来安装mysql所需的软件包

sudo apt-get install build-essential libmysqlclient-dev

其次,我尝试通过在终端中运行以下命令来更新系统上的rubygems

sudo gem update --system

但是我仍然遇到同样的问题。经过大量的研究,我意识到我正在使用几乎过期的mysql gem版本。我只需要使用mysql2 gem(mysql2 gem)而不是mysql gem,所以我通过在终端中运行以下命令来修复它

gem install mysql2

这对我来说很好。在运行最后一个命令之前,请确保您已经运行了第一条命令和第二条命令,以确保系统上一切正常。

就这样。

我希望这有帮助


0

您可以尝试重新安装最新版本的xcode / dev。雪豹的工具-这应该可以解决您的错误


这是我做的第一件事。我的计算机上安装了Snow Leopard的XCode版本。
Kezzer


0

注意:您需要指定-键,而不是--with-mysql-config = / usr / local / mysql / bin / mysql_config


1
同样,这个答案在很多地方都浮现了。以我为例,它不起作用。另外,我相信/ usr / local /中不存在mysql。
Kezzer

0

如果您使用Percona Mysql服务器

$ yum安装Percona-Server-devel-55

$ gem安装mysql



0

您的Ubuntu操作系统需要为mysql客户端安装库 sudo apt-get install libmysqlclient-dev

之后,只需安装bundlebundle install

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.