- Вопрос или проблема
- Краткая версия:
- Длинная версия:
- 16.04 и позже
- Ответ или решение
- Проблема с установкой Steam на Ubuntu 15.04 и более поздних версиях
- Причины и решения
- Удаление конфликтующих библиотек
- Обновление и установка недостающих пакетов
- Использование переменной окружения LD_PRELOAD
- Альтернативный способ установки через Flatpak
- Заключение
Вопрос или проблема
На самом деле я установил новый Ubuntu 15.04 64-бит, и при попытке установить 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
Это изначально была проблема со Steam на Ubuntu 15.04/15.10. Steam содержит старые библиотеки, которые конфликтуют с драйверами mesa, и поэтому закрытые драйверы не сталкиваются с этой проблемой. Обновление: возможно, вам также не хватает некоторых компонентов. Смотрите другие ответы mchid.
На GitHub Steam открыта ошибка.
Текущий обходной путь — удалить старую версию библиотеки, по крайней мере до тех пор, пока Valve не исправят проблему в своем скрипте запуска или чем-то подобным.
Итак, зайдите в эти папки и выполните это (игнорируйте 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] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
|
\-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
Это сработало для меня… но, пожалуйста, учтите, что если какая-то игра требует эту старую библиотеку из среды выполнения Steam, она может зависать (поэтому Valve должны это исправить)
Изменение 2015-08-22:
Так как теперь в $HOME/.steam/root есть ссылка, которая всегда указывает на правильную папку установки Steam, эта команда должна работать для всех и проще для быстрого исправления:
find $HOME/.steam/root/ubuntu12_32/steam-runtime/*/usr/lib/ -name "libstdc++.so.6" -exec mv "{}" "{}.bak" \; -print
Также, пожалуйста, помните, что при каждом обновлении среды выполнения Steam, вам, скорее всего, нужно будет запускать это снова.
Изменение 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 должно исправить большинство, если не все проблемы! наконец! 😀
Изменение 2017-08-03:
К сожалению, вернувшись из отпуска, обнаружил, что какой-то недавний апдейт снова сломал Steam. Если вы получаете это при старте, сразу после загрузки обновления:
process 23148: arguments to dbus_connection_ref() were incorrect, assertion "connection->generation == _dbus_current_generation" failed in file dbus-connection.c line 2688.
и затем Steam падает, тогда это этот баг, заявленный как не фатальный, но он действительно крашит 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
удачи
Быстрое исправление (проверено на 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"
Краткая версия:
Запускайте Steam в терминале с использованием:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
вместо обычного steam
Длинная версия:
Steam не может открыть nouveau_dri.so, общую библиотеку, ответственную за работу с графическим драйвером. Чтобы проверить, активирован ли драйвер OpenGL, выполните команду:
DISPLAY=:0 glxinfo | grep -i direct
Вывод должен быть следующим:
direct rendering: Yes
Запуск 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 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 64 бита с проприетарным драйвером 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
Проблема должна быть решена.
Пожалуйста, сообщите о любых дополнительных ошибках.
Исправление для 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 — отлично!
Эти две строки из комментария менашеха на github issue работают с Ubuntu 15.10:
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
Учтите, что если Steam обновится, вам, возможно, придется ввести эти строки снова.
Я столкнулся с этой проблемой на свежей установке Ubuntu 18.04 LTS. Оказывается версия libgcc_s.so.1
в среде выполнения Steam была виновником. Переименование файла решило проблему для меня:
$ 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 update sudo apt install flatpak sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install flathub com.valvesoftware.Steam
Первая команда для добавления ppa:alexlarsson/flatpak не требуется в 18.04 и позднее, потому что пакет flatpak находится в стандартных репозиториях.
Steam можно запустить, нажав на его иконку в Dash, или запустить из терминала следующей командой:
flatpak run com.valvesoftware.Steam
Многие игры требуют онлайн-покупки, но некоторые популярные игры, такие как Team Fortress 2, можно играть бесплатно. При поиске в магазине обязательно сужайте результаты по операционной системе SteamOS/Linux. Не все игры для Linux совместимы с вашей системой, поэтому перед покупкой игр обязательно проверяйте требования.
.
Ответ или решение
Проблема с установкой Steam на Ubuntu 15.04 и более поздних версиях
Если вы столкнулись с трудностями при установке Steam на Ubuntu 15.04+, эта статья поможет вам разобраться с проблемой. Основная причина неисправности заключается в конфликте библиотек Steam с драйверами Mesa, что может проявляться в следующих сообщениях об ошибках:
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
Причины и решения
Причина проблемы:
- Конфликт библиотек: Steam устанавливает старые версии библиотек, что вызывает конфликт с современными драйверами Mesa.
- Недостающие библиотеки: В системе могут отсутствовать необходимые пакеты.
Решения проблемы:
Удаление конфликтующих библиотек
-
Переименуйте старую версию
libstdc++.so.6
, чтобы использовать системную версию: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
-
Если возникли проблемы с директориями, найдите путь с помощью команды:
fgrep config= /usr/games/steam
Обновление и установка недостающих пакетов
Запустите следующие команды для обновления системы и установки необходимых пакетов:
sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386
Использование переменной окружения LD_PRELOAD
Используйте команду, чтобы принудительно загрузить библиотеку libstdc++.so.6
из системной директории:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 steam
Создайте скрипт для автоматизации этой команды:
#!/bin/bash
export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0
steam
Альтернативный способ установки через Flatpak
Для Ubuntu 16.04 и более поздних версий Steam можно установить через Flatpak:
sudo add-apt-repository ppa:alexlarsson/flatpak # Только для Ubuntu 16.04
sudo apt update
sudo apt install flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.valvesoftware.Steam
Запустите Steam с помощью:
flatpak run com.valvesoftware.Steam
Заключение
Эти решения помогут вам справиться с проблемами установки Steam на Ubuntu 15.04+. Важно следить за обновлениями Steam и драйверов в вашей системе, чтобы избежать подобных конфликтов в будущем. В случае возникновения новых ошибок рекомендуется обращать внимание на открытые баги и предлагаемые исправления на официальных форумах и репозиториях Steam.