mt-daapd にパッチをあててインストール

mt-daapd のソースをダウンロードしてきて展開、パッチの修正を手で加える。

[paraches@centos myTemp]$ wget http://nightlies.fireflymediaserver.org/nightlies/svn-1696/mt-daapd-svn-1696.tar.gz
[paraches@centos myTemp]$ tar zxvf mt-daapd-svn-1696.tar.gz 
[paraches@centos myTemp]$ cd mt-daapd-svn-1696
[paraches@centos mt-daapd-svn-1696]$ ls
AUTHORS    INSTALL      README      config.guess  configure.in  ltmain.sh
COPYING    Makefile.am  TODO        config.h.in   contrib       m4
CREDITS    Makefile.in  aclocal.m4  config.sub    depcomp       missing
ChangeLog  NEWS         admin-root  configure     install-sh    src
[paraches@centos mt-daapd-svn-1696]$ 

で、パッチの内容はこんな感じ。

#! /bin/sh /usr/share/dpatch/dpatch-run
## 13_itunes10.dpatch by  <maarten@informaarten.nl>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Add aeMK to items-query to fix incompatibility issue with iTunes 10

@DPATCH@
diff -urNad mt-daapd-0.9~r1696.dfsg~/src/plugins/out-daap-proto.c mt-daapd-0.9~r1696.dfsg/src/plugins/out-daap-proto.c
--- mt-daapd-0.9~r1696.dfsg~/src/plugins/out-daap-proto.c   2007-08-10 06:07:23.000000000 +0200
+++ mt-daapd-0.9~r1696.dfsg/src/plugins/out-daap-proto.c    2010-09-08 01:01:22.000000000 +0200
--- mt-daapd-0.9~r1696.dfsg~/src/plugins/out-daap-proto.c   2007-08-10 06:07:23.000000000 +0200
+++ mt-daapd-0.9~r1696.dfsg/src/plugins/out-daap-proto.c    2010-09-08 01:01:22.000000000 +0200
@@ -582,6 +582,7 @@
          */
 
         size = 8; /* mlit */
+        size += 9; /* aeMK for iTunes 10 */
         if(daap_wantsmeta(pinfo->meta, metaItemKind))
             /* mikd */
             size += 9;
@@ -777,6 +778,7 @@
         if(daap_wantsmeta(pinfo->meta, metaSongDataKind))
             current += dmap_add_char(current,"asdk",
                                         (char)atoi(valarray[SG_DATA_KIND]));
+        current += dmap_add_char(current,"aeMK",(char)0x1); // FIX for iTunes 10; 1 = Music
         if(EMIT(valarray[13]) && daap_wantsmeta(pinfo->meta, metaSongDataURL))
             current += dmap_add_string(current,"asul",valarray[SG_URL]);
         if(EMIT(valarray[5]) && daap_wantsmeta(pinfo->meta, metaSongAlbum))

src/plugins/out-daap-proto.c の 584行目の後ろと789行目の後ろに、パッチの行頭に「+」がある行を加えれば良い。簡単なので vi 使って手で修正。修正後のファイルはコレ(out-daap-proto.c 直)。

で、準備が整ったのでサクっと configure。

[paraches@centos mt-daapd-svn-1696]$ ./configure 
<省略>
Must use either --enable-sqlite or --enable-sqlite3
[paraches@centos mt-daapd-svn-1696]$ 

怒られた。--enable-sqlite3 としなきゃダメ。

[paraches@centos mt-daapd-svn-1696]$ ./configure --enable-sqlite3
[paraches@centos mt-daapd-svn-1696]$ 

今度は無事終了。
それじゃ、make & make install にトライ。

[paraches@centos mt-daapd-svn-1696]$ make
[paraches@centos mt-daapd-svn-1696]$ sudo make install
[paraches@centos mt-daapd-svn-1696]$ 

とりあえず、なんとか最後まで来た!!!

けど、設定は???
/usr/local/etc に必要なんだけど、実際にはコピーされてない。

[paraches@centos plugins]$ ls /usr/local/etc
netatalk
[paraches@centos plugins]$ 

手作業なのかな? contrib の中にあるファイルをコピーしろという事? 設定ファイルは contrib フォルダに入っているので…

[paraches@centos contrib]$ ls
Makefile     Makefile.in  init.d           mt-daapd-ssc.sh  mt-daapd.conf.templ
Makefile.am  README       mt-daapd-ssc.pl  mt-daapd.conf    mt-daapd.spec
[paraches@centos contrib]$ 

まずは mt-daapd.conf をコピー

[paraches@centos contrib]$ sudo cp mt-daapd.conf /usr/local/etc/
[paraches@centos contrib]$ ls /usr/local/etc/
mt-daapd.conf  netatalk
[paraches@centos contrib]$ 

設定は今まで debian のサーバで使ってたのと基本的に同じにしといた。
曲データやデータベースを置く場所のパーミションに注意しないと起動しなかったり、起動しても曲が見えなかったりする。設定ファイルで log を有効にしておけば、/var/log/mt-daapd.log で見られる。因に曲データを置いておいたフォルダへのアクセス権が無いとこんな感じのログが…。

2010-09-24 23:42:05 (61cfd3ca): Firefly Version svn-1696: Starting with debuglevel 2
2010-09-24 23:42:05 (61cfd3ca): Plugin loaded: rsp/svn-1696
2010-09-24 23:42:05 (61cfd3ca): Plugin loaded: daap/svn-1696
2010-09-24 23:42:05 (61cfd3ca): Plugin loaded: ssc-script/svn-1696
2010-09-24 23:42:05 (61cfd3ca): Starting rendezvous daemon
2010-09-24 23:42:05 (61cfd3ca): Starting signal handler
2010-09-24 23:42:05 (61cfd3ca): Initializing database
2010-09-24 23:42:05 (61cfd3ca): Full reload...
2010-09-24 23:42:06 (61cfd3ca): Starting mp3 scan
2010-09-24 23:42:06 (61cfd3ca): opendir: Permission denied
2010-09-24 23:42:06 (61cfd3ca): Starting playlist scan
2010-09-24 23:42:06 (61cfd3ca): Local Hostname centos.parapara.com.local already in use; will trycentos-2arapara.com.local instead
2010-09-24 23:42:06 (61cfd3ca): Updating playlists
2010-09-24 23:42:06 (61cfd3ca): Error scanning MP3 files: No such file or directory
2010-09-24 23:42:06 (61cfd3ca): Scanned 0 songs in 0 seconds
2010-09-24 23:42:06 (61cfd3ca): Starting web server from /usr/local/share/mt-daapd/admin-root on port 3689
2010-09-24 23:42:06 (61cfd3ca): Registering rendezvous names
2010-09-24 23:42:06 (61cfd3ca): Serving 0 songs.  Startup complete in 0 seconds

次は /etc/init.d/mt-daapd だけど、contrib フォルダの README には

mt-daapd..............: an init.d script, suitable for redhat
mt-daapd-gentoo.......: an init.d script, suitable for gentoo

ってあるのに、実際にあるのは

[paraches@centos contrib]$ ls init.d/
Makefile     mt-daapd-fedora        mt-daapd-suse.templ
Makefile.am  mt-daapd-fedora.templ  mtdaapd-bsd
Makefile.in  mt-daapd-suse          mtdaapd-bsd.templ
[paraches@centos contrib]$ 

う〜ん、ここにあると思ったのだけど…???
とりあえず、mt-daapd-fedora を /etc/init.d/ へコピー

[paraches@centos init.d]$ sudo cp mt-daapd-fedora /etc/init.d/mt-daapd
[paraches@centos init.d]$ 

これで /etc/init.d/mt-daapd start とすれば mt-daapd が起動する様になった。