当前位置: 首页>>技术教程>>正文


在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的解决方案吗?

最佳解决思路

精简版:

使用以下方式在终端启动蒸汽:

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))

似乎蒸汽使用不同版本的libstdc++.so.6。让我们检查一下蒸汽使用的版本:

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装载了带有ABI版本18的LibC6,其中驱动程序期望版本20.解决方案是告诉操作系统使用LD_PRELOAD变量预加载正确的LibC6版本:

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

稍微有点non-intuitive $ 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版本。

更多细节可以在here上找到。请注意,我在Debian上测试它,现在它已经在Ubuntu生动15.04上测试过并且工作正常。

次佳解决思路

另一个帮助我启动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

现在蒸汽发射没有任何额外的pre-loads。希望这能帮助在Ubuntu 16.04上遇到同样问题的每个人

第三种解决思路

也许Steam运行时中的gcc库与您的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

第四种思路

显然当尝试在64位Ubuntu 15.04中安装Steam时会发生此错误。

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

我收到了这个错误,但仔细观察后我注意到steam是一个32位应用程序,所以我安装了一些32位库,我重新安装了NVIDIA驱动程序,因此Steam能够启动。

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位库时,单击是。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/3073.html,未经允许,请勿转载。