SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I don't know if this is the right place to ask the question, but I have an issue with mpg123 on Slackware Current.
The short version of the story is this:
mpg123 doesn't work if called with the full path but does work if just called.
e.g.
Code:
mpg123 foo.mp3
works while
Code:
/usr/bin/mpg123 foo.mp3
will fail with this:
Code:
/usr/bin/mpg123 *.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.29.0; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
[src/libout123/module.c:open_module_here():133] error: Failed to open module pulse.
[src/libout123/libout123.c:out123_open():484] error: Found no driver out of [pulse] working with device <default>.
main: [src/mpg123.c:check_fatal_output():331] error: out123 error 3: failure loading driver module
I had a clean 14.2 64 bit system then upgraded to Current. I noticed the problem because calling /usr/bin/mpg123 in cron failed while calling mpg123 on the command line worked. When I called /usr/bin/mpg123 on the command line it failed with the above error.
I can't figure out what is different between the two cases.
mpg123 works here with both mpg123 and /usr/bin/mpg123 commands in Slackware64 current.
Something might be missing from your upgrade from 14.2 to current.
As a first step, check that pulse module is available:
Code:
$/usr/bin/mpg123 --list-modules
Available modules
-----------------
alsa output Output audio using Advanced Linux Sound Architecture (ALSA).
dummy output Dummy audio output - does not output audio.
pulse output Output audio using PulseAudio Server
sdl output Output audio using SDL (Simple DirectMedia Layer).
oss output Output audio using OSS
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
then provide the output of this cat command:
Code:
$cat /etc/asound.conf
# ALSA system-wide config file
# By default, redirect to PulseAudio:
pcm.default pulse
ctl.default pulse
Thanks for the help. It sounds like it is just me.
As suggested...
Code:
> /usr/bin/mpg123 --list-modules
Available modules
-----------------
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
and
Code:
> cat /etc/asound.conf
# ALSA system-wide config file
# By default, redirect to PulseAudio:
pcm.default pulse
ctl.default pulse
So it looks like /usr/bin/mpg123 doesn't have the output modules it needs... however, the one that works does.
Code:
> mpg123 --list-modules
Available modules
-----------------
alsa output Output audio using Advanced Linux Sound Architecture (ALSA).
oss output Output audio using OSS
pulse output Output audio using PulseAudio Server
dummy output Dummy audio output - does not output audio.
sdl output Output audio using SDL (Simple DirectMedia Layer).
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
This feels for all the world like I somehow have two copies of mpg123 hanging around.
I would have thought that /usr/bin/mpg123 would have been upgraded when I changed to Current. Then again, I am not sure it would have even worked in 14.2 without alsa or oss modules.
I figured out that if I install the "mpg123-compat32-1.29.0-x86_64-1compat32" from "multilib" it breaks /usr/bin/mpg123 but not mpg123 without the full path.
If I uninstall "mpg123-compat32-1.29.0-x86_64-1compat32" both mpg123 and /usr/bin/mpg123 work fine.
If I uninstall "mpg123-compat32-1.29.0-x86_64-1compat32" both mpg123 and /usr/bin/mpg123 work fine.
You can check which binary is being called with 'type' (or 'which'). From the sounds of it, without mpg123-compat32-1.29.0-x86_64-1compat32 installed `type mpg123` will return "/usr/bin/mpg123", whereas with that package installed `type mpg123` will return "/usr/bin/32/mpg123"?
*edit* Hmm no, just read the post above, it must break mpg123 in a different way..
Interesting...I was able to reproduce the OP issue here. This seems to be a multilib quirk. All Current systems updated as of 7 days ago. /etc/profile.d/32dev.sh is not executable
System 1: Slackware64-Current w/ mulitlib, clean install when current hit kernel 5.4 last year.
mpg123 works
/usr/bin/mpg123 fails
System 2: Slackware64-Current pure no multilib
mpg123 works
/usr/bin/mpg123 works
System 3: Slackware64-Current w/ mulitlib, clean install a few months ago
mpg123 works
/usr/bin/mpg123 fails
On the multilib systems, '/usr/bin/32/mpg123' works as well, and sees the full module list. Module listing on System 2 (no multilib) provides identical output for mpg123 and /usr/bin/mpg123.
As another data point, I checked my work PC running 14.2 multilib with mpg123 1.23.4 and all cases played mp3s fine (mpg123, /usr/bin/mpg123 & /usr/bin/32/mpg123).
I think I found the source of the problem. On runtime mpg123 scans for its module directory. If $MPG123_MODDIR is not specified then it tries to scan based on the path specified by the user. You can manually override this by adding the env variable like this:
Code:
$ mpg123 --list-modules
Available modules
-----------------
alsa output Output audio using Advanced Linux Sound Architecture (ALSA).
dummy output Dummy audio output - does not output audio.
oss output Output audio using OSS
pulse output Output audio using PulseAudio Server
sdl output Output audio using SDL (Simple DirectMedia Layer).
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
$ /usr/bin/mpg123 --list-modules
Available modules
-----------------
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
$ MPG123_MODDIR=/usr/lib64/mpg123/ /usr/bin/mpg123 --list-modules
Available modules
-----------------
alsa output Output audio using Advanced Linux Sound Architecture (ALSA).
dummy output Dummy audio output - does not output audio.
oss output Output audio using OSS
pulse output Output audio using PulseAudio Server
sdl output Output audio using SDL (Simple DirectMedia Layer).
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
$ MPG123_MODDIR=/usr/lib/mpg123/ /usr/bin/mpg123 --list-modules
Available modules
-----------------
raw output raw headerless stream (builtin)
cdr output compact disc digital audio stream (builtin)
wav output RIFF WAVE file (builtin)
au output Sun AU file (builtin)
test output output into the void (builtin)
hex output interleaved hex printout (builtin)
txt output plain text printout, a column per channel (builtin)
I think the problem might be upstream. If you don't specify the environment it tries to search relative to the binpath. modulesearch[] is not aware of 64bit paths.
lib64_moddir_fix.patch
Code:
diff -Naur mpg123-1.28.2-original/src/libout123/module.c mpg123-1.28.2/src/libout123/module.c
--- mpg123-1.28.2-original/src/libout123/module.c 2021-07-11 00:17:04.000000000 -0700
+++ mpg123-1.28.2/src/libout123/module.c 2021-09-17 20:04:45.764270212 -0700
@@ -29,7 +29,8 @@
to wide and then replace / by \. No need to define another list. */
static const char* modulesearch[] =
{
- "../lib/mpg123"
+ "../lib64/mpg123"
+ , "../lib/mpg123"
,"plugins"
,"libout123/modules/.libs"
,"libout123/modules"
patch -p1 < lib64_moddir_fix.patch in source/ap/mpg123/mpg123.SlackBuild seems to solve the problem.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.