在 ubuntu 15.04 上安装 Steam 时出错

在 ubuntu 15.04 上安装 Steam 时出错
agung@agung-K43SJ:~$ steam
Running Steam on ubuntu 15.04 64-bit

STEAM_RUNTIME is enabled automatically

Installing breakpad exception handler for appid(steam)/version(0)

libGL error: unable to load driver: nouveau_dri.so

libGL error: driver pointer missing

libGL error: failed to load driver: nouveau

libGL error: unable to load driver: swrast_dri.so

libGL error: failed to load driver: swrast

在此之前,我也尝试过从终端安装 Steam,但下载更新后它并没有启动。

有人能帮我找到安装 Steam 的解决方案吗?

答案1

简洁版本:

在终端中使用以下命令启动 steam:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

而不仅仅是steam

长版本:

Steam 无法打开nouveau_dri.so,这是负责与图形驱动程序通信的共享库。要检查驱动程序是否启用了 OpenGL,请运行:

DISPLAY=:0 glxinfo | grep -i direct

输出应为:

direct rendering: Yes

在调试模式下运行 steam:

DISPLAY=:0 LIBGL_DEBUG=verbose steam

给出输出,其中以下几行给出提示:

libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/nouveau_dri.so
libGL: dlopen /usr/lib/i386-linux-gnu/dri/nouveau_dri.so failed (/home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/i386-linux-gnu/dri/nouveau_dri.so))

看起来 steam 使用了不同版本的libstdc++.so.6。让我们检查一下 steam 使用的是哪个版本:

ls -l ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6  

lrwxrwxrwx 1 user user 19 Jul 18  2014 /home/user/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.18

因此 Steam 加载的 LibC6 的 ABI 版本为 18,而驱动程序需要的版本为 20。解决方案是告诉操作系统使用 LD_PRELOAD变量预加载正确的 LibC6 版本:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam

有点非直观的 $LIB 参数在 ld.so 中根据正在启动的进程的平台扩展为正确的路径(详情请见 man 8 ld.so)。

您可以创建具有以下内容的脚本来运行它,而不是steam

#!/bin/bash
# Export so all child processes are affected as well
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
#export LIBGL_DEBUG=verbose
steam

更好的脚本可以检查全局 LibC6 版本是否比 中的版本更新STEAM_RUNTIME,然后才LD_PRELOAD检查。

更多详情请参阅这里。请注意,我在 Debian 上对其进行了测试,现在已在 Ubuntu Vid 15.04 上进行了测试并且运行良好。

答案2

另一个帮助我启动 Steam 客户端的解决方案是在这里找到的 -

https://wiki.archlinux.org/index.php/Steam/Troubleshooting

我运行了这个命令 -

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" -o -name "libgpg-error.so*" \) -print -delete

现在 Steam 无需任何额外预加载即可启动。希望这能帮助所有在 Ubuntu 16.04 上遇到同样问题的人

答案3

也许gccsteam 运行时中的库与您的mesa驱动程序不兼容。备份你的主文件夹,然后尝试删除这些库文件:

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1

答案4

显然,当有人尝试在64位Ubuntu 15.04。

我在我的计算机上安装了全新的 Ubuntu 15.04。我还安装了 NVIDIA 专有图形驱动程序。

我收到了这个错误,但仔细查看后,我发现 steam 是一个 32 位应用程序,所以我安装了一些 32 位库,并重新安装了 NVIDIA 驱动程序,蒸汽能够启动。

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./NVIDIA-Linux-x86_64-352.63.run

其中最后一个命令应该是您的驱动程序安装程序。

当驱动程序安装程序要求安装 32 位库时,点击“是”。

相关内容