Проблема с установкой Steam на Ubuntu 15.04+
На самом деле я установил новую 64-битную версию Ubuntu 15.04, и когда я пытаюсь установить Steam на нее, возникает проблема. На самом деле я скачал пакет deb с сайта Steam, установил его, и при запуске ничего не происходит. Я пытался запустить его из терминала и что у меня есть
$ 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
9 ответов
Первоначально это была проблема со Steam в Ubuntu 15.04/15.10. Steam связывает старые библиотеки и сталкивается с mesa драйверами, поэтому закрытые драйверы не видят этой проблемы. Обновление: возможно, вам не хватает некоторых вещей. Смотрите ответ другого mchid.
В github в Steam есть открытая ошибка.
Текущий обходной путь - удалить старую версию lib, по крайней мере, до тех пор, пока клапан не исправит проблему в своем скрипте запуска или что-то в этом роде.
Так что введите эти папки и сделайте это (игнорируйте 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
Если у вас есть проблемы с указанным выше каталогом, попробуйте следующее:
У некоторых людей есть .steam/steam/ubuntu12_32
другие имеют только .steam/ubuntu12_32
, Если у вас нет этих папок, найдите правильное местоположение, проверив, где ваш Steam ищет профиль пользователя:
$ fgrep config= /usr/games/steam
config=$HOME/.steam
Используйте это, чтобы найти местоположение вашей библиотеки:
[config value] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
|
\-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
Это сработало для меня... но, пожалуйста, обратите внимание, что если какая-то игра требует, чтобы старая библиотека была запущена в Steam, она может вылететь (вот почему клапан должен это исправить)
Изменить 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
Также, пожалуйста, помните, что при каждом обновлении Steam Runtime вам, вероятно, потребуется запускать это.
Изменить 2016-02-16:
Также посмотрите ответ mchid ниже, просто сделав:
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386
может быть достаточно, чтобы это исправить.
Изменить 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
Для драйверов с закрытым исходным кодом NVIDIA см. Ответ Винсента ниже.
Изменить 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.
и затем steam crash, затем вы попадаете в эту ошибку, которая считается нефатальной, но она приводит к краху steam в тех же дистрибутивах. Обходной путь это:
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
удачи
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}
Следующее является ошибкой при установке Steam в Ubuntu 15.04 и является, безусловно, самым простым ответом на этот вопрос (как отмечено выше Tahtisilma). Я хотел бы добавить, что если вы хотите избежать боли, связанной с использованием командного терминала каждый раз, вы можете отредактировать файл рабочего стола либо на рабочем столе, щелкнув правой кнопкой мыши и выбрав свойства, а затем заменив команду в файле рабочего стола на следующий:
sh -c "LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam"
Укороченная версия:
Запустите пар в терминале, используя:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
вместо просто пара
Длинная версия:
Steam не может открыть nouveau_dri.so, общую библиотеку, отвечающую за связь с графическим драйвером. Чтобы проверить, включен ли драйвер OpenGL, выполните:
DISPLAY=:0 glxinfo | grep -i direct
Выход должен быть:
прямой рендеринг: Да Запуск steam в режиме отладки:
DISPLAY=:0 LIBGL_DEBUG=verbose steam
Дает нам вывод, где следующие строки дают нам подсказку:
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))
Похоже, что 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
Таким образом, Steam загрузил LibC6 с ABI версии 18, где драйвер ожидает версию 20. Решение состоит в том, чтобы сказать ОС предварительно загрузить нужную версию LibC6, используя переменную LD_PRELOAD:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
Несколько неинтуитивный параметр $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
Лучший сценарий может проверить, является ли глобальная версия LibC6 более новой, чем версия в STEAM_RUNTIME, и только в этом случае LD_PRELOAD.
Более подробную информацию можно найти здесь. Обратите внимание, что я тестировал его на Debian, и теперь он был протестирован на Ubuntu Vivid 15.04 и работает нормально.
Это прекрасно работает для меня под Ubuntu 15.04 64bit с проприетарным драйвером NVIDIA версии 346:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Это простое исправление.
Согласно сообщению об ошибке, вам не хватает следующих файлов:r600_dri.so
а также swrast_dri.so
Выполните следующие команды, чтобы установить эти отсутствующие файлы:
sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386
Теперь проблема должна быть решена.
Пожалуйста, опубликуйте любые дополнительные ошибки.
Эти две строки из комментария Менашех по проблеме github работают с Ubuntu 15.10:
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
Обратите внимание, что если Steam обновляется сам, вам может понадобиться ввести эти строки снова.
Исправление для Ubuntu 16.04, Xenial Xerus, 64-разрядная версия
У меня только была проблема со Steam с момента обновления до 16.04, она работала нормально 14.04. Я перепробовал все исправления выше для более старых версий Ubuntu.
Вторая часть этого решения работала для меня.
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install wget gdebi libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386
$ wget http://media.steampowered.com/client/installer/steam.deb
$ sudo gdebi steam.deb
Теперь я снова запускаю L4D2 в Ubuntu - отлично!
Просто столкнулся с этой проблемой на новой установке Ubuntu 18.04 LTS. Оказывается, Steam Runtime-версия libgcc_s.so.1
был виновником Переименование файла устранило проблему для меня:
$ cd ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/
$ mv libgcc_s.so.1 libgcc_s.so.1.bak
16.04 и позже
Steam может быть установлен как пакет flatpak во всех поддерживаемых в настоящее время версиях Ubuntu. Откройте терминал и введите:
sudo add-apt-repository ppa: alexlarsson / flatpak # требуется только в 16.04, но не в более поздних выпусках обновление sudo apt sudo apt установить flatpak flatpak удаленное добавление --if-not-существующие flathub https://flathub.org/repo/flathub.flatpakrepo flatpak установить flathub com.valvesoftware.Steam
Первая команда для добавления ppa: alexlarsson / flatpak не требуется в 18.04 и более поздних версиях, поскольку пакет flatpak находится в репозиториях по умолчанию.
Steam можно запустить, нажав на его иконку в Dash, или запустить из терминала с помощью следующей команды:
flatpak run com.valvesoftware.Steam
Многие игры требуют онлайн-покупки, но в некоторые популярные игры, такие как Team Fortress 2, можно играть бесплатно. При поиске в магазине обязательно сузьте результаты по операционной системе SteamOS/Linux. Не все игры для Linux совместимы с вашей системой, поэтому обязательно проверьте требования перед покупкой игр.