iTuneServerを構築して音楽共有

気分がのらないけど、
どうしてもやっつけなくてはならない仕事(あんまり頭使わなくていいやつ)は
音楽聴きながらだーっとやる。

てなときにはiTunes立ち上げてるんですが、

  • ノートPCでディスク容量も少ないためでかい音楽データはおきたくない。
  • 同じネットワーク内で共有できたらいいよね。

ということで、あいてる開発サーバにiTuneServerを立てることにしました。


CentOS4.3にいれてみた。

howlインストール

http://www.porchdogsoft.com/products/howl/download.html

# wget http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz
# tar xzvf howl-1.0.0.tar.gz
# cd ./howl-1.0.0
# ./configure
# make
# make install

zlibインストール

※最初から入っていたので今回はやってない。

# cd /usr/lcoal/src
# wget http://www.gzip.org/zlib/zlib-1.2.1.tar.gz
# tar zxvf zlib-1.2.1.tar.gz
# cd zlib-1.2.1
# ./configure
# make 
# make install

libid3tagインストール

ID3タグ関連のライブラリらしい。いれるときに上のzlibが必要らしい。

# cd /usr/lcoal/src
# wget prdownloads.sourceforge.net/mad/libid3tag-0.15.1b.tar.gz?download
# tar zxvf libid3tag-0.15.1b.tar.gz
# cd libid3tag-0.15.1b
# ./configure
# make
# make install

ライブラリをシステムに認識させる。

# vi /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib

#以下追加。
/usr/local/lib
# ldconfig -v


ところでldconfigってなんだろ。。。



ldconfigは、動的リンカ(/lib/ld.so)による実行時の結合関係を設定する。
共有ライブラリ(/lib,/usr/libなど)に対して必要なリンクを作成。
上記から実行時の動的リンカの設定をこのldconfigコマンドで設定する。ということが読み取れる。
対象となるディレクトリを/etc/ld.so.configに記述する。通常は/etc/ld.so.confと/lib, /usr/libが対象。



./configureを実行して環境設定を行う際に、次のようなエラーメッセージが表示されることがある。
$ ./configure
(省略)
checking for XINE-LIB version >= 0.9.9... no
*** Could not run XINE test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding XINE or finding the wrong
*** version of XINE. If it is not finding XINE, you'll need to set your
*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point
*** to the installed location Also, make sure you have run ldconfig if that
*** is required on your system
***
*** If you have an old version installed, it is best to remove it, although
*** you may also be able to get things to work by modifying LD_LIBRARY_PATH
***
configure: error: *** You should install xine-lib first ***


これは、必要なライブラリがインストールされていないか、
インストールしたライブラリがシステムに認識されていないときに発生する。
もし、ライブラリをインストールしていない場合は、必要なライブラリをインストールする。

設定ファイルは以下。
/etc/ld.so.conf


なるほどー。

mt-daapdのインストール

http://www.mt-daapd.org/
いまはfireflyという名前になってるみたい。
http://www.fireflymediaserver.org/
http://sourceforge.net/project/showfiles.php?group_id=98211&package_id=105189

# cd /usr/local/src
# wget http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.4.2.tar.gz?modtime=1208618689&big_mirror=0
# tar xzvf mt-daapd-0.2.4.2.tar.gz
# cd mt-daapd-0.2.4.2
# ./configure
# make
# make install

/usr/local/sbin/mt-daapd にインストールされた。

# cp contrib/mt-daapd /etc/init.d/
# cp contrib/mt-daapd.conf /etc/
# cp contrib/mt-daapd.playlist /etc/

mt-daapdの起動スクリプトファイルが少し間違っているので修正。

[ -e /etc/daapd.conf ]
の行を
[ -e /etc/init.d/mt-daapd.conf ]
に修正。


daemon mt-daapd
となっているところを
daemon /usr/local/sbin/mt-daapd
に修正。

キャッシュの場所確保

# mkdir /var/cache/mt-daapd
# touch /var/cache/mt-daapd/songs.gdb

AACとかMP3おくための場所確保
曲をアップするユーザもついでに作った。

# /usr/sbin/adduser itunes
# passwd itunes
# mkdir /home/itunes/music
# chown itunes.itunes  /home/itunes/music 


参考にさせていただき、設定ファイルに設定を書いた。
mt-daapd によるiTune Serverの構築

# vi /etc/mt-daapd.conf

#管理画面のドキュメントルート
/usr/local/share/mt-daapd/admin-root

#音楽ファイル格納ディレクトリ
mp3_dir         /home/itunes/music

#管理者パスワード
admin_pw        xxxxxxxx

#itunesサーバ名
servername      iTune Server

#ログファイル。
logfile /var/log/mt-daapd.log


# ライブラリ内に追加/削除されたファイルを自動でスキャンするインターバル
# デフォルトではファイルが追加されても自動で更新してくれない
# 管理画面(Webブラウザ)からその都度、ライブラリを更新することもできる
rescan_interval 300

自動起動設定。

# chkconfig mt-daapd on
# /sbin/chkconfig --list mt-daapd

いざ起動。

# /etc/init.d/mt-daapd start
Starting DAAP server:                                      [  OK  ]

ログ見てみるとしっぱしいてるっぽい。

# cat /var/log/mt-daapd.log 
2008-05-20 18:57:20: Starting rendezvous daemon
2008-05-20 18:57:20: Starting signal handler
2008-05-20 18:57:21: Loading playlists
2008-05-20 18:57:21: Initializing database
2008-05-20 18:57:21: Starting mp3 scan
2008-05-20 18:57:21: Error scanning MP3 files: Permission denied
2008-05-20 18:57:21: Aborting
2008-05-20 18:57:21: Rendezvous socket closed (daap server crashed?) Aborting.
2008-05-20 18:57:21: Aborting

おっとパーミッションがねー。

#chmod 755 /home/itunes
# /etc/init.d/mt-daapd stop
# /etc/init.d/mt-daapd start

# cat /var/log/mt-daapd.log 
2008-05-20 19:01:24: Starting rendezvous daemon
2008-05-20 19:01:24: Starting signal handler
2008-05-20 19:01:25: Loading playlists
2008-05-20 19:01:25: Initializing database
2008-05-20 19:01:25: Starting mp3 scan
2008-05-20 19:01:25: Starting web server from /usr/local/share/mt-daapd/admin-root on port 3689
2008-05-20 19:01:25: Registering rendezvous names
2008-05-20 19:01:25: Scanned 0 songs in  1 seconds



# /usr/sbin/lsof -i:3689
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE NODE NAME
mt-daapd 7321 nobody    4u  IPv4 10038556       TCP *:3689 (LISTEN)

うごいた。

ポートあける。

# /sbin/iptables -I RH-Firewall-1-INPUT 12 -p tcp -m state --state NEW -m tcp --dport 3689 -j ACCEPT
# /etc/init.d/iptables save
# /etc/init.d/iptables restart
# /sbin/iptables -L -v

管理サーバアクセスしてみる。
http://xxxxxx.com:3689/
ユーザはadmin、パスワードは/etc/mt-daapd.confで設定したパスワード。

おおおー。
statusのタブで、曲のスキャンを手動で開始したり
接続中のユーザがどの曲再生しているか知ることができる。

しかし、曲名が激しく文字化け。。。

調べてみると、mt-daapd ShiftJIS/UTF-8両対応パッチ、src.rpmを公開されている方がいた。
404 Not Found

# wget http://ouchi.nahi.to/~kaidempa/mt-daapd/mt-daapd-0.2.4-1j1.src.rpm
# rpm -i mt-daapd-0.2.4-1j1.src.rpm

src.rpmってなんだろ?
調べてみた。


rpmで指定(-i)をすると,「/usr/src/redhat/」ディレクトリ下に該当ファイルがインストールされる。
このディレクトリ下には次のようなサブディレクトリがあり,それぞれの目的別に分類される。

# cd /usr/src/redhat
# ls
BUILD RPMS SOURCES SPECS SRPMS

■BUILD
最終的にRPMパッケージを作成する際に使用される。
例えば,パッケージ作成(ビルド)途中にエラーが生じた場合には,
このBUILD/下にあるファイルで状況判断ができる


■RPMS
BUILD/下で生成されるファイルにエラーが無かった場合,
このディレクトリ下にあるi386/,i686/,noarch/に最終的なパッケージが作成される。
この際,下に挙げるspecファイルに従った条件になる


■SOURCES
RPMパッケージを生成するためのソースファイルを置いておく。
上記のようにrpm -i apache-1.3.22-2.src.rpmでインストールをすると,specファイル以外はここに含まれる

■SPECS
RPMパッケージをどのようなディレクトリ先,アンインストールを行う際の振る舞いなど,
すべての動きを記述するファイルspecが置かれる


■SRPMS
RPMSディレクトリ下に正常にパッケージが生成されると,このディレクトリ下にはsrc.rpmパッケージが作成される


なるほどー。

# cat /usr/src/redhat/SPECS/mt-daapd.spec

でみてみると、./configureとか、インストールのコマンドが書いてある。

んでやってみる。
いったんとめる

# /etc/init.d/mt-daapd stop
# rpm --rebuild /usr/src/redhat/SPECS/mt-daapd.spec
--rebuild: unknown option

できない。。。しらべてみるとあった。



rpm自身のVersionによって違います。

No.15967 投稿時間:2004年05月14日(Fri) 16:04 投稿者名:ハル URL:

rpm自身のVersionによって違います。
3.xまででしたら
rpm --rebuild ・・・
4.x以降は
rpmbuild --rebuild
となります。
間違えやすいですよね。


なるほどー。

# rpm --version
RPM バージョン 4.3.3

ということで、

# rpmbuild --rebuild /usr/src/redhat/SPECS/mt-daapd.spec

うーんよくわからない。

src.rpmに入っていたソースにパッチを当てることにする。
patchのあてかた
Patch でバージョンアップ - オープンソース・フリーソフトのコンパイル&インストール --- Compile & Install for Open Source / Free Software

# cd /usr/src/redhat/SOURCES/
# cp -p ./* /usr/local/src/
# tar xzvf mt-daapd-0.2.4.tar.gz
# cd /usr/local/src/mt-daapd-0.2.4/src
# mv ../../mt-daapd-0.2.1.1-cp932-3.patch ./
# patch < mt-daapd-0.2.1.1-cp932-3.patch 
# cd ../
# make
# make install
# /etc/init.d/mt-daapd start

いったんつくりなおす。

# rm /var/cache/mt-daapd/songs.gdb
# touch /var/cache/mt-daapd/songs.gdb
# /etc/init.d/mt-daapd start

できたー!

itunesを立ち上げてみると、左側の「共有」の部分に自動的に共有サーバがでてきた。