在Ubuntu 15.04 64位上启动Steam时出现问题。

安装和更新后,每次我启动Steam时,都会出现以下错误:
Running Steam on ubuntu 15.04 64-bit
STEAM_RUNTIME is enabled automatically
[2015-05-02 16:48:39] Startup - updater built Apr 13 2015 15:17:10
SteamUpdateUI: An X Error occurred
X Error of failed request:  BadValue (integer parameter out of range for operation)

我试图找到一个类似错误的解决方案,但是我没有找到。 有人可以帮忙吗?

你到底更新了什么?只是Steam吗?之前它有用过吗?"integer parameter out of range for operation"这个错误让我觉得可能是Steam应用程序的一个bug。 - Hi-Angel
我在安装完后做了常规更新,然后尝试安装Steam。虽然Steam已经安装成功,但是无法启动。 - QuietSwami
“X Error of failed request…” 是 Steam 在退出前打印的最后一行吗?如果不是,您能否在帖子中添加更多行? - Hi-Angel
是的,终端一直在运行Steam,所以我可以添加更多的行。 - QuietSwami
等等,那问题是什么?是蒸汽窗口没有出现但应用程序仍在工作吗?还是蒸汽在标准输出中打印错误并退出?此外,如果它继续打印更多的错误,你应该将这些添加到帖子中(你实际上可以排除重复的消息)。 - Hi-Angel
好的,我有一种感觉这可能是一个长时间的讨论,所以这里有一个检查的想法:如果Steam应用程序正在运行,但窗口没有出现,我建议你运行xinit -- :1(注意空格)- 这应该为您创建一个新的X服务器(要切换前后,请按“Ctrl+Alt+F[7,8]”)。尝试在那里启动Steam看看窗口是否出现。 - Hi-Angel
我会尝试这样做,但是回答你的第一个问题,当我启动Steam时会出现错误,但是进程不会关闭,它会一直在后台运行,直到我关闭进程。 - QuietSwami
3我遇到了同样的问题,这个解决方案对我有效:http://askubuntu.com/questions/614422/problem-with-installing-steam-on-ubuntu-15-04/614458#614458 - user405943
6个回答

cd $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
cd $HOME/.steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak

把这些输入到终端里;对我来说有效。从this thread复制,由sejvenables发布,他又从其他地方复制过来的。

6这个方法可以解决问题,但是反映出Steam安装程序需要更新,因为它使用的库文件过于陈旧。 - Thorbjørn Ravn Andersen
2我确认这在Kubuntu 16.04上完美运行! - Kunok
这个解决方案在Debian 8中也适用。 - Jasen

我在Ubuntu 15.10上遇到了同样的问题,使用了一块nvidia显卡。WPOH的解决方案让Steam正常工作,但导致某些游戏出现明显的性能和鼠标延迟问题。

使用专有的nvidia驱动程序解决了问题,而不影响性能。

要恢复这些更改:

mv $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6{.bak,}
mv $HOME/.steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6{.bak,}

要安装更新的专有NVIDIA驱动程序,请打开“软件和更新”,进入“附加驱动程序”选项,选择最新的二进制NVIDIA驱动程序(目前为352.41),然后重新启动系统。这对我来说起到了作用 :)

2这是一个很好的答案。我不得不点击3个链接才找到导致@WPOH回答的错误,并发现删除那两个库并不令人满意。它解决了问题,但仅仅删除几个文件并不合适。在“软件和更新”中将正确的驱动程序与卡关联起来,让我能够重新运行,而无需在命令行中操作,因为我可能会忘记我发出的命令,并且永远无法撤销。 - JNevill

根据Urgazhi的回答,你可以做以下操作:
  • 在文本编辑器中打开文件$HOME/.steam/steam.sh
  • 将以下内容添加为文件的前两行:

    export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
    export DISPLAY=:0
    
  • 保存并正常启动Steam。


1或者在~/.bash_aliases中设置别名,例如:alias steam="export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'; export DISPLAY=:0; steam" - Iacchus
这个方法是有效的,但是在Steam客户端退出时(至少在Ubuntu 16.04上),steam.sh的原始内容似乎会被恢复。 - Tgr
@Tgr:如果你不能像lacchus上面建议的那样设置别名,可以尝试将steam.sh设置为“只读”。只要确保在接受任何steam更新之前恢复为可写状态(_可能_不会看到文件更改,但安全起见最好如此)。 - Brian Resnik

我遇到这个问题是因为我刚刚安装了专有驱动程序,但还没有重新启动系统。很傻,但希望这能帮到其他人。
重新启动后,Steam对我来说就不再有这个问题了。

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

最简单的启动Steam的方法是将上述shell脚本设置为别名,这样当您在命令行中调用“steam”时,它会执行该脚本。

我之前也遇到了libgl错误的问题 在steam.sh中的修复方法很好用,直到steam更新后。 两天后我发现我的电脑没有以UEFI模式启动。 所以我以UEFI模式启动,steam顺利运行起来了。 希望这个故事对你们有所帮助 :)