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)日本語スマートプレイリスト対応パッチのサイトよりパッチをダウンロードする。
[0.2.4用パッチ]filemt-daapd-0.2.4-cp932.patch

$ 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を利用するため、いくつかのファイルを編集する。

debian/controlの以下の部分を追加

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";が作成される。

debian/patches/00listに以下を追加する。

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上で現在の状態やプレイリストの更新が行える。
なお、iTunesにはDAAPサーバ上の音楽ファイルが表示され、再生できるようになるが、著作権の関係でこれを直接iPodには転送できない。いったんSambaのファイル共有で音楽ファイルをiTunesに認識させてライブラリに追加した後、iPodに転送する手順になる。詳しくは、ここを参照。


添付ファイル: filemt-daapd-0.2.4-cp932.patch 1766件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-07 (土) 11:38:17 (3424d)