簡體   English   中英

安裝 mysql2 時出錯:無法構建 gem 原生擴展

[英]Error installing mysql2: Failed to build gem native extension

嘗試為 Rails 安裝mysql2 gem 時遇到一些問題。 當我嘗試通過運行bundle installgem 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用戶的解決方案,希望對你有幫助!

在 Windows 上使用 MySQL 和 Rails 3

  • 安裝 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 時出錯。 顯然進行此升級會刪除命令行編譯器。

修理:

  • 我卸載了我非常舊版本的 Xcode(在 /Developer/Library 中運行卸載腳本)。 然后刪除 /Developer 目錄。
  • 去 AppStore 下載 Xcode。
  • 啟動 Xcode 並進入 Preferences -> Downloads,並安裝命令行工具。

您遇到此問題是因為您尚未安裝 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 更新,我的塔也有問題。]

適用於使用Windows 7和64位MySQL的用戶

如果你想使用64位MySQL,你應該按照這里的說明(也在這里 )。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM