61

mysql2Bundler 経由で gemをインストールしようとしていますが、次のエラーが表示され続けます:

** executing command
/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in 'rescue in block in build_extensions': 
ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config
checking for rb_thread_blocking_region()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no

-----
mysql.h is missing.  please check your installation of mysql and try again.
-----

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
--with-mysql-config
Gem files will remain installed for inspection.

--with-mysql-configグーグルで見つけたほとんどのものは、パラメーターを渡して修正することを推奨していました。だから、に基づいて:

$ which mysql_config
/usr/bin/mysql_config

Bundler の設定に以下を追加しました。

$ bundle config build.mysql2 --with-mysql-config='/usr/bin/mysql_config'

ただし、まだうまくいきません。上記と同じクラッシュです。

エラーで死にかけているので、それmysql.h is missingを確認しましたが、周りにあると言われていますが、Bundler では見つかりません。

$ find / -name mysql.h
/usr/include/mysql5/mysql/mysql.h

何かご意見は?

4

9 に答える 9

95

回答は、Wrikken が投稿したものと似ていました。将来の読者のために、これを修正するために私が行ったことを次に示します。

(これは RHEL 5.5 用です。似ているが異なるコマンドが Ubuntu/Debian/etc に適用されます。)

実行すると、マシンにインストールされているすべてのパッケージsudo yum list installedが出力されます (注: yumRHEL では、Red Hat Network リポジトリ [私はEPELを使用] を追加し、それを 経由で実行する必要がありますsudo)。

と がmysqlありmysql-server、MySQL がすべての既存のアプリで正常に機能した理由を説明しましたが、そのエラーと同様の他のビルド エラーmysql-develを修正するために必要な はありませんでした。mysql.h is missing

簡単に言えば、mysqldump -u root -ppassword --all-databases > full-dump.sql安全のために、簡単な方法で修正されました

sudo yum install mysql-devel
于 2010-09-21T13:58:14.387 に答える
33

Ubuntuの場合、以下をインストールする必要があります。libmysqlclient-dev libmysqlclient16

于 2010-10-10T10:34:22.790 に答える
20

mysqlのbrewインストールを使用したMacの場合、次のソリューションで問題が解決しました:

/usr/local/Cellar/mysql/5.6.12/bin の mysql_config ファイルを編集し、cflags と cxxflags の W コンパイラ オプション -Wno-null-conversion と -Wno-unused-private-field を削除しました。

これにより、「gem install mysql2」の問題が解決しました。

参照: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

于 2013-06-23T11:57:29.240 に答える
9

上記の問題は、mysql-devel パッケージがシステムに正しくインストールされていないために発生します。Centosでも同じように修正する方法を説明します。を使用してそのパッケージをインストールしようとすると、

    yum install mysql-devel

MySql-Administrative ツールと MySQL クエリ ブラウザをインストールすると、インストールされる既存のパッケージと衝突が発生することがあります。

その場合、既存のすべての mysql2 パッケージをアンインストールして、再度インストールする必要があります。

    rpm -qa -last | grep -i mysql
    yum remove MySQL-server-5.5.27-1.rhel5
    yum remove MySQL-client-5.5.27-1.rhel5
    yum remove mysql-gui-tools-5.0r12-1rhel4
    yum remove mysql-query-browser-5.0r12-1rhel4-a

したがって、上記のように rpm -qa で表示される mysql のものをすべてアンインストールできます。

次に、mysql-server と mysql-client をインストールできます。

    yum install mysql-server
    yum install mysql-client

次に、mysql-devel パッケージのインストールを行います。

    yum install mysql-devel

これでパッケージの衝突はなくなり、mysql2 gem をインストールできるようになりました。

    gem install mysql2 -v '0.3.11'

これで mysql2 gem が正常にインストールされ、準備完了です。

于 2012-08-22T06:13:29.350 に答える
1

私の場合、問題は mysql_config スクリプトの誤動作でした。--cflags オプションを指定してコマンド ラインで呼び出すと、以下を含むオプションの文字列が返されます。

-Xclang -target-feature -Xclang -aes -Qunused-arguments

これらのオプションが含まれていると、何らかの理由で extconf.rb スクリプト内の have_header('mysql.h') への呼び出しが失敗します。

私にとってうまくいったのは、mysql_configファイルを手動で編集して、これらのオプションへの参照を行から削除することでした:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -Xclang -target-feature -Xclang -aes -Qunused-arguments -O2 -g -DDBUG_OFF " #注: エンド スペース!

私は次のように書き直しました:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -O2 -g -DDBUG_OFF " #注: エンド スペース!
于 2013-06-03T20:48:04.747 に答える
0

Fedora 23 で redmine のバンドルをインストールしているときに、この問題に遭遇しました。私が見つけた解決策は、このコマンドを発行することでした - sudo dnf install redhat-rpm-config.

これにより、mysql2 のインストールに関する問題だけでなく、nokogiri と redcarpet の問題も修正されました。

于 2016-04-02T07:41:41.307 に答える