sab*_*ami 104 steam software-installation
实际上,我已经安装了新的 Ubuntu 15.04 64 位,当我尝试在其上安装 Steam 时,出现了问题。事实上,我已经从 Steam 网站下载了 deb 包,安装了它,当我启动它时什么也没有发生。我试图从终端启动它以及我所拥有的
$ steam
Running Steam on ubuntu 15.04 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(0_client)
libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
Run Code Online (Sandbox Code Playgroud)
hig*_*ita 115
这最初是 Ubuntu 15.04/15.10 上 Steam 的问题。Steam 捆绑旧库并与 mesa 驱动程序发生冲突,这也是关闭的驱动程序没有看到此问题的原因。更新:也可能是您遗漏了一些东西。查看其他 mchid 的回答。
当前的解决方法是删除旧的 lib 版本,至少在 Valve 修复其启动脚本中的问题或类似内容之前。
因此,输入这些文件夹并执行此操作(x86_64
如果您只有 32 位系统,请忽略):
cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
cd $HOME/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
Run Code Online (Sandbox Code Playgroud)
如果上面的目录有问题,那么你应该试试这个:
有些人有.steam/steam/ubuntu12_32
,有些人只有.steam/ubuntu12_32
。如果您没有这些文件夹,请通过检查您的 Steam 正在寻找用户配置文件的位置来找到正确的位置:
$ fgrep config= /usr/games/steam
config=$HOME/.steam
Run Code Online (Sandbox Code Playgroud)
使用它来查找您的 lib 位置:
[config value] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
|
\-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
Run Code Online (Sandbox Code Playgroud)
它对我有用...但请注意,如果某些游戏需要来自 Steam 运行时的旧库,它可能会崩溃(这就是 Valve 应该修复此问题的原因)
编辑 2015-08-22:
由于 Steam 现在有一个$HOME/.steam/root
始终指向正确的 Steam 安装目录的链接,这个命令应该适用于所有人,而且它更容易快速修复:
find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ -name "libstdc++.so.6" -exec mv "{}" "{}.bak" \; -print
Run Code Online (Sandbox Code Playgroud)
另外,请记住,在每次 Steam 运行时更新时,您可能都需要运行它。
编辑 2016-02-16:
另请参阅下面的mchid回复,只需执行以下操作:
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386
Run Code Online (Sandbox Code Playgroud)
可能足以解决这个问题。
编辑 2016-10-23:
对于ubuntu 16.10,该命令已更新以删除更多破坏 mesa 驱动程序的文件,因此此新命令应该可以工作:
find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ \( -name "libstdc++.so.6" -o -name "libgpg-error.so.0" -o -name "libxcb.so.1" -o -name "libgcc_s.so.1" \) -exec mv "{}" "{}.bak" \; -print
Run Code Online (Sandbox Code Playgroud)
对于NVIDIA 闭源驱动程序,请参阅下面 Vincent 的回复。
编辑 2017-01-08:
可能是最终编辑,如果不是所有问题,最新的 Steam linux 更新应该可以解决大部分问题!最后!:D
编辑 2017-08-03:
可悲的是,度假回来发现最近的一些更新再次打破了势头。因此,如果您在启动时遇到此问题,请在更新下载后:
process 23148: arguments to dbus_connection_ref() were incorrect, assertion "connection->generation == _dbus_current_generation" failed in file dbus-connection.c line 2688.
Run Code Online (Sandbox Code Playgroud)
然后蒸汽崩溃,然后你遇到了这个 错误,报告为非致命的,但它确实在相同的发行版上崩溃了。解决方法是这样的:
ln -s ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libdbus-1.so.3 ${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32/libdbus-1.so.3
Run Code Online (Sandbox Code Playgroud)
祝你好运
小智 20
Fastfix(在 Ubuntu 15.04 上测试)
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1{,.disable}
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6{,.disable}
Run Code Online (Sandbox Code Playgroud)
小智 18
以下内容来自在 ubuntu 15.04 上安装 Steam 时出错,是迄今为止对这个问题最简单的答案(如tahtisilma上面所述)。我想补充一点,如果您想避免每次都必须使用命令终端的痛苦,那么您可以在桌面上编辑桌面文件,方法是右键单击并选择属性,然后将桌面文件中的命令替换为下列的:
sh -c "LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam"
Run Code Online (Sandbox Code Playgroud)
使用以下命令在终端中启动 Steam:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
Run Code Online (Sandbox Code Playgroud)
而不仅仅是蒸汽
Steam 无法打开 nouveau_dri.so,负责与图形驱动程序通信的共享库。要检查驱动程序是否启用了 OpenGL,请运行:
DISPLAY=:0 glxinfo | grep -i direct
Run Code Online (Sandbox Code Playgroud)
输出应该是:
直接渲染:是在调试模式下运行蒸汽:
DISPLAY=:0 LIBGL_DEBUG=verbose steam
Run Code Online (Sandbox Code Playgroud)
给我们输出,下面几行给了我们提示:
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))
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
所以 Steam 加载了带有 ABI 版本 18 的 LibC6,其中驱动程序需要版本 20。解决方案是告诉操作系统使用 LD_PRELOAD 变量预加载正确的 LibC6 版本:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
Run Code Online (Sandbox Code Playgroud)
有点不直观的 $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
Run Code Online (Sandbox Code Playgroud)
一个更好的脚本可以检查全局 LibC6 版本是否比 STEAM_RUNTIME 中的版本新,然后才是 LD_PRELOAD 的版本。
可以在此处找到更多详细信息。请注意,我在 Debian 上对其进行了测试,现在它已经在 Ubuntu vivid 15.04 上进行了测试并且运行良好。
小智 8
这对我在 Ubuntu 15.04 64bits 和专有驱动程序 NVIDIA 版本 346 下工作正常:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Run Code Online (Sandbox Code Playgroud)
这是一个简单的修复。
根据错误消息,您缺少以下文件:r600_dri.so
和swrast_dri.so
运行以下命令来安装这些丢失的文件:
sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386
Run Code Online (Sandbox Code Playgroud)
现在应该可以解决问题了。
请发布任何其他错误。
归档时间: |
|
查看次数: |
119270 次 |
最近记录: |