安装mysql2错误:无法构建gem本地扩展

我有一些问题时,试图安装mysql2宝石为Rails。当我试图通过运行bundle installgem install mysql2来安装它时,它会给我以下错误:

安装mysql2错误:错误:未能建立gem本地扩展。

我如何解决这个问题并成功安装mysql2?

291826 次浏览

你试过用

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib

来指定基本目录的位置以及完成gem安装所必需的MySQL库的路径?

< p >来源: MySQL Gem Install ERROR: Failed to build Gem native extension MySQL论坛::Ruby::帮助安装MySQL绑定Ruby < / p >

在Ubuntu/Debian和其他使用aptitude的发行版上:

sudo apt-get install libmysql-ruby libmysqlclient-dev

libmysql-ruby已经被淘汰,并被ruby-mysql取代。是我找到解决方案。

如果上面的命令因为无法找到libmysql-ruby而不起作用,那么以下命令应该是足够的:

sudo apt-get install libmysqlclient-dev

在使用yum的Red Hat/CentOS和其他发行版上:

sudo yum install mysql-devel

在Mac OS X上使用家酿:

brew install mysql

我在我的mac上遇到了这个错误,我发现我需要从mysql 32位升级到mysql 64位才能让这个错误消失。我在英特尔macbook pro上运行OSX 10.6, ruby 1.9.2和rails3.0.0

我还需要安装xcode,以获得编译gem所需的诸如“make”之类的unix实用程序。

一旦这样做,我能够运行gem安装mysql和gem安装mysql2没有错误。

我也得到了这个错误。通过安装开发包来解决。我使用arch,它是:

sudo pacman -S base-devel

安装:

m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config

但我认为它实际上需要make和gcc。错误输出说(在我的机器上,等等):

“你必须先安装开发工具。”

所以这是一个显而易见的决定,而且很有帮助。

我得到了在Mac OS X 10.6.6上构建的宝石 1)确保已安装开发人员工具包 2)从Source下载当前的MySQL包(我的情况是5.5.8) 3)在cmake.org上安装cmake工具 4)按照INSTALL-SOURCE 2.11节的说明安装mysql发行文件 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include gem成功构建,但是rdoc和ri抱怨文档中有两个错误。 但是现在,当我尝试要求'mysql2'时,我得到一个

LoadError: no such file to load -- mysql2/mysql2

我希望我得到的错误是libmysqlclient.16。Dylib无法找到,因为我们在另一篇文章中找到了(搜索install_name_tool)。

我的$PATH有/usr/local/mysql在里面(这是我的源代码和构建文件所在的位置),所以我有点难住了。如果有人有什么想法,我会在睡了几个小时后再来看看。

我有几台电脑,32位和64位处理器,它们运行在Ubuntu Linux, Maverick(10.10)发行版上。

我也有同样的问题,对我来说 sudo apt-get install libmysql-ruby libmysqlclient-dev 完成了任务!!< / p >

我在Windows 7上遇到了这个问题。这显然是一个不兼容的问题,解决方案如下:

从旧的InstantRails安装程序下载libmySQL.dll文件。它可以从InstantRails GitHub回购

接下来,将该文件复制到Ruby/bin文件夹中。

现在,你可以开始了;)

我在mac上使用家酿安装开源程序。为了安装自制软件,我不得不安装mac Dev工具,但在那之后,它是一个简单的:

brew install mysql

安装mysql。我没有一个mysql宝石的问题,因为。

如果仍然报错,请按照mysql2 gem在Rails 3上的安装步骤

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html

其中大多数用户都能够安装mysql2 gem。

这解决了我在Windows中的问题:

subst X: "C:\Program files\MySQL\MySQL Server 5.5"
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt
subst X: /D

如果您正在使用yum,请尝试:

sudo yum install mysql-devel

在纠正了mysql-dev问题之后,您可能需要删除坏的mysql2安装。仔细查看$ bundle安装后的消息。你可能需要

rm -rf vendor/cache/
rm -rf ./Zentest

这将清除坏的mysql2安装,以便最终的$ bundle安装可以创建一个好的安装。

这里有一个解决方案给<强>windows用户,希望能有所帮助!

在Windows上使用Rails 3使用MySQL

  • Install railsinstaller -> www.railsinstaller.org(我将其安装到c:\Rails)

  • 安装MySQL(我使用MySQL 5.5) -> dev.mysql.com/downloads/installer/

——用于mySQL安装——

如果你还没有安装这两个文件,你可能需要它们来使你的MySQL运行

vcredist_x86.exe -> http://www.microsoft.com/download/en/details.aspx?id=5555 .exe dotNetFx40_Full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id=17718 .exe

使用默认安装 开发人员机器< / p > < p > - mysql服务器配置-
端口:3306
windows服务名称:MySQL55
Mysql root pass: root(你可以稍后修改)
(用户名:root)
.使用实例 - mysql服务器配置- . exe

——用于mySQL安装——


安装mysql2 Gem

重要:用Git Bash命令行做这个吗(这是安装与railsinstaller) -> start/Git Bash

——with-mysql-lib="c:\Program Files\MySQL\ Server 5.5\lib"——with-mysql-include="c:\Program Files\MySQL\ Server 5.5\include"' < br >
现在gem应该已经正确安装了 < br >
最后从
复制libmysql.dll文件 C:\Program Files\MySQL\MySQL Server 5.5\lib

C:\Rails\Ruby1.9.2\bin

——安装mysql2 Gem——

< p >
你现在可以使用你的Rails应用程序与MySQL,如果你不确定如何创建一个Rails 3应用程序与MySQL阅读…


用MySQL开发一个Rails 3应用程序

打开命令提示符(不是Git Bash) -> start/cmd
导航到文件夹(c:\Sites)
创建新的rails app

rails new world

删除文件c:\Sites\world\public\index.html
.html 编辑文件c:\Sites\world\config\routes。rb
添加这一行-> root:to => 'cities#index'

打开命令提示符(生成视图和控制器)

rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer
< p >
< br > 编辑文件c:\Sites\world\app\models\city。Rb变成这样

class City < ActiveRecord::Base
set_table_name "city"
end

编辑文件c:\Sites\world\config\database。Yml看起来像这样

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

添加到gemfile

gem 'mysql2'

打开命令提示符 windows cmd,而不是Git Bash(运行你的应用程序! 导航到你的app文件夹(c:\Sites\world)

rails s

打开浏览器-> http://localhost:3000

用MySQL开发一个Rails 3应用程序

下载正确版本的mysqllib.dll,然后复制到ruby bin,这对我来说真的很有用。跟随这个链接plas__abc0

在尝试安装mysql2 gem 升级到Mac OS X Mountain Lion后时,出现“必须先安装开发工具”错误。显然,执行此升级将删除命令行编译器。

修复:

  • 我卸载了旧版本的Xcode(在/Developer/Library中运行卸载脚本)。然后删除“/Developer”目录。
  • 去AppStore下载Xcode。
  • 打开Xcode,进入首选项->下载,安装命令行工具。

如果你仍然有问题....

试着安装

   sudo apt-get install ruby1.9.1-dev

你遇到这个问题是因为你没有安装MySql。在安装mysql2 gem之前。安装MySQL。之后将安装mysql2 gem。

我只是想为Mac用户特别添加这个答案。

在我更新xcode之前,我的服务器运行得非常好。当启动我的rails服务器时,错误显示如下

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.


/Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-
p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an
executable file. (RuntimeError)

并且在错误消息的末尾有安装mysql2 gem的建议。所以当我尝试安装它时,我得到了这个问题中提到的错误。我得到的错误如下

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

因此,正如在这篇文章中所建议的那样,我尝试了“酿造安装mysql”,并退出说mysql版本已经安装。但之前有警告说

Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license

然后我尝试了sudo xcodebuild -license,并在最后键入'agree'。您必须是root用户才能同意该许可。

在此之后,我再次尝试bundle安装,然后一切都正常工作。[甚至由于这次xcode更新,我的塔也有问题。]

windows用户: 你可以设置mysql的lib和include路径,例如,如果你使用xampp,你可以这样:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'

MacOS用户的另一种方式

如果你使用“brew”安装mysql:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config
< p > x.x。X =你想安装的mysql2 gem的版本
y.y.y =你安装的mysql版本ls /usr/local/Cellar/mysql来查找它

你必须安装一些依赖项

sudo apt-get install libmysql-ruby libmysqlclient-dev

解决方案仅适用于Mac OS X

如果你已经用自制软件安装了MySQL,对我来说最有效的方法就是卸载MySQL,然后通过MySQL网站(https://www.mysql.com/)安装MySQL社区版。

安装后,只要重新输入命令gem install mysql2,如果有必要,输入sudo gem install mysql2,如果你遇到了权限被拒绝的问题。

libmysql-ruby已经被淘汰和取代。新命令:

 sudo apt-get install ruby-mysql libmysqlclient-dev

在Debian Stretch上,适合我的包是default-libmysqlclient-dev

sudo apt-get update &&-y default-libmysqlclient-dev < /代码> < / p >

对我来说,这很有帮助:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

然后:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

结果:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

请看这篇文章(警告:日语里面)。

MacOS莫哈韦沙漠:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

在Ubuntu (18.04)

我能够通过运行以下程序来解决这个问题:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

reference

我可以看到大多数人已经找到了这个问题的解决方案,这主要是由于但不限于丢失的软件包,这发生在我身上后,我已经清除mysql并重新安装它。我必须运行这个命令来解决我的问题:

sudo apt-get install libmysqlclient-dev

这个命令帮助我解决了我的问题

在ubuntu 20.04 LTS下,这是唯一的解决方案,一直为我工作:

sudo apt-get install ruby-mysql2

根据https://github.com/brianmario/mysql2/issues/1175,我通过

gem install mysql2 -- \
--with-mysql-lib=/usr/local/Cellar/mysql/8.0.26/lib \
--with-mysql-dir=/usr/local/Cellar/mysql/8.0.26 \
--with-mysql-config=/usr/local/Cellar/mysql/8.0.26/bin/mysql_config \
--with-mysql-include=/usr/local/Cellar/mysql/8.0.26/include

针对Windows用户的更新解决方案。我在跑步

Windows 10

MySql 8.0.30

Ruby 3.1.2

我的Ruby版本来自rubyinstaller.org,包含了MYSYS开发工具包

我下载了一个MariaDB C连接器库msi安装文件v3.1.17,运行它,它在程序文件的目录中安装了相关文件。我把这个目录复制到另一个位置,重命名它,这样它就没有任何空格,然后运行命令:

gem install mysql2 --platform=ruby -- --with-mysql-dir="c:/my-mariadb-connector-path-with-no-spaces"

这给了我一颗有用的宝石。

这是该库的特定版本,而不是最新的版本。在MariaDB网站上寻找下载选项有点令人困惑,所以这里是直接下载链接。

https://dlm.mariadb.com/2319542/Connectors/c/connector-c-3.1.17/mariadb-connector-c-3.1.17-win64.msi

在我走到这一步之前,我尝试了好几种方法,但都没有奏效。我在下面列出了它们作为背景信息,但如果你感兴趣的只是一个可行的解决方案,那么你现在可以停止阅读了。

一些来源建议,如果你安装了MYSYS devkit,你可以用下面的命令构建gem:

ridk exec gem install mysql2 --platform=ruby -- --use-system-libraries

这并不适合我。

您可能还看到过建议下载MySQl连接器库的归档版本(6.1)。我尝试了这个,gem编译,但当我尝试启动我的应用程序时,我得到了一个错误消息:“不正确的MySQL客户端库版本!”此gem是为6.1.11编译的,但客户端库是10.5.5。

在MySQL V8及以上版本中,C库不再是可选的额外选项,而是包含在主安装中。我找到了相关文件,将它们复制到一个没有空格的目录路径,并尝试了通常的命令。宝石再次编译,但应用程序不会启动。这次错误信息显示“此gem是为8.0.30编译的,但客户端库是10.5.5”;

我还尝试了MariaDB库的最新版本。错误消息说该gem是为10.6.8编译的。你需要上面描述的特定版本,是的,它确实是你需要的MariaDB库,即使你使用的是“original”。MySql由Oracle公司发行

  1. 从[here][1]下载连接器C文件。(https://downloads.mysql.com/archives/c-c/)

  2. 解压文件到一个位置,如C:\ror\mysqlC\mysql-connector-c-6.1.11-winx64\lib

  3. 使用此模板

——with-mysql-lib="$lib_location"——with-mysql-include =“include_location"美元;”

我的安装位置是lib_location ->C: \ ror \ mysqlC \ mysql-connector-c-6.1.11-winx64 \ lib

C:\ror\mysqlC\mysql-connector-c-6.1.11-winx64\lib"——with-mysql-include =“C: \ ror \ mysqlC \ mysql-connector-c-6.1.11-winx64 \ include"”