Steam在Ubuntu 16.04 LTS无法打开。

我在上周五之前从未使用过Ubuntu或其他任何Linux操作系统。据我所知,我可能安装Ubuntu时出错了,缺少某个组件。如果可能的话,请尽量使用最简单的术语,但如果需要的话,我可以自己搜索一些信息。我刚刚在Ubuntu 16.04上安装了Steam,但当我点击启动器中的图标时,它不会打开。图标闪烁了几秒钟,然后停止,什么都没有发生。我查看了系统监视器,Steam在那里显示出来,但是结束进程并再次尝试并没有起作用。我听说通过终端打开不工作的应用程序可以告诉你错误是什么,所以我尝试了一下,得到了以下信息:
Running Steam on ubuntu 16.04 64-bit
STEAM_RUNTIME is enabled automatically
Installing breakpad exception handler for appid(steam)/version(0)
libGL error: unable to load driver: radeonsi_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: radeonsi
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast

请帮忙,我只是想再次玩CS:GO。

似乎是驱动程序的问题。您正在使用哪个驱动程序,以及您的显卡是什么型号?此外,我找到了这个链接:https://wiki.archlinux.org/index.php/Steam/Troubleshooting#Steam_runtime_issues - 它与免费的AMD驱动程序有关。您在"附加驱动程序"中看到其他可供选择的驱动程序吗? - Joakim Koed
我的破烂小Toshiba笔记本电脑配备了一块AMD A4-5000处理器和Radeon HD 8330集成显卡。性能并不强大。在“额外驱动程序”菜单中,唯一可用的驱动程序是AMD CPU的专有驱动程序。是否有其他可用的替代驱动程序? - Never2MuchPizza
不太确定那个GPU:/ 但是我会检查一下链接,可能有一些解决办法。 - Joakim Koed
它在assert_20160820112154_1.dmp[8558]之后停止了:文件''/tmp/dumps/assert_20160820112154_1.dmp'',上传成功:''CrashID=bp-3f997128-c49b-4a1f-9f2f-9d7f82160819''。 - Casper
@Never2MuchPizza 在16.04上,对于大多数AMD GPU,您可以使用开源驱动程序(专有驱动已经被放弃),请参阅https://help.ubuntu.com/community/RadeonDriver - qkrijger
11个回答

这个问题只存在于Ubuntu 16.04版本。在Ubuntu 16.10上安装steam:i386软件包来自Ubuntu的multiverse仓库(该仓库默认已启用),大部分问题都已修复。要在Ubuntu 16.04上修复此问题:
推荐解决方案: 如果您刚刚安装了Steam,请确保关闭Steam并转到~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/,然后删除链接libstdc++.so.6
rm ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
这样就可以正常启动了。让它进行更新。更新完成后,如果出现相同的消息(第一次更新后该文件将被重新创建),请确保关闭Steam并执行相同的操作。此外,如果您使用的是64位系统,请转到~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/并删除libstdc++.so.6
rm ~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6
rm ~/.steam/steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6

在某些系统中,libstdc++.so.6会不断重新创建。如果是这种情况,请创建一个具有可执行权限的脚本steam.sh
#!/bin/bash
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
steam
然后,在Steam的桌面入口更改Exec=行为steam.sh脚本的绝对路径。每次您想玩游戏时,先使用修改后的桌面入口打开Steam,然后从Steam内部运行游戏。来源:https://wirejungle.wordpress.com/2015/01/09/how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/

成功了!为什么那个文件会引起问题呢? - JobHunter69
6@Goldname Steam使用自己的库来独立于系统的库。然而,它无法包含所有内容(如所有驱动程序和其他东西),而radeon驱动程序使用的libstdc++.so文件是一个较新版本,与steam运行时包含的版本不兼容。通过删除此文件,您使其寻找您系统的库,而不是steam运行时的库。 - Thanos Apostolou
也适用于Ubuntu 16.04上的RocketLeague。 - jvriesem
没问题。开始了“正在更新Steam…”窗口。谢谢! - marc-andre benoit
这个方法有效...但是现在每次我重启电脑,Steam都会重新解压并要求重新下载所有游戏,并重新验证Steam Guard。 - rideoutcolin
@rideoutcolin 看看这个解决方案,而不是 https://wirejungle.wordpress.com/2015/01/09/how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/。我会在有更多时间时升级答案并包含它。 - Thanos Apostolou
在我的情况下,Ubu 16.10这个版本并不够用,因为Steam在驱动程序问题上没有进行更新。请查看我在类似情况下的评论。 - przemo_li
在16.10版本中仍然无法正常工作。 - Enigma
@Enigma 你在从终端启动时是否看到相同的错误?请参考przemo_li的回答,告诉我是否有帮助。 - Thanos Apostolou
这对于Debian stretch/sid也适用! - Hereblur
1@ThanosApostolou 是的,我也遇到了相同的libGL error。我不得不从这里运行第一个命令:https://steamcommunity.com/app/221410/discussions/0/412446292752412961/#c412446292752457261 - Enigma
"Steam桌面入口"是什么意思? - arsaKasra
我从启动器中拖放了Steam图标到桌面,然后按照你说的替换了Exec='这一行,但是出现了一个错误,显示"启动应用程序时发生错误"。 - arsaKasra
@arsaKasra 我猜你在谈论第二个解决方案。你做得对,通过从启动器中拖动文件来确保脚本是可执行的,并且你有正确的路径。例如,在你的主文件夹中创建一个名为steam.sh的文件,并按照答案中描述的脚本进行设置。给予它可执行权限(右键点击并勾选允许执行的选项)。最后,将桌面入口的行更改为绝对路径:Exec=/home/$USER/steam.sh - Thanos Apostolou
我不得不去cd ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu这个目录。 - Morgoth
@Morgoth ~/.steam/steam 应该是一个指向 ~/.local/share/Steam 的符号链接。所以,无论哪种方式都可以。如果你说 ~/.steam 文件夹根本不存在,请告诉我你使用的 Ubuntu 版本以及你是如何安装 Steam 的(是从 Ubuntu 的软件源还是从 Steam 的官方网站),这样我才能在回答中包含相关信息。 - Thanos Apostolou
我正在使用Kubuntu 16.04操作系统。我是从Steam的官方网站上下载并安装的。在初始状态下,~/.steam/steam的符号链接貌似不存在。但现在看起来已经存在了。可能当我第一次查找时没有注意到,或者在我成功运行Steam后自动设置好了。 - Morgoth

我使用了Ubuntu软件源中的包来安装Steam,而不是使用Steam的.deb文件。显然,Ubuntu提供的包经过修改以适应Ubuntu系统。
  1. 移除 Valve 软件包:

    sudo apt purge steam-launcher
    
  2. 如果软件包没有被删除,请删除存储库:

    sudo rm /etc/apt/sources.list.d/steam.list
    
  3. 重新加载源列表:

    sudo apt update
    
  4. 从存储库安装 Steam:

    sudo apt install steam
    
更多详细信息请参见:https://www.reddit.com/r/linux_gaming/comments/57clur/cant_run_steam_on_ubuntu_1610/

4在Ubuntu 17.10上对我来说运行良好。 - Chofoteddy
我刚刚也在Ubuntu 17.10上尝试了一下,对我来说是可行的。 - Daniel
对我也起作用了 - Tek
同样的问题也在Elementary OS Loki上修复了。 - Michael Fulton
这对我在PopOS(Ubuntu)上刚刚起作用了。 - Tricky
18.04 beta上的情况也是一样的。 - maaarghk
对我来说,在18.04上运行正常。 - NWS

试试这个:
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

1我个人认为这是一个更好的答案。请注意,在Mint 18(16.04)中,那些路径是错误的。正确的路径应为 /.steam/steam/ubuntu12_32/...(请注意在 /ubuntu12_32 前面路径中多了 /steam/)。 - dhaupin
当我第一次尝试时,路径就像你的评论中所说的那样,但是在重新安装后,它没有额外的'/steam/'。为什么会这样呢? - Igor V.
只有前两个命令在我的17.04上有效,但之后Steam可以使用了。谢谢。 - We are Borg

在我的情况下,有一个方法对我很有效,就是在可执行文件 steam 前面添加这个环境变量。
env LD_PRELOAD='/usr/$LIB/libstdc++.so.6' steam

尝试在控制台中运行它,看看是否有效。
如果是的话,你可以编辑你的Steam桌面快捷方式,加入这个命令:
env LD_PRELOAD='/usr/$LIB/libstdc++.so.6' /usr/bin/steam %U

替换为旧值:
/usr/bin/steam %U

同样地,您可以更新您的CS: GO桌面快捷方式,以包含以下命令:
env LD_PRELOAD='/usr/$LIB/libstdc++.so.6' steam steam://rungameid/730

我对它在做什么毫无头绪,但它似乎对我有效...
希望能有所帮助,也希望Valve能尽快修复它!

这个对我在Ubuntu 17.10上有效。 - Jonathan

2019
Steam二进制文件是32位的。最近的Nvidia驱动程序版本不再支持32位应用程序。要在Ubuntu 18.04上修复此问题:
1. 运行命令sudo add-apt-repository ppa:graphics-drivers/ppa 2. 运行命令nvidia-settings并检查您的Nvidia驱动程序主要版本号。例如,我的版本是:NVIDIA驱动程序版本:430.26(因此,430) 3. 运行命令sudo apt install libnvidia-gl-{{MAJOR VERSION NUMBER}}:i386 例如,如果我的Nvidia驱动程序主要版本号是430,那么我的命令将变成sudo apt install libnvidia-gl-430:i386 但是,Steam,真的只支持32位吗?

这在Ubuntu 16.04上没有起作用。它报了一个"glXChooseVisual失败"的错误。有什么办法可以修复吗?我也使用nvidia 430驱动程序。 - exAres
谢谢!对于Ubuntu 20.04来说,它有效。 - Samet Kaplan

日志显示图形驱动程序未正确安装。
我在安装了16.04的新系统时遇到了类似的问题。 我已经重新安装了图形驱动程序。
以下链接是关于在安装了Ubuntu 16.04和NVIDIA图形驱动程序后出现图形问题的第一个答案。

Nvidia驱动程序版本是多少? - exAres

对于来到这里并希望获得一个简单解决方案的Gentoo用户,以下是我所做的操作。
第一步:
移除问题引发者:
rm -i $(find ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/installed \
    -iname 'libstdc++*' -or -iname 'libgcc_s*')

第二步

创建一个启动脚本:

#!/bin/sh
export LD_PRELOAD=$(echo /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/{,32/}{libstdc++.so.6,libgcc_s.so.1})
export DISPLAY=:0
/usr/bin/steam

它会产生很多关于“错误的ELF类”的警告,但我忽略它们。另外,根据你安装的gcc版本更改路径。随意进行改进(使用gcc-config -L等)。


安装Solus版本的Steam而不是官方的(.deb)版本,这对我来说解决了问题。
首先,删除官方版本:
sudo apt purge steam-launcher

然后安装Solus版本:
sudo snap install --edge solus-runtime-gaming
sudo snap install --devmode --edge linux-steam-integration

现在从启动器中启动Steam。

你觉得你可能缺少启动Steam所需的图形驱动程序吗?如果是这样,并且你使用的是Nvidia显卡,这个解决方案可能会对你有帮助。
如果你没有ubuntu-drivers,请使用以下命令进行安装:
sudo apt update && sudo apt install ubuntu-drivers

然后检查您的设备要求是什么:
ubuntu-drivers devices

您将看到列出的许多驱动程序。选择推荐的驱动程序,例如:driver : nvidia-driver-460 - distro non-free recommended 检查一下是否安装了旧版的Nvidia驱动程序:
apt list -i | grep nvidia

例如,如果您看到Nvidia 450驱动程序,请使用以下方法删除:
sudo apt purge nvidia-*-450

现在你应该准备好安装新的驱动程序了。
sudo apt install nvidia-driver-460

如果你遇到任何问题,比如依赖关系,只需在安装行中添加它,例如。
sudo apt install nvidia-driver-460 nvidia-kernel-source-460

完成后,重新启动。
sudo reboot