新年おめでとうございます。koga です。
本年もよろしくお願いします。
さて Subject の通り、PackMan のレポジトリからインストールして
いる mpg123 でちょっとハマったので情報共有とメモのためメール
します。一応問題は解決済みなので、興味なければスルーしてくだ
さい。
ふと気づいたら mpg123 を用いたプログラムで音声が再生できなく
なっていました。環境は openSUSE 11.0 と 11.1。試しにコマンド
ラインから打ってみると、こんなエラー。
$ mpg123 music.mp3
[module.c:95] error: Failed to open module alsa: file not found
[module.c:95] error: Failed to open module oss: file not found
[module.c:95] error: Failed to open module esd: file not found
[module.c:95] error: Failed to open module jack: file not found
[module.c:95] error: Failed to open module portaudio: file not found
[module.c:95] error: Failed to open module pulse: file not found
[module.c:95] error: Failed to open module sdl: file not found
[module.c:95] error: Failed to open module nas: file not found
[module.c:95] error: Failed to open module arts: file not found
[audio.c:179] error: Unable to find a working output module in
this list: alsa,oss,esd,jack,portaudio,pulse,sdl,nas,arts
[audio.c:533] error: Failed to open audio output module
[mpg123.c:773] error: Failed to initialize output, goodbye.
ただし、kaffeine や xmms、vlc などでは音楽も動画も正常に再生
できます。原因を探っているうちに、openSUSE Updater で最近パッ
ケージをアップデートしたことを思い出し、
$ rpm -qa --last
して、上から順に rpm -e でパッケージを削除[1]していってみると、
$ LANG=C rpm -e libltdl-3-1.5.26-23.2
error: Failed dependencies:
libltdl.so.3 is needed by (installed) openct-0.6.14-22.1.i586
libltdl.so.3 is needed by (installed) libgphoto2-2.4.1.2-21.1.i586
libltdl.so.3 is needed by (installed) guile-1.8.4-22.1.i586
libltdl.so.3 is needed by (installed) sane-backends-1.0.19-48.1.i586
libltdl.so.3 is needed by (installed) mlterm-2.9.3.20071112-83.1.i586
libltdl.so.3 is needed by (installed) TeXmacs-1.0.6.14-16.1.i586
libltdl.so.3 is needed by (installed) mpg123-1.7.2-0.pm.1.i586
libltdl.so.3 is needed by (installed) opensc-0.11.4-37.6.i586
libltdl.so.3 is needed by (installed) libopensc2-0.11.4-37.6.i586
libltdl.so.3 is needed by (installed) gnash-0.8.3-100.pm.1.i586
libltdl.so.3 is needed by (installed) sox-14.3.0-99.pm.100.3.i586
libltdl-3 = 1.5.26 is needed by (installed) libtool-1.5.26-23.2.i586
ここで mpg123 の文字を発見。openSUSE のミラーサーバ[2]から
パッケージを取得して libltdl-3 のダウングレードを実施。
# rpm -Uvh --oldpackage libltdl-3-1.5.26-23.1.i586.rpm
Preparing... ########################################### [100%]
1:libltdl-3 ########################################### [100%]
これで正常に mpg123 で再生できるようになりました。なお openSUSE
11.1 は libltdl7-2.2.6-1.20 [3]にダウングレードしたら直りました。
(libltdl-3 と libltdl7 の違いって何だろう?)
PackMan は自己責任なレポジトリなので openSUSE に報告するには筋違い
な気がするし、PackMan の ML に報告してみようかな..?
[1] 後で気づきましたが、いちいちパッケージ削除しなくても、こう
すればすぐ分かりましたね...
$ ldd `which mpg123`
linux-gate.so.1 => (0xffffe000)
libltdl.so.3 => /usr/lib/libltdl.so.3 (0xb8059000)
libdl.so.2 => /lib/libdl.so.2 (0xb8055000)
libmpg123.so.0 => /usr/lib/libmpg123.so.0 (0xb7fdb000)
libm.so.6 => /lib/libm.so.6 (0xb7fb5000)
libc.so.6 => /lib/libc.so.6 (0xb7e72000)
/lib/ld-linux.so.2 (0xb808b000)
[2] 例: ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.0/repo/oss/suse/i586/libltdl-3-1.5.26-23.1.i586.rpm
[3] 例: ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/11.1/repo/oss/suse/i586/libltdl7-2.2.6-1.20.i586.rpm
以上です。
--
koga