我有一些问题时,试图安装mysql2宝石为Rails。当我试图通过运行bundle install或gem install mysql2来安装它时,它会给我以下错误:
安装mysql2错误:错误:未能建立gem本地扩展。
我如何解决这个问题并成功安装mysql2?
我有一些问题时,试图安装mysql2宝石为Rails。当我试图通过运行bundle install或gem install mysql2来安装它时,它会给我以下错误:
安装mysql2错误:错误:未能建立gem本地扩展。
我如何解决这个问题并成功安装mysql2?
你试过用
gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib
来指定基本目录的位置以及完成gem安装所必需的MySQL库的路径?
来源: MySQL Gem安装错误:未能建立Gem本地扩展 MySQL论坛::Ruby::帮助安装MySQL绑定Ruby
在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和Homebrew上:
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。错误输出说(在我的机器上,等等):
“你必须先安装开发工具。”
所以这是一个显而易见的决定,而且很有帮助。
I got the gem built on Mac OS X 10.6.6 by 1) Ensuring the Developer tools package is installed 2) Downloading the current MySQL package (5.5.8 in my case) from Source 3) Installing the cmake tool from cmake.org 4) Following the instructions in section 2.11 of INSTALL-SOURCE from the mysql distribution files 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include The gem built successfully, but there are two errors in the documentation that rdoc and ri complain about. But now when I try to require 'mysql2' I get a
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)发行版上。
我也有同样的问题,对我来说 安装libmysqlclient-dev 完成了任务!!
我在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
在纠正了mysql-dev问题之后,您可能需要删除坏的mysql2安装。仔细查看$ bundle安装后的消息。你可能需要
rm -rf vendor/cache/
rm -rf ./Zentest
这将清除坏的mysql2安装,以便最终的$ bundle安装可以创建一个好的安装。
这里有一个解决方案,希望对Windows用户有帮助!
在Windows上使用Rails 3使用MySQL
安装railsinstaller -> www.railsinstaller.org(我安装到c:\Rails) 安装MySQL(我使用MySQL 5.5) -> dev.mysql.com/downloads/installer/
--- for mySQL installation --- If you dont already have these two files installed you might need them to get your MySQL going 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 Use default install Developer Machine -MySQL Server Config- port: 3306 windows service name: MySQL55 mysql root pass: root (you can change this later) (username: root) -MySQL Server Config- --- for mySQL installation ---
安装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"' 现在gem应该已经正确安装了 最后复制libmysql.dll文件 C:\Program Files\MySQL\MySQL Server 5.5\lib 来 Rails C: \ \ Ruby1.9.2 \ bin 安装mysql2 Gem
你现在将能够使用你的Rails应用程序与MySQL,如果你不确定如何创建一个Rails 3应用程序与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'
打开命令提示符窗口cmd,而不是Git Bash(运行你的应用程序!) 导航到应用程序文件夹(c:\Sites\world)
rails s
在这里打开浏览器-> http://localhost:3000
用MySQL开发一个Rails 3应用程序
在升级到Mac OS X Mountain Lion后尝试安装mysql2 gem时,出现“您必须先安装开发工具”错误。显然,执行此升级将删除命令行编译器。
修复:
我卸载了旧版本的Xcode(在/Developer/Library中运行卸载脚本)。然后删除“/Developer”目录。 去AppStore下载Xcode。 打开Xcode,进入首选项->下载,安装命令行工具。
我只是想特别为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用户: 你可以设置lib和mysql的路径,例如,如果你使用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
X.X.X =要安装的mysql2 gem的版本号 y.y.y =你安装的mysql版本ls /usr/local/Cellar/mysql
解决方案仅适用于Mac OS X
如果你已经用自制软件安装了MySQL,对我来说有效的方法是卸载MySQL,然后通过MySQL网站(https://www.mysql.com/)安装MySQL社区版。
安装后,只需重新输入命令gem install mysql2,如果有必要,sudo gem install mysql2,如果你得到的权限被拒绝的问题。
在Debian Stretch上,适合我的包是default-libmysqlclient-dev
Sudo apt-get update && apt-get install -y default-libmysqlclient-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
请看这篇文章(警告:里面有日语)。
对于MacOS Mojave:
——with-cppflags=-I/usr/local/opt/openssl/include . 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
参考
我可以看到大多数人已经找到了这个问题的解决方案,这主要是由于但不限于丢失的软件包,这发生在我身上后,我已经清除mysql并重新安装它。我必须运行这个命令来解决我的问题:
安装libmysqlclient-dev
这个命令帮助我解决了我的问题
根据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编译的。你需要上面描述的特定版本,是的,即使你使用的是Oracle公司分发的“原始”MySql,它也确实是你需要的MariaDB库
从[这里][1]下载连接器C文件。(https://downloads.mysql.com/archives/c-c/) 将文件解压到一个位置,如C:\ror\mysqlC\mysql-connector-c-6.1.11-winx64\lib 使用这个模板
install mysql2——'——with-mysql-lib="$lib_location"——with-mysql-include="$include_location"'
我的安装位置是lib_location -> C:\ror\mysqlC\mysql-connector-c-6.1.11-winx64\lib
——with-mysql-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"'