mt-daapd/firefly †mt-daapd/firefly とは †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で自宅サーバー構築)
Debian/Lennyへのインストール †APT を使ってインストールするだけだが、なぜか素直に動かなかったので、メモを残しておく。 最初のエラー †mt-daapd のデバッグレベルを最大にしてフォアグランドで動かすと、以下のエラーで止まっていた。 # 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
Ellinikonblue.com Weblog - 2007/07/24 Firefly 導入記:トラブル解決編によると、avahi-daemon が動いていないせいらしい。mt-daapd をインストールした際に依存関係で avahi-daemon もインストールされたはずだが、なぜかデーモンが起動していなかった。 次のエラー †そこで、手動で avahi-daemon を立ち上げようとしたら、今度は次のようなエラーが出て、avahi-daemon は起動しなかった。 # /etc/init.d/avahi-daemon start Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon failed! # 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. どうも、dbus も動いていなかったらしい。手動で立ち上げたら、avahi-daemon, mt-daapd とも正常に起動するようになった。めでたし、めでたし。 syslog でのエラー出力 †syslog に以下のエラーメッセージが記録されるが、#543247 - mt-daapd: Crashes when trying to transcode .flac files - Debian Bug report logsによれば、このプラグインはあまり重要でないらしく、無視してよいそうだ。 Error loading plugin /usr/lib/mt-daapd/plugins/ssc-script.so: plugin declined to load Music ファイルのグループの変更 †mt-daapd グループを作成し、自分自身のアカウントと mt-daapd ユーザをこのグループに追加する。その後で、Music ファイルが存在するディレクトリ以下をグループにも書き込みを許可し、グループを mt-daapd に変更する。 Debian/Etchへのインストール †APTでインストールするだけ。ただし、以前に自前でビルドしたmt-daapdからの移行で少しトラぶったので、メモを残しておく。 # apt-get install mt-daapd
以前の環境からの移行 †以前はmt-daapdをdaapdユーザで実行していたが、Etchのパッケージではmt-daapdになっている。Sambaでのファイル共有との関係から、ユーザdaapdはdaapdグループに属して、音楽ファイルが保存されているディレクトリのグループをdaapdとして、グループに書き込み権を与えていた。このままでは opendir: Permission denied になるので、ユーザmt-daapdをdaapdグループに追加すればよい。 # vi /etc/group
daapdグループにmt-daapdを追加
ID3タグの文字化け問題 †自前ビルドではShift-JISで記述されたID3タグにも対応するパッチを当てていたので問題なかったが、Etch版では対応していない。apt-get sourceでソースコードを入手して日本語パッチを当てるか、MP3ファイルのID3タグをUnicodeに変換するかしなければいけない。手持ちのMP3ファイルの数はそれほど多くないので、この機会にID3タグを変換した。なかなかよさそうなツールが見つからなかったが、ID3TAG Editorを使った。LinuxならEasyTAG id3タグエディタが使えて一括変換も簡単にできそう。 変換が終わったら、いったんmt-daapdを止めてsong用キャッシュファイルを削除した後、mt-daapdを再起動する。 # /etc/init.d/mt-daapd stop # rm -f /var/cache/mt-daapd/songs3.db # /etc/init.d/mt-daapd start コピープロテクトのかかったCDの取り込み †タイで購入したCDにプロテクトがかかっていて、iTunesで取り込めなかったが、EAC(Exact Audio Copy)を使えば、簡単にMP3に変換できた。詳しくは、ここを参照のこと。 自前ビルド(Obsolete) †玄箱HGでmt-daapdを動かすが dpatchを使ったdebパッケージの作り方が解説してあり、一番参考になった。いくつかのサイトでは、howl(mDNSResponder )が必要と書いてあるが、最近のmt-daapdでは不要である。どうせすぐにインストールに仕方を忘れるから、備忘録として手順を書いておく。 debパッケージ作成マシンでの準備 †(ほとんど、玄箱HGでmt-daapdを動かすと同じ。) mt-daapdのdebパッケージ作成に必要なパッケージをインストールしておく。 # apt-get install libid3tag0-dev libgdbm-dev zlib1g-dev 玄箱HGでコンパイルをしたことがない場合は次のパッケージもインストールする。 # apt-get install build-essential fakeroot devscripts mt-daapdプロジェクトのサイトよりTar ballをダウンロードする。(ちなみに、mt-daapd projectは、現在Firefly Media Server projectに名称変更している。) $ wget http://jaist.dl.sourceforge.net/sourceforge/mt-daapd/mt-daapd-0.2.4.tar.gz 適当なディレクトリでmt-daapd-0.2.x.tar.gzを展開する。 $ cd working_directory $ tar zxvf mt-daapd-0.2.4.tar.gz $ cd mt-daapd-0.2.4 mt-daapdに日本語パッチを当てる †mt-daapdはmp3のID3タグやスマートプレイリストにShiftJISを使うと文字化けするので、日本語対応パッチを当てる。 iTunesサーバ(mt-daapd)日本語スマートプレイリスト対応パッチのサイトよりパッチをダウンロードする。 $ wget http://www.kzsoft.to/~kazu/mt-daapd/patch/mt-daapd-0.2.4-cp932.patch debパッケージ作成にdpatchを利用する場合は、次のパッケージをインストールする。dpatchの使い方は、このサイトを参照のこと。 # apt-get install dpatch patchutils dpatchを利用するため、いくつかのファイルを編集する。 Build-depends: debhelper (>= 4.0.0), libid3tag0-dev, libgdbm-dev, zlib1g-dev, dpatch
debian/rulesの以下の部分を追加 ... #export DH_VERBOSE=1 include /usr/share/dpatch/dpatch.make ... build-stamp: patch-stamp config.status dh_testdir ... clean: unpatch <-- clean: と同じ行に挿入すること。これでだいぶはまった。) dh_testdir ... ダウンロードしたパッチを新しいパッチとして取り込む。 $ dpatch-edit-patch 01_cp932-1 /tmpディレクトリの適当なところで作業が行われるので、パッチファイルは絶対指定したほうがよい(?) $ patch -p1 < /working_direcotory/mt-daapd-0.2.1.1-cp932-3.patch $ exit debian/patches/01_cp932-1.dpatchファイル&ref(): File not found: "01_cp932-1.dpatch" at page "mt-daapd/firefly";が作成される。 01_cp932-1 mt-daapdのコンパイル †debchangeはchangelogしか読み込まないため,ChangeLog?をchangelogと小文字にリネームする。リネームしてもスペース1つの違いのためにdebchangeが利用できないので編集する。 $ 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つにします。 )
変更をdebian/changelogに追加する。unstable,urgencyは適宜変更する。 $ debchange -i 今回のVersionを入力できるので、例えば以下のように入力する。 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 パッケージをコンパイルする。 $ dpkg-buildpackage -us -uc -rfakeroot 1つ上のディレクトリにパッケージ群が作成される。 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 パッケージをインストールする。 $ su # dpkg -i ../mt-daapd_0.2.4-1.echigoya_powerpc.deb mt-daapdの設定 †/etc/mt-daapd.confを編集する。 mp3_dir /home/share/music # 共有する音楽ファイルのディレクトリ ... servername MusicBox? # iTuneで参照するサーバ名 ... runas daapd # mt-daapdを起動するユーザ名 ... rescan_interval 300 %t;# 5分ごとに更新 mt-daapd用にユーザdaapdとグループdaapdを作成する。(mp3_dirで指定したディレクトリにファイルを入れてもプレイリストに出てこなかったので、ディレクトリの所有者を自分にし、グループdaapdにも書き込み権を与えたところ、コピーしたファイルがプレイリストに反映されるようになった。この辺りは理解できていないので、要調査。) # useradd -u 3689 -g 3689 -d /home/share/music -c "mt-daapd server admin" daapd # vi /etc/group daapdに自分のアカウントとdaapdを追加 mt-daapdを起動する。パッチなし版を利用していた場合はタグ情報のキャッシュを削除する。 # rm /var/cache/mt-daapd/songs.gdb # /etc/init.d/mt-daapd start このままでは起動時に自動的にmt-daapdは起動しません。update-rc.dコマンドにて自動起動するように設定します。 # update-rc.d mt-daapd defaults 自動起動しないように戻します。 # update-rc.d mt-daapd remove http://mt-daapdが動いているサーバのIP:3689にアクセスすると、Web上で現在の状態やプレイリストの更新が行える。 |