我想在 Debian Wheezy 64 位上玩 Aquaria 游戏。安装顺利,但是当尝试玩游戏时出现以下错误:
ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib control.c:951:(snd_ctl_open_noupdate) Invalid CTL hw:0
AL lib: alsa.c:1000: control open (0): No such file or directory
Message: SDL_GL_LoadLibrary Error: Failed loading libGL.so.1
我添加了 32 位兼容性,dpkg --add-architecture i386
并且我认为系统中存在所需的库,因为输入locate libasound_module_conf_pulse.so
结果如下:
/usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
和locate libGL.so.1
:
/etc/alternatives/glx--libGL.so.1-x86_64-linux-gnu
/usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1
/usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1.2
/usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1
/usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1.2
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/fglrx/fglrx-libGL.so.1.2
/usr/lib/x86_64-linux-gnu/fglrx/libGL.so.1
然而,Debian 似乎忽略了它们。我可以做什么来玩 Aquaria?
编辑1:ldd水族馆
linux-gate.so.1 => (0xf77e1000)
libSDL-1.2.so.0 => /opt/Aquaria/./libSDL-1.2.so.0 (0xf7748000)
libopenal.so.1 => /opt/Aquaria/./libopenal.so.1 (0xf76fa000)
libstdc++.so.6 => /opt/Aquaria/./libstdc++.so.6 (0xf760d000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf75c3000)
libgcc_s.so.1 => /opt/Aquaria/./libgcc_s.so.1 (0xf75b8000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf7455000)
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf7451000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7437000)
librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf742e000)
/lib/ld-linux.so.2 (0xf77e2000)
答案1
您似乎缺少 32 位库(/usr/lib/x86_64-linux-gnu
包含 64 位库)。现在,让我们找出您的库需要哪些软件包:
$ dpkg -S /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
libasound2-plugins:amd64: /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
$ dpkg -S /usr/lib/x86_64-linux-gnu/libGL.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
因此您需要这些软件包的 32 位版本:
# apt-get install libasound2-plugins:i386 libgl1-mesa-glx:i386
一般来说,在安装任何 32 位库之前,必须将架构添加i386
到dpkg
:
# dpkg --add-architecture i386
# apt-get update
更新
由于上述方法没有解决libGL.so.1
问题,并且从您的输出看来ldd
,Aquaria 可以看到其所有必需的库,因此我在 google 上搜索了libGL.so.1
错误消息,并出现了两件事。请按顺序尝试以下 2 种解决方案:
正如所解释的这里尝试符号链接
libGL.so.1
:ln -sv /usr/lib/i386-linux-gnu/libGL.so.1.2 /usr/lib/libGL.so.1
请注意,我修改了链接到的答案中的路径,以便它们与 Debian 相关。
答案这里建议您需要安装libgl1-mesa-glx:i386
(您已经完成)加上libgl1-mesa-dri:i386
(这是我建议您下一步尝试的)。
更新:最终有效的是什么
apt-get purge libgl1-mesa-glx:i386
apt-get install libgl1-mesa-glx:i386
ln -s /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1 /usr/lib/i386-linux-gnu/