ubuntuでnative extentionがあるgemをインストール
ubuntuに変えて、一つ不満だったのはパッケージがありすぎることである。
いや、ありすぎることは悪いことではない。
だけど、問題はどのパッケージをインストールするべきかわかりづらいということだ。
たとえば、rubyのコードでbundle installすると
Using do_mysql (0.10.6) from git://github.com/datamapper/do.git (at d7cb262) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks! /usr/lib/ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/bin/ruby1.9.1 extconf.rb checking for mysql_query() in -lmysqlclient... no *** extconf.rb failed ***
とエラーが出る場合。
この場合、mysqlclientのライブラリがないといっているようだ。
CentOSだと、なんとなくsqlite-devっぽいものをインストールすれば解決した。
最近、apt-fileというコマンドを覚えた。apt-getでインストールし、apt-file updateで最新の情報が手に入る。そこで、
$ apt-file search mysqlclient libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient.a libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient.so libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.a libmysqlclient-dev: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so libmysqlclient-dev: /usr/share/doc/libmysqlclient-dev/changelog.Debian.gz libmysqlclient-dev: /usr/share/doc/libmysqlclient-dev/copyright libmysqlclient-dev: /usr/share/doc/libmysqlclient-dev/examples/udf_example.c.gz libmysqlclient16: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.16 libmysqlclient16: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.16.0.0 libmysqlclient16: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16 libmysqlclient16: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.16.0.0 libmysqlclient16: /usr/share/doc/libmysqlclient16/changelog.Debian.gz libmysqlclient16: /usr/share/doc/libmysqlclient16/copyright libmysqlclient16-dev: /usr/share/doc/libmysqlclient16-dev/changelog.Debian.gz libmysqlclient16-dev: /usr/share/doc/libmysqlclient16-dev/copyright libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18 libmysqlclient18: /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.0.0 libmysqlclient18: /usr/share/doc/libmysqlclient18/changelog.Debian.gz libmysqlclient18: /usr/share/doc/libmysqlclient18/copyright pandora-build: /usr/share/aclocal/pandora_have_libmysqlclient.m4
となるいっぱい出てくるけど、libmysqlclient-devが怪しさ満点。そこで、apt-get installする。
問題は解決しました。
次、Postgresqlについても同様のエラー。こちらは、
>|bash|
checking for main() in -lpq... no
checking for main() in -llibpq... no
|