Проблема с установкой Steam на Ubuntu 15.04+

Вопрос или проблема

На самом деле я установил новый 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 и позже

IMG: 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

Причины и решения

Причина проблемы:

  1. Конфликт библиотек: Steam устанавливает старые версии библиотек, что вызывает конфликт с современными драйверами Mesa.
  2. Недостающие библиотеки: В системе могут отсутствовать необходимые пакеты.

Решения проблемы:

Удаление конфликтующих библиотек

  1. Переименуйте старую версию 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
  2. Если возникли проблемы с директориями, найдите путь с помощью команды:

    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.

Оцените материал
Добавить комментарий

Капча загружается...