なんとかTeraStationでMediaTombを動かしたいと思ってねばってみる。
昨日のエラー(/mnt/array1/opt/usr/bin/../lib/gcc-lib/ppc-vine-linux/3.3.6/../../../libm.so: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE')について調べてみると、/lib/ld.so.1と/opt/usr/lib/libm.soのバージョン不整合が問題らしいことがわかった。
ここで一度整理しておくと、
なので、/opt/usr/lib/libm.soを一度削除し、/lib/libm.so.6へのシンボリックリンクにしてみたところ、configureが進むようになった。
今度は、sqlite3かmysqlが必要だよんと言うエラーになったので、sqlite3を入れてみることに。
sqlite-3.5.4.tar.gz を持ってきて、configure (--prefix=/opt/usr/local --disable-tcl), make。すんなり通・・・らない。
--disable-tclしても、コンパイルするのにtclshを使おうとする。
いい加減TeraStationにtclまで入れるのは嫌だったので、その時点のソースをtarで固めてFreeBSDに持ってきて、
無事に最後まで通ったので、make install。
再びmediatombに戻ってconfigure。
最後の方でいろいろないない言われて気になっていたら、
かなりくじけそうになりつつ、ftp://ftp.kddilabs.jp/pub/Linux/packages/Vine/Vine-4.0/ppc/Vine/pool/ からlibstdc++3-3.3.6-0vl7.ppc.rpm, libstdc++3-devel-3.3.6-0vl7.ppc.rpmを持ってきてrpm2cpioとか使ってインストールする。(rpm2cpio *.rpm | cpio -idvして、必要なファイルだけtarでコピー)
これで、コンパイルは進んだけど、最後のリンクするところでlibiconv絡みでundefined referenceエラー。
原因を調べるのも面倒なので、build/MakefileのLIBSに-liconvを追加したら通った。(→configure時に--enable-iconv-libを付けるのが正しいらしい)
試しに実行してみようとしたら、libiconv.soとlibstdc++.soが見つけられなくてエラーが出る。
設定ファイルの位置も良くわからない。と言うか、FreeBSDであったconfig.xmlとか、rcスクリプトとかはない模様。
かろうじて、/opt/usr/local/share/mediatombにmappings.xmlとか言うファイルがあった。
しょうがないので、FreeBSDのconfig.xmlを元に設定ファイルを作成。
起動できたけど、今手元にないので動作確認は後ほど。
一応、PS3から見たときのことも。
昨日のエラー(/mnt/array1/opt/usr/bin/../lib/gcc-lib/ppc-vine-linux/3.3.6/../../../libm.so: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE')について調べてみると、/lib/ld.so.1と/opt/usr/lib/libm.soのバージョン不整合が問題らしいことがわかった。
ここで一度整理しておくと、
- /lib には、TeraStationにもともと入っていたファイルが入っている。
- /opt/lib, /opt/usr/lib, /opt/usr/local/lib には、どこかから持ってきたrpmや、自分でコンパイルしたライブラリが入っている。
- /opt/usr/lib, /opt/usr/local/lib から、/usr/lib, /usr/local/libにシンボリックリンクを張っている。
- /lib/ld.so.1はld-2.3.2.so
- /opt/lib/ld.so.1はld-2.3.4.so
- /lib/libm.so.6はlibm-2.3.2.so
- /opt/usr/lib/libm.soはlibm-2.3.4.so
なので、/opt/usr/lib/libm.soを一度削除し、/lib/libm.so.6へのシンボリックリンクにしてみたところ、configureが進むようになった。
今度は、sqlite3かmysqlが必要だよんと言うエラーになったので、sqlite3を入れてみることに。
sqlite-3.5.4.tar.gz を持ってきて、configure (--prefix=/opt/usr/local --disable-tcl), make。すんなり通・・・らない。
--disable-tclしても、コンパイルするのにtclshを使おうとする。
いい加減TeraStationにtclまで入れるのは嫌だったので、その時点のソースをtarで固めてFreeBSDに持ってきて、
% tclsh tool/mksqlite3c.tclを実行して再びTeraStationに持って行き、Makefileの中でsqlite3.cを作っているところをコメントアウトして、先に進む。(ライブラリはできてるっぽいので、コマンドラインがいらないならこの作業は不要かも)
無事に最後まで通ったので、make install。
再びmediatombに戻ってconfigure。
最後の方でいろいろないない言われて気になっていたら、
CONFIGURATION SUMMARY ---- sqlite3 : yes mysql : missing libjs : missing libmagic : missing inotify : missing libexif : missing id3lib : missing taglib : missing libextractor : disabledとか言われた。いろいろ入れないと満足に使えないのかな?と思ったけど気にせずmake。
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../tombupnp/upnp/inc -I../src -I../tombupnp/ixml/inc -I../tombupnp/threadutil/inc -I../tombupnp/upnp/inc -I.. -pthread -g -O2 -MT libmediatomb_a-action_request.o -MD -MP -MF ".deps/libmediatomb_a-action_request.Tpo" -c -o libmediatomb_a-action_request.o `test -f '../src/action_request.cc' || echo './'`../src/action_request.cc; \
then mv -f ".deps/libmediatomb_a-action_request.Tpo" ".deps/libmediatomb_a-action_request.Po"; else rm -f ".deps/libmediatomb_a-action_request.Tpo"; exit 1; fi
In file included from ../src/zmm/zmm.h:37,
from ../src/zmmf/zmmf.h:35,
from ../src/common.h:42,
from ../src/action_request.h:36,
from ../src/action_request.cc:36:
../src/zmm/object.h:35:29: new: No such file or directory
なんて言われる。ん~、libstdc++まわりが入ってない?かなりくじけそうになりつつ、ftp://ftp.kddilabs.jp/pub/Linux/packages/Vine/Vine-4.0/ppc/Vine/pool/ からlibstdc++3-3.3.6-0vl7.ppc.rpm, libstdc++3-devel-3.3.6-0vl7.ppc.rpmを持ってきてrpm2cpioとか使ってインストールする。(rpm2cpio *.rpm | cpio -idvして、必要なファイルだけtarでコピー)
これで、コンパイルは進んだけど、最後のリンクするところでlibiconv絡みでundefined referenceエラー。
原因を調べるのも面倒なので、build/MakefileのLIBSに-liconvを追加したら通った。(→configure時に--enable-iconv-libを付けるのが正しいらしい)
試しに実行してみようとしたら、libiconv.soとlibstdc++.soが見つけられなくてエラーが出る。
設定ファイルの位置も良くわからない。と言うか、FreeBSDであったconfig.xmlとか、rcスクリプトとかはない模様。
かろうじて、/opt/usr/local/share/mediatombにmappings.xmlとか言うファイルがあった。
しょうがないので、FreeBSDのconfig.xmlを元に設定ファイルを作成。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://mediatomb.cc/0.10.0/config" xmlns:xsi="http://www.w3.org/2
<server>
<ui enabled="yes">
<accounts enabled="yes" session-timeout="30">
<account user="username" password="password"/>
</accounts>
</ui>
<name>TeraStation</name>
<home>/opt/var/mediatomb</home>
<webroot>/opt/usr/local/share/mediatomb/web</webroot>
<storage driver="sqlite3">
<database-file>mediatomb.db</database-file>
</storage>
</server>
<import hidden-files="no">
<filesystem-charset>CP932</filesystem-charset>
<metadata-charset>CP932</metadata-charset>
<scripting script-charset="UTF-8">
<common-script>/opt/usr/local/share/mediatomb/js/common.js</common-script>
<playlist-script>/opt/usr/local/share/mediatomb/js/playlists.js</playlist-
<virtual-layout type="builtin">
<import-script>/opt/usr/local/share/mediatomb/js/import.js</import-scrip
</virtual-layout>
</scripting>
<mappings>
<extension-mimetype ignore-unknown="no">
<map from="mp3" to="audio/mpeg"/>
<map from="ogg" to="application/ogg"/>
<map from="asf" to="video/x-ms-asf"/>
<map from="asx" to="video/x-ms-asf"/>
<map from="wma" to="audio/x-ms-wma"/>
<map from="wax" to="audio/x-ms-wax"/>
<map from="wmv" to="video/x-ms-wmv"/>
<map from="wvx" to="video/x-ms-wvx"/>
<map from="wm" to="video/x-ms-wm"/>
<map from="wmx" to="video/x-ms-wmx"/>
<map from="avi" to="video/avi"/>
<map from="m3u" to="audio/x-mpegurl"/>
<map from="pls" to="audio/x-scpls"/>
</extension-mimetype>
<mimetype-upnpclass>
<map from="audio/*" to="object.item.audioItem.musicTrack"/>
<map from="application/ogg" to="object.item.audioItem.musicTrack"/>
<map from="video/*" to="object.item.videoItem"/>
<map from="image/*" to="object.item.imageItem"/>
</mimetype-upnpclass>
<mimetype-contenttype>
<treat mimetype="audio/mpeg" as="mp3"/>
<treat mimetype="application/ogg" as="ogg"/>
<treat mimetype="audio/x-flac" as="flac"/>
<treat mimetype="image/jpeg" as="jpg"/>
<treat mimetype="audio/x-mpegurl" as="playlist"/>
<treat mimetype="audio/x-scpls" as="playlist"/>
</mimetype-contenttype>
</mappings>
</import>
</config>
そして、/etc/init.d/mediatombを作成。
#!/bin/bash
#
# Init file for MediaTomb server daemon
#
# chkconfig: 2345 55 25
# description: MediaTomb server daemon
#
# processname: mediatomb
# pidfile: /var/run/mediatomb.pid
# source function library
. /etc/rc.d/init.d/functions
# pull in sysconfig settings
[ -f /etc/sysconfig/mediatomb ] && . /etc/sysconfig/mediatomb
RETVAL=0
prog="mediatomb"
# Some functions to make the below more readable
MEDIATOMB=/opt/usr/local/bin/mediatomb
PID_FILE=/var/run/mediatomb.pid
OPTIONS="-d -c /opt/usr/local/etc/mediatomb/config.xml -l /opt/var/mediatomb/med
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/usr/local/lib
start()
{
echo -n $"Starting $prog:"
initlog -c "$MEDIATOMB $OPTIONS" && success || failure
RETVAL=$?
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/mediatomb
echo
}
stop()
{
echo -n $"Stopping $prog:"
killproc $MEDIATOMB -TERM
RETVAL=$?
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/mediatomb
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=1
esac
exit $RETVAL
後は、/opt/var/mediatombディレクトリを作成し、/opt/usr/local/etc/mediatomb/config.xmlと/opt/var/mediatombディレクトリをnobodyで書き込み可にして、/etc/init.d/mediatomb startで無事に起動できた。起動できたけど、今手元にないので動作確認は後ほど。
一応、PS3から見たときのことも。
- 日本語のフォルダ名、ファイル名は化ける。(filesystem-charsetとか、metadata-charsetとか言う設定項目があるらしいので、直るかも)
→filesystem-charsetをファイルシステムの文字コードにしたら、web uiでもPS3でも表示できるようになった。 - divxのaviはPS3で再生できたけど、早送り/巻戻しができない。PS3のせいかMediaTombのせいかは謎。
カテゴリ
Networkトラックバック(0)
このブログ記事を参照しているブログ一覧: MediaTomb(2)
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1304

コメントする