* mt-daapd/firefly [#v9ddb903]
#contents
* mt-daapd/firefly とは [#wa43a18a]
Tunes対応のストリーミングサーバサービス。以前はmt-daapdと呼ばれていたが、現在はfireflyに名称が変更されている。英会話勉強用と称して急にiPodが欲しくなったんで、podcast用データや音楽ファイル管理用に偽玄箱でDAAPサーバを立ち上げた。「玄箱 iTunes」でググるとたくさんサイトが引っかかる。Debian Sargeにはパッケージがなかったので日本語パッチを当てて自前ビルドしたが、Etchにはパッケージが用意されたので、そちらに移行した。(2007-10-20)
(2009-11-07: 自宅データサーバを偽玄箱からDebian Lennyをインストールした TeraStation Proに変更した。)
fireflyでは、文字化け問題は iTunes で文字化けする曲を取り込み、「ID3タグを変換」→「ID3タグバージョン」にチェック、「v2.4」以上を選択して「OK」ボタン押下し、Fireflyサーバーで曲を再読込み後、iTunesでFireflyサーバーへ再接続すればよい。(情報源:[[DAAPサーバー構築(Firefly) - CentOSで自宅サーバー構築>http://centossrv.com/firefly.shtml]])
- [[本家>http://www.fireflymediaserver.org/]]
- iTunesと類似のソフトウェア(Amarok)
-- [[ITmedia エンタープライズ:Amarokを使った快適ミュージック管理 (1/3)>http://www.itmedia.co.jp/enterprise/articles/0701/29/news049.html]]
-- [[【レビュー】Linux/BSDで使える! iTunes型多目的オーディオプレーヤ「Amarok」 (1) マッシュアップ機能を持つオーディオプレーヤ | エンタープライズ | マイコミジャーナル>http://journal.mycom.co.jp/articles/2007/08/04/amarok/index.html]]
-- [[メディアプレーヤー amaroK をインストール>http://www.geocities.jp/code_air_edge/HP/amarok.html]]
- [[…started with 6502. :: Entries :: mt-daapd 0.2.4.2 日本語パッチ インストール>http://6502.msdj.com/archives/38]]
- [[UTF-8/CP932 両対応 mt-daapd の作成とインストール - 電波日記@はてな>http://d.hatena.ne.jp/tossy-2/20090127/1233071230]]
* Debian/Lennyへのインストール [#x4f1835a]
APT を使ってインストールするだけだが、なぜか素直に動かなかったので、メモを残しておく。
** 最初のエラー [#uf53c9e5]
mt-daapd のデバッグレベルを最大にしてフォアグランドで動かすと、以下のエラーで止まっていた。
<pre>
# &color(blue){mt-daapd -f -d 9};
Loading config file /etc/mt-daapd.conf
Opening file:///etc/mt-daapd.conf?ascii=1
Checking handler for file
opening /etc/mt-daapd.conf
Config file open
Starting rendezvous daemon
Initializing avahi
mt-daapd: client.c:776: avahi_client_errno: Assertion `client' failed.
Aborted
</pre>
[[Ellinikonblue.com Weblog - 2007/07/24 Firefly 導入記:トラブル解決編>http://www.ellinikonblue.com/blosxom/2007/07/24/]]によると、avahi-daemon が動いていないせいらしい。mt-daapd をインストールした際に依存関係で avahi-daemon もインストールされたはずだが、なぜかデーモンが起動していなかった。
** 次のエラー [#uc8584f5]
そこで、手動で avahi-daemon を立ち上げようとしたら、今度は次のようなエラーが出て、avahi-daemon は起動しなかった。
<pre>
# &color(blue){/etc/init.d/avahi-daemon start};
Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon failed!
# &color(blue){tail /var/log/syslog};
Nov 7 10:44:56 tspro2 avahi-daemon[8085]: Found user 'avahi' (UID 106) and group 'avahi' (GID 108).
Nov 7 10:44:56 tspro2 avahi-daemon[8085]: Successfully dropped root privileges.
Nov 7 10:44:56 tspro2 avahi-daemon[8085]: avahi-daemon 0.6.23 starting up.
Nov 7 10:44:56 tspro2 avahi-daemon[8085]: dbus_bus_get_private(): Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Nov 7 10:44:56 tspro2 avahi-daemon[8085]: WARNING: Failed to contact D-Bus daemon.
</pre>
どうも、dbus も動いていなかったらしい。手動で立ち上げたら、avahi-daemon, mt-daapd とも正常に起動するようになった。めでたし、めでたし。
** syslog でのエラー出力 [#ve974045]
syslog に以下のエラーメッセージが記録されるが、[[#543247 - mt-daapd: Crashes when trying to transcode .flac files - Debian Bug report logs>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543247]]によれば、このプラグインはあまり重要でないらしく、無視してよいそうだ。
<pre>
Error loading plugin /usr/lib/mt-daapd/plugins/ssc-script.so: plugin declined to load
</pre>
** Music ファイルのグループの変更 [#m732bf61]
mt-daapd グループを作成し、自分自身のアカウントと mt-daapd ユーザをこのグループに追加する。その後で、Music ファイルが存在するディレクトリ以下をグループにも書き込みを許可し、グループを mt-daapd に変更する。
* Debian/Etchへのインストール [#fc3334bb]
APTでインストールするだけ。ただし、以前に自前でビルドしたmt-daapdからの移行で少しトラぶったので、メモを残しておく。
<pre>
# &color(blue){apt-get install mt-daapd};
</pre>
** 以前の環境からの移行 [#rb83f932]
以前はmt-daapdをdaapdユーザで実行していたが、Etchのパッケージではmt-daapdになっている。Sambaでのファイル共有との関係から、ユーザdaapdはdaapdグループに属して、音楽ファイルが保存されているディレクトリのグループをdaapdとして、グループに書き込み権を与えていた。このままでは opendir: Permission denied になるので、ユーザmt-daapdをdaapdグループに追加すればよい。
<pre>
# &color(blue){vi /etc/group};
daapdグループにmt-daapdを追加
</pre>
** ID3タグの文字化け問題 [#v2187ee5]
自前ビルドではShift-JISで記述されたID3タグにも対応するパッチを当てていたので問題なかったが、Etch版では対応していない。apt-get sourceでソースコードを入手して日本語パッチを当てるか、MP3ファイルのID3タグをUnicodeに変換するかしなければいけない。手持ちのMP3ファイルの数はそれほど多くないので、この機会にID3タグを変換した。なかなかよさそうなツールが見つからなかったが、[[ID3TAG Editor>http://www.geocities.jp/marimo_sky/program.html]]を使った。Linuxなら[[EasyTAG id3タグエディタ>http://linuxos.blog102.fc2.com/blog-entry-15.html]]が使えて一括変換も簡単にできそう。
変換が終わったら、いったんmt-daapdを止めてsong用キャッシュファイルを削除した後、mt-daapdを再起動する。
<pre>
# &color(blue){/etc/init.d/mt-daapd stop};
# &color(blue){rm -f /var/cache/mt-daapd/songs3.db};
# &color(blue){/etc/init.d/mt-daapd start};
</pre>
** コピープロテクトのかかったCDの取り込み [#bda6aa4c]
タイで購入したCDにプロテクトがかかっていて、iTunesで取り込めなかったが、EAC(Exact Audio Copy)を使えば、簡単にMP3に変換できた。詳しくは、[[ここ>http://musicpc.fc2web.com/index.htm]]を参照のこと。
* 自前ビルド(Obsolete) [#s8c936ac]
[[玄箱HGでmt-daapdを動かす>http://tsstudio.s12.xrea.com/unix/mtdaapd.html]]が
dpatchを使ったdebパッケージの作り方が解説してあり、一番参考になった。いくつかのサイトでは、howl(mDNSResponder )が必要と書いてあるが、最近のmt-daapdでは不要である。どうせすぐにインストールに仕方を忘れるから、備忘録として手順を書いておく。
** debパッケージ作成マシンでの準備 [#i817a71e]
(ほとんど、[[玄箱HGでmt-daapdを動かす>http://tsstudio.s12.xrea.com/unix/mtdaapd.html]]と同じ。)
mt-daapdのdebパッケージ作成に必要なパッケージをインストールしておく。
<pre>
# apt-get install libid3tag0-dev libgdbm-dev zlib1g-dev
</pre>
玄箱HGでコンパイルをしたことがない場合は次のパッケージもインストールする。
<pre>
# apt-get install build-essential fakeroot devscripts
</pre>
[[mt-daapdプロジェクトのサイト>http://sourceforge.net/projects/mt-daapd/]]よりTar ballをダウンロードする。(ちなみに、mt-daapd projectは、現在[[Firefly Media Server project>http://fireflymediaserver.org/index.php]]に名称変更している。)
<pre>
$ wget http://jaist.dl.sourceforge.net/sourceforge/mt-daapd/mt-daapd-0.2.4.tar.gz
</pre>
適当なディレクトリでmt-daapd-0.2.x.tar.gzを展開する。
<pre>
$ cd working_directory
$ tar zxvf mt-daapd-0.2.4.tar.gz
$ cd mt-daapd-0.2.4
</pre>
*** mt-daapdに日本語パッチを当てる [#w059455e]
mt-daapdはmp3のID3タグやスマートプレイリストにShiftJISを使うと文字化けするので、日本語対応パッチを当てる。
[[iTunesサーバ(mt-daapd)日本語スマートプレイリスト対応パッチのサイト>http://www.kzsoft.to/~kazu/mt-daapd/]]よりパッチをダウンロードする。~
[0.2.4用パッチ]&ref(mt-daapd-0.2.4-cp932.patch);
<pre>
$ wget http://www.kzsoft.to/~kazu/mt-daapd/patch/mt-daapd-0.2.4-cp932.patch
</pre>
debパッケージ作成にdpatchを利用する場合は、次のパッケージをインストールする。dpatchの使い方は、[[このサイト>http://www.netfort.gr.jp/~dancer/column/dpatch.html.ja]]を参照のこと。
<pre>
# apt-get install dpatch patchutils
</pre>
dpatchを利用するため、いくつかのファイルを編集する。~
&br;
''debian/control''の以下の部分を追加
<pre>
Build-depends: debhelper (>= 4.0.0), libid3tag0-dev, libgdbm-dev, zlib1g-dev, &color(red){dpatch};
</pre>
''debian/rules''の以下の部分を追加
<pre>
...
#export DH_VERBOSE=1
&color(red){include /usr/share/dpatch/dpatch.make};
...
build-stamp: &color(red){patch-stamp}; config.status
dh_testdir
...
clean: &color(red){unpatch}; &color(blue){<-- clean: と同じ行に挿入すること。これでだいぶはまった。)};
dh_testdir
...
</pre>
ダウンロードしたパッチを新しいパッチとして取り込む。
<pre>
$ dpatch-edit-patch 01_cp932-1
/tmpディレクトリの適当なところで作業が行われるので、パッチファイルは絶対指定したほうがよい(?)
$ patch -p1 < /working_direcotory/mt-daapd-0.2.1.1-cp932-3.patch
$ exit
</pre>
debian/patches/01_cp932-1.dpatchファイル&ref(01_cp932-1.dpatch);が作成される。~
&br;
''debian/patches/00list''に以下を追加する。
<pre>
01_cp932-1
</pre>
**mt-daapdのコンパイル [#mfc14cd4]
debchangeはchangelogしか読み込まないため,ChangeLogをchangelogと小文字にリネームする。リネームしてもスペース1つの違いのためにdebchangeが利用できないので編集する。
<pre>
$ mv debian/ChangeLog debian/changelog <-ファイル名を変更
$ vi debian/changelog
...
mt-daapd (0.2.4-1) unstable; urgency=low
* Fix for iTunes 6.0.4 [#dea4e730]
-- Ron Pedde <ron @ pedde.com>__Wed, 1 Mar 2006 18:48:00 -0600
(__の部分は元々半角空白が1つですが,2つにします。 )
</pre>
変更をdebian/changelogに追加する。unstable,urgencyは適宜変更する。
<pre>
$ debchange -i
</pre>
今回のVersionを入力できるので、例えば以下のように入力する。
<pre>
mt-daapd (0.2.4-1.echigoya) stable; urgency=low
* Added CP932 patch
-- Ryoei Ito <itou-r@hglan> Thu, 23 Nov 2006 20:48:31 +0900
</pre>
パッケージをコンパイルする。
<pre>
$ dpkg-buildpackage -us -uc -rfakeroot
</pre>
1つ上のディレクトリにパッケージ群が作成される。
<pre>
mt-daapd_0.2.4-1.echigoya.dsc
mt-daapd_0.2.4-1.echigoya.tar.gz
mt-daapd_0.2.4-1.echigoya_powerpc.changes
mt-daapd_0.2.4-1.echigoya_powerpc.deb
</pre>
パッケージをインストールする。
<pre>
$ su
# dpkg -i ../mt-daapd_0.2.4-1.echigoya_powerpc.deb
</pre>
** mt-daapdの設定 [#z8f623cb]
/etc/mt-daapd.confを編集する。
<pre>
&color(blue){mp3_dir /home/share/music}; # 共有する音楽ファイルのディレクトリ
...
&color(blue){servername MusicBox}; # iTuneで参照するサーバ名
...
&color(blue){runas daapd}; # mt-daapdを起動するユーザ名
...
&color(blue){rescan_interval 300}; %t;# 5分ごとに更新
</pre>
mt-daapd用にユーザdaapdとグループdaapdを作成する。(mp3_dirで指定したディレクトリにファイルを入れてもプレイリストに出てこなかったので、ディレクトリの所有者を自分にし、グループdaapdにも書き込み権を与えたところ、コピーしたファイルがプレイリストに反映されるようになった。この辺りは理解できていないので、要調査。)
<pre>
# useradd -u 3689 -g 3689 -d /home/share/music -c "mt-daapd server admin" daapd
# vi /etc/group
daapdに自分のアカウントとdaapdを追加
</pre>
mt-daapdを起動する。パッチなし版を利用していた場合はタグ情報のキャッシュを削除する。
<pre>
# rm /var/cache/mt-daapd/songs.gdb
# /etc/init.d/mt-daapd start
</pre>
このままでは起動時に自動的にmt-daapdは起動しません。update-rc.dコマンドにて自動起動するように設定します。
<pre>
# update-rc.d mt-daapd defaults
</pre>
自動起動しないように戻します。
<pre>
# update-rc.d mt-daapd remove
</pre>
http://mt-daapdが動いているサーバのIP:3689にアクセスすると、Web上で現在の状態やプレイリストの更新が行える。~
なお、iTunesにはDAAPサーバ上の音楽ファイルが表示され、再生できるようになるが、著作権の関係でこれを直接iPodには転送できない。いったんSambaのファイル共有で音楽ファイルをiTunesに認識させてライブラリに追加した後、iPodに転送する手順になる。詳しくは、ここを参照。