February 19, 2006

FreeBSDでiTunesサーバを作ってみた

前から気になっていた「【コラム】OS X ハッキング! 第100回 LinuxをiTunesサーバに仕立てる (MYCOM PC WEB)」を見ながらiTunesサーバを作ってみることにしました。
mp3ファイルはsambaに置いているので、複数台のPCからファイルを読み出すことに問題はないのですが、iTunesでの共有は上手くいきません。ネットワーク上のファイルをiTunesに登録させると、何故かiTunesがすぐにファイルを見失ってしまうことが多く、使い物になりませんでした。いろいろ試してみましたが、やはりiTunesでのファイル共有はsambaよりDAAPが良いでしょう。

慣れてるFreeBSDで構築します。さくっと必要なソフトをインストール。

# cd /usr/ports/net/howl/
# make install
# cd /usr/ports/audio/libid3tag
# make install
# cd /usr/ports/audio/mt-daapd
# make install
# cd /usr/local/etc/
# mv mt-daapd.conf.sample mt-daapd.conf


mt-daapd.confを編集。
web_root /usr/local/apache2/htdocs/mt-daapd
mp3_dir /usr/home/samba/public/mp3


で、起動しようとしたらエラー。
# /usr/local/etc/rc.d/mt-daapd.sh start
Invalid config directive:
Error reading config file (/usr/local/etc/mt-daapd.conf)
mt-daapd


調べてみたところ、空行とコメントを全て削除すればいいらしいので、mt-daapd.confを下記のようにしてみました。

web_root /usr/local/share/mt-daapd/admin-root
port 3689
admin_pw hoge
db_dir /usr/local/var/mt-daapd/db
mp3_dir /usr/home/hoge/mp3
servername mt-daapd
runas daapd
extensions .mp3,.m4a,.m4p
logfile /var/log/mt-daapd.log


結果、あっさり起動。いい加減だなぁ。

同一ネットワーク上にあるクライアントマシンのiTunesを再起動すると、少しの時間を置いてから左ペインにmt-daapdが表示されます。わくわくしながらクリックすると・・

この共有された音楽ライブラリ"mt-daapd"はこのバージョンのiTunesと互換性がありません。
というエラー。・・・うーむ。

Google先生に聞いたところmt-dappdのバージョンによってはiTunes5に対応していないらしいので、portsを最新版にしてから再度mt-daapd(0.2.3)をインストール。

# wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
# tar zxvf ports.tar.gz -C /usr
# cd /usr/ports/audio/mt-daapd/
# make install


これで解決。iTunesからmp3_dirで指定したディレクトリ以下のmp3ファイルが見えるようになりました。
しかしこの段階だとまだファイルは文字化けしまくりです。
対策として、mt-daapd ShiftJIS/UTF-8両対応パッチを当ててインストールします。

まずlinuxthreadsを入れておく。(入れないとFreeBSDではmakeできませんでした)
# cd /usr/ports/devel/linuxthreads
# make install


portsにパッチを当てて強引に入れる。
# cd /usr/ports/audio/mt-daapd/
# wget http://ouchi.nahi.to/~kaidempa/mt-daapd/mt-daapd-0.2.1.1-cp932-3.patch
# make clean
# make extract
# cd work/mt-daapd-0.2.3/
# patch -p1 < ../../mt-daapd-0.2.1.1-cp932-3.patch
# ./configure --with-gdbm-includes=/usr/local/include --with-gdbm-libs=/usr/local/lib
# vi src/Makefile (LDFLAGSの行を以下のように変更)
LDFLAGS = -L/usr/local/lib -lgdbm -lid3tag -lz -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads -llthread -llgcc_r
# cd ../../
# make install


曲リストを再構築するためにsongs.gdbを削除
# rm /usr/local/var/mt-daapd/db/songs.gdb


再度起動する。
# /usr/local/etc/rc.d/mt-daapd.sh start


これでめでたくShift_JISのファイルがiTunesで見え・・・・・・ません。Σ(゚Д゚)
一部のファイルは見えるようになりますが、私のmp3ファイルの9割以上はこのパッチを当てても文字化けした状態でした。この辺はいろんな事情があるみたいですけども、いろいろ試してもうまくいかないのでID3タグを変換してしまうことに。

SuperTagEditor 改造版を用いてID3タグをUTF-8に変換します。

私の場合はID3v1.0のタグが多かったので、SuperTagEditor 改造版でmp3のあるフォルダを開いてから、
[変換] - [ID3v2形式に変換]でID3タグのバージョンを変えた後、ファイルの選択はそのまま [ID3v2のバージョン/文字コードの変換] - [文字エンコード] - [UTF-8]でエンコードをUTF-8に変換します。複数のファイル、複数のディレクトリを一括変換できるので便利。これでも変換できないものは一度別の形式に変換したりすると最終的にこの方法でうまくいきました。

結局パッチを当てた意味は全くなくなってしまいましたが、これで1000曲以上の全てのmp3ファイルがiTunesの共有プレイリストとして正常に読み込めるようになりました。Mac、Windowsの複数のマシンで共有できるので便利ですし、今後もいろいろと工夫できるので楽しそうです。


※追記(2006/04/03)
iTunesを6.0.4にupdateしたらdaapdが使えなくなっていました。mt-daapd 0.2.4でfixされています。
portsになっていないので、以下のように手動でいれました。もはやパッチは当てていません。

# wget http://jaist.dl.sourceforge.net/sourceforge/mt-daapd/mt-daapd-0.2.4.tar.gz
# tar zxvf mt-daapd-0.2.4.tar.gz
# ./configure --with-gdbm-includes=/usr/local/include --with-gdbm-libs=/usr/local/lib
# make
# make install
# /usr/local/sbin/mt-daapd -c /usr/local/etc/mt-daapd.conf

この記事へのトラックバックURL

http://app.blog.livedoor.jp/cpiblog00035/tb.cgi/50344796
この記事へのトラックバック
さて,大宮まで一気にぶっ飛ばそう. さて,ここからは自分も未体験のゾーンに入って
iTune Music Serverを作ろう (6)【スコスコ blog】at March 28, 2006 17:38
さて,大宮まで一気にぶっ飛ばそう. さて,ここからは自分も未体験のゾーンに入って
iTune Music Serverを作ろう (6)【スコスコ blog】at March 28, 2006 17:43
 さて,報告が遅くなったが,ついに動いた.ほとんどこちらの方のやり方でOKだ.た
FreeBSDでmt-daapd(iTuneミュージックサーバー)【スコスコ blog】at April 09, 2006 19:27
この記事へのコメント
5
こんにちわ
大変参考になりました.
ところで,FreeBSD 6.0でmt-daapd-0.2.3をportsから入れましたが,
実行すると.

> sudo /usr/local/etc/rc.d/mt-daapd.sh start
Password:
mt-daapd>

でプロンプトが出て終わってしまいます.どういうことなんでしょうね?
Posted by えうだ at March 28, 2006 16:23
はじめまして。コメント&トラックバックありがとうございます。
プロンプトが表示されているのではなく、正常起動した後「mt-daapd」という文字列が表示されて終了しているのだと思います。単に「mt-daapd」の後ろに改行がないだけですね。
私の環境での同じ現象が発生しますが、とくに問題はありません。

ちなみにこのエントリーに追記しましたが、portsから入れるとiTunes6.0.4で動かなくなります・・。
Posted by Monologue at April 03, 2006 06:36
5
こんにちわ,お世話になっております.上記の方法でばっちり動きました.
web rootは編集する必要ありませんでした.あと,./configureのオプションって必須ですかね?要はmt-daapdのバイナリが更新されればOKだと思うのですが,/usr/local/etc/rc.d/mt-daapd.shもそのままで動きました.
またこのような記事をよろしくお願いいたします.
Posted by えうだ at April 09, 2006 20:54
動いたとのこと、おめでとうございます。

私の環境では、configureオプションがないとmakeが通りませんでした。
ちなみに0.2.3から0.2.4へのアップデートは何となく気持ち悪いので、一度アンインストールしてから0.2.4を入れました。

↓アンインストール
# cd /usr/ports/audio/mt-daapd/
# make deinstall

ですが、えうださんのやり方で問題なく動くのであればこれは必要ないかと思います〜
Posted by Monologue at April 09, 2006 23:55
5
Monologueさん

お世話になっております.
今日,cvsupしたらmt-daapdが0.2.4になってました.
結構,早いですね.

以上連絡でした.
Posted by えうだ at April 15, 2006 21:50