[英]Error installing mysql2: Failed to build gem native extension
尝试为 Rails 安装mysql2
gem 时遇到一些问题。 当我尝试通过运行bundle install
或gem install mysql2
来安装它时,它给了我以下错误:
安装 mysql2 时出错:错误:无法构建 gem 原生扩展。
如何解决此问题并成功安装mysql2
?
在 Ubuntu/Debian 和其他使用 aptitude 的发行版上:
sudo apt-get install libmysql-ruby libmysqlclient-dev
软件包libmysql-ruby
已被淘汰并被ruby-mysql
取代。 这是我找到解决方案的地方。
如果上面的命令因为找不到libmysql-ruby
而不起作用,那么以下应该就足够了:
sudo apt-get install libmysqlclient-dev
在 Red Hat/CentOS 和其他使用 yum 的发行版上:
sudo yum install mysql-devel
在带有Homebrew的 Mac OS X 上:
brew install mysql
我在 Mac 上使用自制软件安装开源程序。 我确实必须安装 mac Dev 工具才能安装自制软件,但之后就很简单了:
brew install mysql
安装mysql。 从那以后我就没有遇到过 mysql gem 问题。
对于MacOS 莫哈韦:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
这是windows用户的解决方案,希望对你有帮助!
安装 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 dotNetFx40_Full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id =17718
使用默认安装开发者机器-MySQL服务器配置-
端口:3306
windows服务名称:MySQL55
mysql root pass:root(你可以稍后更改)
(用户名:root)
-MySQL服务器配置---- 用于 mySQL 安装 ---
--- 安装 mysql2 Gem ---
重要提示:使用 Git Bash 命令行执行此操作(使用 railsinstaller 安装)-> start/Git Bash
现在 gem 应该已经正确安装了
最后复制 libmysql.dll 文件
C:\Program Files\MySQL\MySQL 服务器 5.5\lib
至
C:\Rails\Ruby1.9.2\bin
--- 安装 mysql2 Gem ---
如果您不确定如何使用 MySQL 读取创建 Rails 3 应用程序,您现在可以将 Rails 应用程序与 MySQL 一起使用...
--- 获取一个与 MySQL 一起使用的 Rails 3 应用程序 ---
打开命令提示符(不是 Git Bash)-> start/cmd
导航到您的文件夹 (c:\Sites)
创建新的 Rails 应用程序
rails new world
删除文件 c:\Sites\world\public\index.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
编辑文件 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(运行你的应用程序!)
导航到您的应用文件夹 (c:\Sites\world)
rails s
在此处打开浏览器 -> http://localhost:3000
--- 获取一个与 MySQL 一起使用的 Rails 3 应用程序 ---
在 Ubuntu (18.04) 上
我能够通过运行以下命令来解决这个问题:
sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2
MacOS用户的另一种方式
如果您使用“brew”安装 mysql:
gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config
xxx = 您要安装的 mysql2 gem 的版本
yyy = 你安装的 mysql 版本ls /usr/local/Cellar/mysql
找到它。
我有几台计算机,32 位和 64 位处理器,它们在 Ubuntu Linux、Maverick (10.10) 版本上运行。
我遇到了同样的问题,对我来说, sudo apt-get install libmysql-ruby libmysqlclient-dev
完成了这项工作!!!
您是否尝试过使用
gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib
指定基本目录的位置以及完成 gem 安装所需的 MySQL 库的路径?
来源: MySQL Gem 安装错误:无法构建 gem 原生扩展MySQL 论坛 :: Ruby :: 为 Ruby 安装 MySQL 绑定需要帮助
如果您使用的是 yum,请尝试:
sudo yum install mysql-devel
如果您仍然遇到问题......
尝试安装
sudo apt-get install ruby1.9.1-dev
就我而言,这有帮助:
$ 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
见这篇文章(警告:里面有日语)。
这在 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
我在 Windows 7 上遇到了这个问题。这显然是一个不兼容问题,解决方案如下:
从旧版 InstantRails 安装程序下载libmySQL.dll
文件。 它可从InstantRails GitHub 存储库中获得。
接下来,将该文件复制到您的 Ruby/bin 文件夹中。
现在,你可以走了;)
在 Debian Stretch 上,对我有用的包是default-libmysqlclient-dev
sudo apt-get update && apt-get install -y default-libmysqlclient-dev
您必须安装一些依赖项
sudo apt-get install libmysql-ruby libmysqlclient-dev
我也遇到了这个错误。 通过安装开发包解决。 我正在使用拱门,它是:
sudo pacman -S base-devel
其中安装:
m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config
但我认为它实际上需要make和gcc。 错误输出说(在我的机器上,等等):
“你必须先安装开发工具。”
所以这是一个显而易见的决定,而且很有帮助。
我可以看到大多数人都找到了这个问题的解决方案,这主要是因为但不限于缺少包,这发生在我清除 mysql 并重新安装它之后。 我必须运行这个命令才能解决我的问题:
sudo apt-get install libmysqlclient-dev
这个命令帮助我解决了我的问题
我在我的 Mac 上遇到了这个错误,发现我需要从 mysql 32 位升级到 mysql 64 位才能让这个错误消失。 我在带有 ruby 1.9.2 和 rails3.0.0 的英特尔 macbook pro 上运行 OSX 10.6
我还需要安装 xcode 以获得编译 gem 所需的诸如“make”之类的 unix 实用程序。
一旦完成,我就可以运行 gem install mysql 和 gem install mysql2 而没有错误。
对于 windows 用户:您设置 mysql 的 lib 和包含路径,例如,如果您使用 xampp,您可以这样:
gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'
解决方案仅适用于 Mac OS X
如果您使用自制软件安装了 MySQL,那么对我有用的是卸载 MySQL,并通过 MySQL 网站 ( https://www.mysql.com/ ) 安装 MySQL Community Edition。
安装后,只需重新输入命令gem install mysql2
或必要时, sudo gem install mysql2
,如果您遇到权限被拒绝的问题。
我得到了基于 Mac OS X 10.6.6 构建的 gem 1)确保安装了开发工具包 2)从源代码下载当前的 MySQL 包(在我的例子中是 5.5.8) 3)从 cmake.org 安装 cmake 工具 4 ) 按照 mysql 分发文件中 INSTALL-SOURCE 的 2.11 节中的说明进行操作 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 (这是我的源文件和构建文件所在的位置),所以我有点难过。 如果有人有任何想法,我会在睡几个小时后回来查看。
下载正确版本的 mysqllib.dll 然后将其复制到 ruby bin 对我来说真的很有效。 按照此链接将mysql2 gem 编译为错误的 mysql 客户端库
得到“你必须先安装开发工具”。 升级到 Mac OS X Mountain Lion 后尝试安装 mysql2 gem 时出错。 显然进行此升级会删除命令行编译器。
修理:
您遇到此问题是因为您尚未安装 MySql。 在安装 mysql2 gem 之前。 安装 MySQL。 之后将安装 mysql2 gem。
我只是想专门为Mac Users添加这个答案。
在我更新我的 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.
因此,正如这篇文章中所建议的那样,我尝试了“brew install 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
并在最后输入“同意”。 您必须是 root 才能同意许可。
在此之后,我再次尝试捆绑安装,然后一切正常。 [即使由于这个 xcode 更新,我的塔也有问题。]
libmysql-ruby
已被淘汰和替换。 新命令:
sudo apt-get install ruby-mysql libmysqlclient-dev
如果仍然出现错误,请按照在 Rails 3 上安装 mysql2 gem 的步骤 -
http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html
大多数用户都能够安装mysql2 gem。
在 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 devkit
我下载了 MariaDB C 连接器库 msi 安装程序文件 v3.1.17,运行它并将相关文件安装在 Program Files 的目录中。 我将该目录复制到另一个位置,将其重命名,使其没有任何空格并运行命令:
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,但应用程序无法启动。 这次错误消息说“这个 gem 是为 8.0.30 编译的,但是客户端库是 10.5.5”
我还尝试了最新版本的 MariaDB 库。 有了这个错误消息说 gem 是为 10.6.8 编译的。 您需要上述特定版本,是的,它确实是您需要的 MariaDB 库,即使您使用的是 Oracle Corporation 分发的“原始”MySql
纠正 mysql-dev 问题后,您可能需要删除错误的 mysql2 安装。 仔细查看 $ bundle install 之后的消息。 你可能需要
rm -rf vendor/cache/
rm -rf ./Zentest
这将清除错误的 mysql2 安装,以便最终的 $ bundle install 可以创建一个好的安装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.