容量問題一部解消

昨日の特定パーティションの容量不足を解消すべく不要なパッケージを削除する。こういうときにDebianのパッケージは簡単で良い。不要と思われるパッケージを削除するがそれ程空き容量が増えない。よくよく調べると自分のホームディレクトリにWeb公開用の画像がそれなりにあったので別パーティションにコピー。これで500Mbyteの空きができた。

ついでにRDocなどを削除すべく、いったんRailsをアンインストールして再度ドキュメント無しでインストール。

$ gem install rails --no-rdoc --no-ri

しらなかったが、~/.gemrcファイルに以下の記述をしておけば上記のオプションをいちいち指定しなくて良いみたいだ。

gem: --no-rdoc --no-ri

さて、Rails用にsqlite3-rubyをインストールしようしたが、Rubyのバージョン1.8.6以降でないと駄目らしい。もしかしてDebianをlennyにアップグレードしたらおまけでRubyのバージョンも上がるかもと検索する。http://www.revulo.com/kuro-box/Debian/lenny.htmlによるとU-Boot無しでも大丈夫のようだが、HDDの中身が消えてしまうと。しかたがないのでMySQLをインストールする事にした。

$ aptitude install mysql-server

関連パッケージで一気に100MByte消費。無事インストールが終わったところでRakeコマンドでデータベースを作成しようとしたらMySQL用のアダプタが無いというエラーメッセージ。そういえばそうだった。

$ gem install mysql

を実行するとRubyのバージョンが古すぎると、、、。でも手元のMacRubyのバージョンは1.8.4で無事インストールできている。玄箱のは1.8.5なので古いバージョンのmysqlならばインストールできるはずと思い調べると、mysqlアアプタは2.8.1が最新らしい。Macにインストールされていたバージョンは2.7なのでバージョンを指定してインストール。

$ gem install mysql --version '< 2.8'

が、以下のエラーに遭遇。

gem install mysql --version '= 2.7'
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
*** 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=/usr/bin/ruby1.8
        --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

Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

検索して参照したサイトRuby on Rails on CentOS 5 - Enjoi Blogによると mysql_config コマンドが関係しているらしい。このコマンドを探してみるが、findコマンドでも見つからない。紀子さん@へぼぷろぐらまの日常 | mysql_config が見当たらない?によると、libmysqlclient15-devというパッケージに含まれているらしい。

$ apt-get install libmysqlclient15-dev

でインストールし、再度gemコマンドでmysqlをインストール。

$ gem install mysql --version '< 2.8'

で無事インストール完了。今回はDebianだったので(?)mysql_configへのパスを明示的に指定する必要なかったが、別途指定する場合は以下のようにするらしい。

$ gem install mysql --version '< 2.8' -- --with-mysql-config=/usr/bin/mysql_config


いろいろ上記の件を調べていてMySQLの設定が気になったのでちょっと確認。

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

なんだか文字コードが怪しくなりそう、、、ってことで /etc/mysql/my.cf の中身を少し編集。

[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
language = /usr/share/mysql/japanese

MySQLを再起動して確認。

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       | 
| character_set_connection | utf8                       | 
| character_set_database   | utf8                       | 
| character_set_filesystem | binary                     | 
| character_set_results    | utf8                       | 
| character_set_server     | utf8                       | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+

無事うまくいったようだ。

やっとRailsでテストアプリを作って実行すると無事稼働。ただ動きがかなりもっさり。ApacheMySQLをやめてもうちょっと軽い構成にしないとデモサイトでも使うには厳しいかも。