xmms (X MultiMedia System)

[ 戻る | トップページに戻る ]

概要

xmms とは、GTK+ を利用した MP3 プレイヤー。旧 x11amp から改名。 GNOME にも対応している。Windows 版 Winamp のスキンがそのまま利用できる。

URL

http://www.xmms.org/ (Official Site)
http://www.on.cs.keio.ac.jp/‾yasu/jp_x11amp.html (1.0.1 用 日本語化パッチ) http://www3.big.or.jp/‾sian/linux/products/xmms-ja.html (1.2.2 用 日本語化パッチ)

インストール環境

Slackware 7.0 (Kernel 2.2.14 + glibc 2.1.2)
Plamo Linux 2.0 (Kernel 2.2.15 + glibc 2.1.2)

必要なもの

GTK+-1.2.2 以降

バージョン

1.0.1, 2.0.2

インストール手順 (for 1.0.1 on Slackware 7.0)

$ tar xvfz xmms-1.0.1.tar.gz
$ cd xmms-1.0.1
$ ./configure --with-gnome --with-esd-prefix=/usr/lib --with-esd-exec-prefix=/usr/bin
(snip)
checking for esd-config... /usr/bin/bin/esd-config
checking for ESD - version >= 0.2.8... ./configure: /usr/bin/bin/esd-config: No such file or directory
./configure: /usr/bin/bin/esd-config: No such file or directory
./configure: /usr/bin/bin/esd-config: No such file or directory
./configure: /usr/bin/bin/esd-config: No such file or directory
./configure: /usr/bin/bin/esd-config: No such file or directory
no
*** Could not run ESD test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding ESD or finding the wrong
*** version of ESD. If it is not finding ESD, 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
(snip)
Configuration:
  Install path:               /usr/local
  Build esd plugin:           no
  Build mikmod plugin:        no
  Build gnomexmms:            yes
  Build OpenGL plugins:       yes
  Pthread flag:               -lpthread
  Use one plugin dir:         no

おろ、esd の認識に失敗してる。configure からやり直し。
$ make distclean
$ ./configure --with-gnome --with-esd-prefix=/usr/lib --with-esd-exec-prefix=/usr
(snip)
checking for esd-config... /usr/bin/esd-config
checking for ESD - version >= 0.2.8... yes
checking for esd_get_latency in -lesd... yes
(snip)
Configuration:
  Install path:               /usr/local
  Build esd plugin:           yes
  Build mikmod plugin:        no
  Build gnomexmms:            yes
  Build OpenGL plugins:       yes
  Pthread flag:               -lpthread
  Use one plugin dir:         no

ふむ。今度は良さそう。ではコンパイル。
$ make
$ make check
$ su
# make install
# exit

あとは EsounD を使うためには、「Options」-「Preferences」-「Audio I/O Plugins」 タブで Output Plugin に「eSound Output Plugin 1.0.1 [libesdout.so] を選択すればおっけー。

インストール手順 (with 日本語化パッチ)

$ make distclean
$ patch -p1 < xmms-1.0.1-ja_nls.patch 
$ patch -p1 < xmms-1.0.1-libjcode.patch 
(snip)
patching file configure
Hunk #1 succeeded at 5358 (offset 4 lines).
patching file configure.in
Hunk #1 succeeded at 372 (offset 4 lines).
(snip)

いいのかな?
$ ./configure --with-gnome --with-esd-prefix=/usr/lib --with-esd-exec-prefix=/usr ¥
              --enable-kanji --nlsdir=/usr/local/share/locale 
configure: error: --nlsdir=/usr/local/share/locale: invalid option; use --help to show usage

おろ? ああ、'with-' が抜けているのね。
$ ./configure --with-gnome --with-esd-prefix=/usr/lib --with-esd-exec-prefix=/usr ¥
              --enable-kanji --with-nlsdir=/usr/local/share/locale
                               ‾‾‾‾‾追加
(snip)
checking size of long... 4
./configure: +: command not found
./configure: +: command not found
./configure: +: command not found
./configure: line 4941: syntax error near unexpected token `then'
./configure: line 4941: `+ if eval "test ¥"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`¥" = set"; then'

むむ。パッチ後の configure スクリプトを見てみると、何故か問題の部分 (パッチにより追加された部分) には、行頭に '+ ' が付いてしまっている。 xmms-1.0.1-ja_nls.patch をみると、確かに '+ ' が余分に付いている。何故? よくわからんが、余分な '+ ' を削除すればおっけー。
# その他、Web ページの誤記と一緒に作者である 古川泰之さんに連絡・反映済み。(5/12) ;-)
$ ./configure --with-gnome --with-esd-prefix=/usr/lib --with-esd-exec-prefix=/usr ¥
               --enable-kanji --with-nlsdir=/usr/local/share/locale
(snip)
Configuration:
  Install path:               /usr/local
  Current xmms                /usr/local/bin/xmms
  Build esd plugin:           yes
  Build mikmod plugin:        no
  Build gnomexmms:            yes
  Build OpenGL plugins:       yes
  Pthread flag:               -lpthread
  Use one plugin dir:         no

こんどはおっけー。ではコンパイル。ちょっと気になるところはあるが、特に問題は ないみたい。
$ make
(snip)
Making all in libjcode
make[2]: Entering directory `/usr/local/src/xmms-1.0.1/libjcode'
cd .. ¥
  && CONFIG_FILES=Input/mpg123/libjcode/Makefile CONFIG_HEADERS= /bin/sh ./config.status
creating Input/mpg123/libjcode/Makefile
sed: can't read ./Input/mpg123/libjcode/Makefile.in: そのようなファイルやディレクトリはありません
/bin/sh ../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -I .. -g -O2 ¥
        -fomit-frame-pointer -funroll-all-loops -finline-functions -ffast-math -m486 -c detect.c
(snip) 
$ make check
(snip) 
Making check in libjcode
make[1]: Entering directory `/usr/local/src/xmms-1.0.1/libjcode'
cd .. ¥
  && CONFIG_FILES=Input/mpg123/libjcode/Makefile CONFIG_HEADERS= /bin/sh ./config.status
creating Input/mpg123/libjcode/Makefile
sed: can't read ./Input/mpg123/libjcode/Makefile.in: そのようなファイルやディレクトリはありません
make[1]: Nothing to be done for `check'
(snip) 
$ su
# make install 
# exit

インストール手順 (for 1.2.2 with 日本語化パッチ on Plamo 2.0)

$ tar xvfz xmms-1.2.2.tar.gz
$ cd xmms-1.2.2
$ bzip2 -d xmms-1.2.2j-20000801.diff.bz2
$ patch -p1 < xmms-1.2.2j-20000801.diff
$ ./configure --enable-kanji --enable-texthack
(snip)
checking for glib-config... /usr/bin/glib-config
checking for GLIB - version >= 1.2.2... yes
checking for gtk-config... /usr/bin/gtk-config
checking for GTK - version >= 1.2.2... no
*** Could not run GTK test program, checking why...
*** The test program compiled, but did not run. This usually means
*** that the run-time linker is not finding GTK or finding the wrong
*** version of GTK. If it is not finding GTK, 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
***
*** If you have a RedHat 5.0 system, you should remove the GTK package that
*** came with the system with the command
***
***    rpm --erase --nodeps gtk gtk-devel
configure: error: *** GTK+ >= 1.2.2 not installed - please install first ***

おろ? なんで? GTK+ は 1.2.7 が (Plamo 2.0 では) デフォルトで入っているのに。 gtk-config --version するとちゃんと 1.2.7 と答えが返ってくる。 ./configure --enable-kanji --enable-texthack --with-gtk-prefix=/usr してもダメ。ldconfig してもダメ。rm config.cache してやり直してもダメ。 パッチを当てないでも一緒。ということはパッチの影響ではない、と。

しようがないので、configure スクリプトをつらつらと見てみると...
  min_gtk_version=1.2.2
  echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
echo "configure:2654: checking for GTK - version >= $min_gtk_version" >&5
  no_gtk=""
  if test "$GTK_CONFIG" = "no" ; then
    no_gtk=yes
  else

ふむ。no_gtk が空にならないのが変なのか。 さらに調べると、どうやら conftest のコンパイルに失敗しているらしい。 config.log に
configure:2654: checking for GTK - version >= 1.2.2
configure:2755: gcc -o conftest -g -O2 -I/usr/lib/glib/include -D_REENTRANT   co
nftest.c -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lgthread -
lglib -lpthread -ldl -lXext -lX11 -lm  1>&5
configure: failed program was:

とある。configure の該当箇所は以下のとおり。
if { (eval echo configure:2755: ¥"$ac_link¥") 1>&5; (eval $ac_link) 2>&5; } && t
est -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  :
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  no_gtk=yes
fi
rm -fr conftest*
fi

conftest.c をファイルにして、config.log とおりのコマンドでコンパイルしてみる。
$ gcc -o conftest -g -O2 -I/usr/lib/glib/include -D_REENTRANT conftest.c -L/usr/lib
      -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lgthread -lglib -lpthread
      -ldl -lXext -lX11 -lm

すると、conftest はできるが、実行すると Segmentation fault 。げっ。 gdb してみると...
(gdb) run
Starting program: /usr/local/src/xmms-1.2.2/./conftest 
warning: Unable to find dynamic linker breakpoint function.
warning: GDB will be unable to debug shared library initializers
warning: and track explicitly loaded dynamic code.
Linux thread target has modified Unknown signal handling

Program received signal SIGSEGV, Segmentation fault.
0x402530ff in ?? () from /lib/libc.so.6
(gdb) bt
#0  0x402530ff in ?? () from /lib/libc.so.6
#1  0x4032b251 in ?? () from /lib/libpthread.so.0
#2  0x4032e438 in ?? () from /lib/libpthread.so.0
#3  0x4032824e in ?? () from /lib/libpthread.so.0

ううむ。thread まわりが原因? 調べると、どうやら conftest.c 中の
  system ("touch conf.gtktest");

でこけているらしい。ここをコメントアウトするとちゃんと動く。 -D_REENTRANT をとってもダメ。-lpthread をとると OK 。 いろいろ試した結果...
むむむっ...。libpthread がどうなっているかを調べると、Plamo 2.0 ではこう。
$ ls -l /lib/libpthread* 
-rwxr-xr-x 1 root root 67564 2月  5日 2000年 /lib/libpthread-0.8.so*
lrwxrwxrwx 1 root root    15 8月 10日  01:17 /lib/libpthread.so -> libpthread.so.0*
lrwxrwxrwx 1 root root    17 8月 10日  01:17 /lib/libpthread.so.0 -> libpthread-0.8.so*

$ ls -l /usr/lib/libpthread*
-rw-r--r-- 1 root root 89888 4月 16日 16:34 /usr/lib/libpthread.a
-rw-r--r-- 1 root root 95376 4月 16日 16:34 /usr/lib/libpthread_p.a

これに対し、Slackware 7.0 の場合はこうなっている。
$ ls -l /lib/libpthread*
-rwxr-xr-x 1 root root 247008 Sep 16 1999 /lib/libpthread-0.8.so*
lrwxrwxrwx 1 root root     17 Feb 12 2000 /lib/libpthread.so.0 -> libpthread-0.8.so*

$ ls -l /usr/lib/libpthread*
-rw-r--r-- 1 root root 663802 Sep 16 1999 /usr/lib/libpthread.a
lrwxrwxrwx 1 root root     25 Feb 12 2000 /usr/lib/libpthread.so -> ../../lib/libpthread.so.0*
-rw-r--r-- 1 root root 669776 Sep 16 1999 /usr/lib/libpthread_p.a

ふぅむ。Slackware に比べてサイズが小さいなぁ。 とりあえず Slack を見習って、以下のようにリンクを張ってから xmms の configure をやり直すと、無事終了 (まだ esd 未対応なのに注意) 。
$ su
# cd /usr/lib
# ln -s ../../lib/libpthread.so.0 libpthread.so
# exit

あとは、普通にコンパイル/インストールしておしまい。 ...と言いたいところだが、xmms 実行直後に 横長の画面が出ようとしてすぐ消えて、 その後に xmms のウィンドウが表示される。これ何?
$ make
$ make check
$ su
# make install
# exit

インストール手順 (for 1.2.5 with 日本語化パッチ on Plamo 2.2.1)

$ bzip2 -dc xmms-1.2.5.tar.bz2 | tar xvf -
$ cd xmms-1.2.5
$ bzip2 -d xmms-1.2.5j-20010621.diff.bz2
$ patch -p1 < xmms-1.2.5j-20010621.diff
$ ./configure --enable-kanji
(snip)
Configuration:
  Install path:               /usr/local
  Build esd plugin:           no
  Build mikmod plugin:        no
  Build Ogg Vorbis plugin:    no
  Build Solaris plugin:       no
  Build gnomexmms:            no
  Build OpenGL plugins:       no
  Pthread flag:               -lpthread
  Use one plugin dir:         no
  Allow user plugin dir:      yes

$ make
$ su
# make install
# exit
実行すると、動かない 14886 ttyp2 S 0:00 xmms 14887 ttyp2 Z 0:00 [xmms ]

インストール手順 (for 1.2.2 with 日本語化パッチ on Slackware 7.0)

$ tar xvfz xmms-1.2.2.tar.gz
$ cd xmms-1.2.2
$ bzip2 -d xmms-1.2.2j-20000801.diff.bz2
$ patch -p1 < xmms-1.2.2j-20000801.diff
$ ./configure --enable-kanji --enable-texthack
$ make
$ make check
$ su
# make install
# exit

[ 戻る | トップページに戻る ]