问题描述
升级到 Ubuntu 16.04 后,Steam 无法启动。当我从命令行执行它时,出现以下错误:
$ steam
Running Steam on ubuntu 16.04 64-bit
STEAM_RUNTIME is enabled automatically
grep: symbol lookup error: grep: undefined symbol: pcre_jit_stack_alloc
grep: symbol lookup error: grep: undefined symbol: pcre_jit_stack_alloc
grep: symbol lookup error: grep: undefined symbol: pcre_jit_stack_alloc
Installing breakpad exception handler for appid(steam)/version(1459463254)
最佳方法
我从 14.04 LTS 升级到 16.04 LTS,但也无法启动 Steam。它开始了(我的意思是,’steam’ 继续运行),但几秒钟后没有任何反应。
对我来说,我最终找到的解决方法是从命令行运行 Steam:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' steam
以下为非必要信息。
Steam 本质上提供了一个 “mini distribution”,称为 Steam Runtime,但它目前尚未完成完整的工作,因此它与系统 C++ 标准库和/或其他库发生了冲突。在我的实验过程中,我还抱怨系统 libreadline6 <-> Steam 运行时 libtinfo5。当我手动解压Steam目录下的steam运行时tarball包以覆盖我之前在那里的内容后,它变成了这个问题(pcre_jit_stack_alloc)中所描述的。
一个有趣的花絮是,在我找到上述解决方案之前,我能够启动 Steam,因此它通过使用导出 STEAM_RUNTIME=0 暂时禁用 Steam 运行时来为自己下载升级。 Steam 本身无法运行,但这是我向前迈出的第一步。我尝试安装所需的 32 位库的系统等效项,但没有完成/使其正常工作。
次佳方法
执行以下命令每次对我来说都有效。
LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /$LIB/libgpg-error.so.0' steam