2008/03/08
fedora8化した玄箱PROにuShareを導入する
作成者: love2hina
カテゴリー: 未分類
uShare 1.1aに必要なものは最終的にこうなりました。
libdlnaは特に必ず必要ではないのものの、とりあえずいれてあります。
・pkg-config 0.23
・libupnp 1.6.4
・libdlna 0.2.3
・ffmpeg
まず、libupnpの導入は簡単。yumで配信されているので、これをインストールするだけでOK。
$ su -
# yum install libupnp libupnp-devel
libdlnaをコンパイルするのに、ffmpegのライブラリ群が必要なので、
ffmpegをmakeします。
コンフィグを共有ライブラリ設定で実行します。
$ cd ffmpeg
$ ./configure --enable-shared
$ make
$ su -
# make install
ようやく、libdlnaをmakeします。
$ cd libdlna-0.2.3
$ ./configure
Error, can't find libavformat !
エラーになりました...
調べてみると、ffmpegのバージョンが新しい為か、ヘッダーファイルの構成配置が変更されているようです。
libdlnaの想定
- ffmpeg/avformat.h
ffmpegの配置
- libavformat/avformat.h
そこで、コピーするか、シンボリックリンクで対処しましょう。
私は単純にコピーしました。
$ su -
# cd /usr/local/include
# mkdir ffmpeg
# cp livavcodec/* ffmpeg/
# cp livavdevice/* ffmpeg/
# cp livavformat/* ffmpeg/
# cp livavutil/* ffmpeg/
さて、通るでしょうか?
$ cd libdlna-0.2.3
$ ./configure
通りしましたので、makeします。
$ make
あら、makeの最後のシンボリックリンクで失敗します。
ln -sf libdlna.so. libdlna.so.
ln: `libdlna.so.' と `libdlna.so.' は同じファイルです
libdlna-0.2.3/src/Makefileの19行目を書き換えます。
- LIBNAME_MAJOR = $(LIBNAME_SHARED).$(shell echo $(VERSION) | cut -f1 -d.)
+ LIBNAME_MAJOR = $(LIBNAME_SHARED).0.2.3
$ make
$ su -
# make install
これで、ようやくuShare本体のコンパイル作業に入ります。
$ cd ushare-1.1a
$ ./configure --enable-dlna
Checking for libupnp >= 1.4.2
Error, libupnp < 1.4.2 !
と言われます。
どうやら、ヘッダーは見つかるのに、pkg-configで見つからないようです。
以下のような配置になっているためかと思われます。
/usr/lib/
libupnp → yumでインストールした為
/usr/local/lib
libdlna → 自分でmakeした為
そこで、環境変数で両方のライブラリパスを探すように設定します。
$ PKG_CONFIG_PATH="/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig/"
$ export PKG_CONFIG_PATH
$ cd ushare-1.1a
$ ./configure --enable-dlna
Checking for libdlna >= 0.2.1 ...
Error, libdlna < 0.2.1 !
/usr/local/lib/pkgconfig/libdlna.pcをみてみると、Versionの項目が空でした。
これも8行目を直接設定してあげます。
- Version:
+ Version: 0.2.3
あとはすんなりとmakeできました。
$ cd ushare-1.1a
$ ./configure --enable-dlna
$ make
$ su -
# make install
試しに起動してみます。
(私はだいたい--helpを打ち込んでみます)
$ ushare --help
共有ライブラリが見つからないというエラーになります。
共有関係をみてみましょう。
$ ldd /usr/local/bin/ushare
libixml.so.2 => /usr/lib/libixml.so.2 (0x40025000)
libthreadutil.so.2 => /usr/lib/libthreadutil.so.2 (0x4002e000)
libpthread.so.0 => /lib/libpthread.so.0 (0x4003b000)
libupnp.so.3 => /usr/lib/libupnp.so.3 (0x40059000)
libdlna.so.0.2.3 => not found
libavformat.so.52 => not found
libavcodec.so.51 => not found
libz.so.1 => /lib/libz.so.1 (0x40663000)
libm.so.6 => /lib/libm.so.6 (0x4067c000)
libavutil.so.49 => not found
libc.so.6 => /lib/libc.so.6 (0x40741000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40876000)
/lib/ld-linux.so.3 (0x40000000)
libdl.so.2 => /lib/libdl.so.2 (0x40889000)
あらら、見事にffmpegとlibdlnaが見つかっていませんね。
そこで、/usr/local/lib/ にライブラリパスを通します。
シンボリックリンクでも良いのですが、今後も /usr/local/lib/ に
何かとライブラリを置きそうなので、こちらにしました。
$ su -
# vi /etc/ld.so.conf
で、
/usr/local/lib
という行を追加し、保存したら設定を適用します。
# ldconfig
# exit
$ ushare --help
uShare (version 1.1a), a lightweight UPnP A/V and DLNA Media Server.
Benjamin Zores (C) 2005-2007, for GeeXboX Team.
See http://ushare.geexbox.org/ for updates.
Usage: ushare [-n name] [-i interface] [-p port] [-c directory] [[-c directory]...]
Options:
-n, --name=NAME Set UPnP Friendly Name (default is 'uShare')
-i, --interface=IFACE Use IFACE Network Interface (default is 'eth0')
-f, --cfg=FILE Config file to be used
-p, --port=PORT Forces the HTTP server to run on PORT
-q, --telnet-port=PORT Forces the TELNET server to run on PORT
-c, --content=DIR Share the content of DIR directory
-w, --no-web Disable the control web page (enabled by default)
-t, --no-telnet Disable the TELNET control (enabled by default)
-o, --override-iconv-err If iconv fails parsing name, still add to media contents (hoping the renderer can handle it)
-v, --verbose Set verbose display
-x, --xbox Use XboX 360 compliant profile
-d, --dlna Use DLNA compliant profile (PlayStation3 needs this)
-D, --daemon Run as a daemon
-V, --version Display the version of uShare and exit
-h, --help Display this help
どうやら、成功のようです。
*/