Ubuntu 22.04.2 LTS系统Steam依赖安装失败问题求助
Ubuntu 22.04.2 LTS系统Steam依赖安装失败问题求助
你好,看了你的问题,这应该是之前误操作导致系统多架构(amd64/i386)的图形驱动包版本不匹配,加上第三方源(Unity3D和Oibaf PPA)的干扰导致的。我给你整理几个步骤来解决:
1. 先处理Unity3D源的密钥警告
那个Unity3D源的密钥警告虽然不是直接导致Steam安装失败的原因,但先把它处理掉避免后续干扰:
- 导出旧密钥到新的密钥环目录:
sudo apt-key export 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | sudo gpg --dearmor -o /usr/share/keyrings/unity3d-archive-keyring.gpg - 找到Unity3D的源配置文件(通常在
/etc/apt/sources.list.d/目录下,文件名类似hub_unity3d_com_linux_repos_deb.list),打开后把原有内容修改为:deb [signed-by=/usr/share/keyrings/unity3d-archive-keyring.gpg] https://hub.unity3d.com/linux/repos/deb stable main - 最后更新源:
sudo apt update
2. 解决Oibaf PPA的多架构版本不匹配问题
从报错信息能看出来,你的amd64版图形驱动包(比如libgbm1、libgl1-mesa-dri)是Oibaf PPA的较新版本,但i386版是旧版本,直接导致了版本冲突。这里给你两个可选方案:
方案A:禁用Oibaf PPA,改用官方默认驱动(更稳妥)
如果不是必须依赖Oibaf的最新驱动,这个方案能避免后续版本同步问题:
- 先移除Oibaf的PPA源:
sudo apt-add-repository --remove ppa:oibaf/graphics-drivers sudo apt update - 把所有Oibaf的包降级到官方默认版本(版本号可以用
apt-cache policy libgbm1查看官方提供的具体版本):sudo apt install --allow-downgrades libgbm1=22.2.5-0ubuntu0.1~22.04.1 libgbm1:i386=22.2.5-0ubuntu0.1~22.04.1 libgl1-mesa-dri=22.2.5-0ubuntu0.1~22.04.1 libgl1-mesa-dri:i386=22.2.5-0ubuntu0.1~22.04.1
方案B:强制同步Oibaf PPA的i386版本(保留最新驱动)
如果你需要继续使用Oibaf的最新驱动,就得确保amd64和i386的包版本完全一致:
- 先更新源,确保能获取到最新的i386包:
sudo apt update --allow-insecure-repositories - 强制安装和amd64版本匹配的i386包(注意版本号要和你报错里显示的amd64版本完全一致):
sudo apt install libgbm1:i386=23.2~git2306280600.867851~oibaf~j libgl1-mesa-dri:i386=23.2~git2306280600.867851~oibaf~j libegl-mesa0:i386 libglapi-mesa:i386 libglx-mesa0:i386
3. 修复系统的Broken Packages
完成上面的步骤后,执行以下命令彻底修复系统依赖问题:
sudo apt --fix-broken install sudo apt autoremove --purge sudo apt clean sudo apt update && sudo apt upgrade -y
4. 重新安装Steam依赖
最后再尝试安装Steam需要的依赖包,之后启动Steam应该就能正常运行了:
sudo apt install libc6:amd64 libc6:i386 libegl1:amd64 libegl1:i386 libgbm1:amd64 libgbm1:i386 libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libgl1:amd64 libgl1:i386 steam-libs-i386:i386
另外提醒一下,以后处理图形驱动相关的包一定要谨慎,尤其是多架构的包,尽量使用官方源或者靠谱的PPA,避免随意强制安装/卸载核心系统组件,不然很容易再次出现类似的系统损坏问题。
备注:内容来源于stack exchange,提问作者Sprocket




