MediaTombのMySQL対応

Mediatombはデフォルトではデータベースとしてsqlite3を使っていますが、1000を超えるファイルがある場合、sqlite3だと非常に処理に時間がかかってしまいます。
代わりにMySQLをデータベースとして使うようにすると、処理が格段に早くなります。
ただし、finkのデフォルト設定ではMySQLが無効にされた状態でMediaTombがインストールされるので、FInkのMediaTombコンパイル方法の設定を変更した上で再コンパイルが必要となります。

やり方は次の通り。

MySQLのインストー

まずFinkか、または公式ページからパッケージを落とします。

finkの場合
sudo fink install mysql15-shlibs mysql15-dev mysql-client

くらいでインストールできる気がします。

公式ページからパッケージ版をダウンロードしてインストールする場合

こっちはコンパイルが必要ありません。
公式ページからTEST DRIVE > Download > MySQL Community Server > 5.0 の Mac OS X向けの自分のマシンにあったバージョンをダウンロード、インストールします。TARでもOKです。
Finkでこれを使う場合は、

ln -s インストール先フォルダ /usr/local/mysql
ln -s /usr/local/mysql/bin/mysql_config /sw/bin/

などとして、mysql_configがシステム標準のパスに入るようにしましょう*1

DBの作成

MySQLを起動し、MediaTomb用のユーザとDBを適当な名前で作成します。ここではどちらもmediatombとしました。くわしくはMySQLSQLドキュメントを読んでください。

# mysql -p
mysql> use mysql
mysql> INSERT INTO user
    ->     VALUES('localhost','mediatomb',PASSWORD('xxxxx'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE mediatomb;
mysql> GRANT ALL ON mediatomb.* TO 'mediatomb'@'localhost';

Finkの設定ファイルの編集

/sw/fink/10.5/unstable/main/finkinfo/net/mediatomb.info
を編集し、MySQLとリンクするようにします。具体的には ConfigureParams を以下のように、--disable-mysql から --enable-mysql に変更します。

ConfigureParams: --disable-dependency-tracking --enable-mysql --with-js-h=%p/include/js --with-js-libs=%p/lib

あとは

 fink rebuild mediatomb

して、じっと待ちましょう。

リンクに問題あり?

インストール完了後、確認のためにmediatomb -vを実行しようとしたところ、

dyld: Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient_r.15.dylib

という変なエラーが出てしまいました。後ろの /mysql/ は要らないはずです。なんでこんな変なところが間違ってるんだろう??
よく分かりませんが、

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

として /mysql/ があってもなくても良いようにしてしまったところ、とりあえず回避できました。

MediaTombの設定

~/.mediatombの部分を、以下のように書き換えます

    <storage driver="mysql">
      <database-file>mediatomb.db</database-file> ←おまじない
      <host>localhost</host> ←MySQLが動作しているホスト名
      <database>mediatomb</database> ←DB名
      <username>mediatomb</username> ←ユーザ名
      <port>3306</port> ←MySQLが動いているポート
      <password>xxxxx</password> ←パスワード
    </storage>

おまじないについては*2参照。
その他の設定は、全て以前の記事と同様に設定します。

MediaTombを起動

幸運を祈りながらやりましょう。;-) まずmysqlを起動し、

mediatomb --add /Users/hoge/xxx

で、無事ファイルが登録されたら成功。以降は単に

mediatomb -d

でデーモンとして起動してくれるはずです。

*1: --with-mysql_config=/usr/local/mysql/bin/mysql_config というconfigureオプションを使ってもいいはずなんですが、Fink上だと何故かうまく動かない。

*2:本来はsqlite3のデータベースファイルの設定。MySQLの場合でもなぜか省略するとなぜか起動しない。