なんとか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
コメントする