« Linuxのディストリビューション名を表示 | メイン | GeeXboX uShareでLinuxをXbox360のメディアサーバにする 運用失敗 »

2007年12月04日

GeeXboX uShareでLinuxをXbox360のメディアサーバにする インストール編   [PC Unix]/ [ゲーム]

12月のダッシュボードアップデートでXbox360のメディアプレーヤの対応フォーマットがDivXにまで及ぶとのことなので、ようやくうちのサーバに貯まった動画ファイルをXbox経由で見られるようになる。

WindowsマシンとWimdwosMediaPlayer11を使えば簡単だろうが、うちは常時稼働しているサーバはLinuxなのでわざわざもう一台Windowsマシンを常時稼働させたくない。というわけで今回の作業と相成りました。あまり情報が見つからず試行錯誤でかなり面倒だったので備忘録を残す。

目的:LinuxサーバをXbox360のメディアサーバにする
環境:Vine Linux3.2
必要な物:uShare、libupnp、libdlna、ffmpeg

ubuntuやFedoraなど今時のディストリ用にはパッケージが用意されているようだが、例のごとくVineは見向きもされてないのでソースからのインストール。uShareをmakeするためには他にlibupnpとlibdlnaが必要なのでそいつらから入れていく。

libupnp-1.4.6のインストール

http://pupnp.sourceforge.net/

現時点での最新版の1.6.1はうちのVine Linux3.2ではpthread関連のmakeエラーが解決できず使えない。POSIX threadsが含まれているglibc-develは当然インストール済みで当該ファイルと思われるlibpthread.soなども存在するんだがかなりからかってもエラーが解決できない。

そこで少し古いバージョン1.4.6を持ってきたらあっさりmakeできた。 ちなみにCentOS5のマシンでは1.6.1であっさりmakeできたのでkernel2.4と2.6の違いかコンパイルオプションの違いなどが原因かと推測される。 うーむ。かなりはまったが、まあ、よし。

wget http://jaist.dl.sourceforge.net/sourceforge/pupnp/libupnp-1.4.6.tar.bz2
tar xvzf libupnp-1.4.6.tar.bz2
cd libupnp-1.4.6
./configure
make
make install

libdlna-0.2.3のインストール

http://libdlna.geexbox.org/

libdlnaは、ffmpegの中にあるlibavformatが必要なのでまずffmpegをインストール。ffmpeg-0.4.9がインストール済みだったが古いのかなんなのかconfigureが通らなかった。 ffmpegの配布形態がよくわからなかったのでsvnの最新full checkoutをダウンロードした。http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2

wget http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2
tar xvzf ffmpeg-checkout-snapshot.tar.bz2
cd ffmpeg-checkout-2007-12-03
./configure --enable-shared
make
make install

configureに--enable-sharedオプションを付けないとlibavformat等を共有ライブラリにしてくれないので注意。次にlibdlnaのインストール。

wget http://libdlna.geexbox.org/releases/libdlna-0.2.3.tar.bz2
tar xvzf libdlna-0.2.3.tar.bz2
cd libdlna-0.2.3
./configure
make
make install

うちの環境だとmakeの最後で

ln -sf libdlna.so. libdlna.so.
ln: `libdlna.so.' と `libdlna.so.' は同じファイルです
make[1]: *** [lib_shared] エラー 1

というシンボリックリンクのファイル名生成に失敗したエラーをはくのでlibdlna-0.2.3/src/Makefileの19行目を下記のように決めうちでファイル名を生成するように変更

LIBNAME_MAJOR = $(LIBNAME_SHARED).$(shell echo $(VERSION) | cut -f1 -d.)
↓
LIBNAME_MAJOR = $(LIBNAME_SHARED).0

場当たり的対応だがまあよし。

GeeXboX uShareのインストール

http://ushare.geexbox.org/

ようやくuShare自体のインストール。

wget http://ushare.geexbox.org/releases/ushare-1.0.tar.bz2
tar xvzf ushare-1.0.tar.bz2
CFLAGS="-Os" ./configure --prefix=/usr --enable-dlna
make
make install-strip

うちの環境だとconfigure時に苦労して入れたlibupnp.pcが見つからないとのたまうので、下記のようにconfigureの前にPKG_CONFIG_PATHでlibupnp.pcがある場所を指定する必要があった。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

これで一通りのインストールは終了。とりあえずushareコマンドを叩いてみると共有オブジェトがいくつか見つからないらしいエラーがでるのでlddで依存関係を調べる。

ldd /usr/local/bin/ushare 
        libupnp.so.2 => not found
        libthreadutil.so.2 => not found
        libixml.so.2 => not found
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0x4002c000)
        libc.so.6 => /lib/i686/libc.so.6 (0x4007d000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

libupnp.so.2、libthreadutil.so.2、libixml.so.2はうちの環境だと/usr/local/libにあるので/lib以下にシンボリックリンクを張ってやる

ln -s  /usr/local/lib/libupnp.so.2 /lib/libupnp.so.2
ln -s  /usr/local/lib/libthreadutil.so.2 /lib/libthreadutil.so.2
ln -s  /usr/local/lib/libixml.so.2 /lib/libixml.so.2

これでようやくuShareが起動するまでにこぎ着けました。やれやれ。力尽きたのでuShareの設定&稼働はこれから。

投稿者 Naka : 2007年12月04日 01:00

トラックバック

このエントリーのトラックバックURL:
http://voidmain.no-ip.com/~nakamoo/cgi-bin/mt/mt-tb_ren20061115.pl/371

コメント

コメントしてください




保存しますか?