the glue

やってみたことで忘れそうなこと、役立ちそうなことなどをまとめています。たまに何気ない日常の話もします。

bundle install で mysql2 のgemがインストールできない

問題

Railsアプリケーションをデプロイする時、bundle install中にいつもmysql2のgemがインストールできないと怒られるので、メモ

こんな感じのことをよく言われる

       --without-make-prog                                                                                [50/1324]
        --srcdir=.
        --curdir
        --ruby=/usr/local/bin/ruby
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysql-config
        --without-mysql-config
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-mlib
        --without-mlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-zlib
        --without-zlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-socketlib
        --without-socketlib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-nsllib
        --without-nsllib
        --with-mysqlclientlib
        --without-mysqlclientlib
        --with-mygcclib
        --without-mygcclib
        --with-mysqlclientlib
        --without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /home/youk/amc/amc_login_server/vendor/bundle/ruby/2.1.0/gems/mysql2-0.3.17 for i
nspection.
Results logged to /home/youk/amc/amc_login_server/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0-static/mysq
l2-0.3.17/gem_make.out

An error occurred while installing mysql2 (0.3.17), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.17'` succeeds before bundling.

対応

Ubuntu

$ sudo apt-get install libmysqld-dev

CentOS / Amazon Linux

$ sudo yum install mysql-devel

できた

$ bundle install --path vendor/bundle
...
...
Your bundle is complete!
It was installed into ./vendor/bundle

いつも思うのですが、 sudo gem install mysql2 をしろ
みたいなのじゃなくてもう少しまともなメッセージが出てほしいですね。 まぁエラーメッセージが「エラー」とかよりはマシか