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

103

На самом деле я установил новую 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
сабля хаммами
источник
Вы случайно используете архитектуру amd?
У меня есть эта ошибка в системе AMD с графическим процессором Radeon, но я все еще на 14.10 - я обновил ядро ​​в aptitude, так что я предполагаю, что ошибка связана с этим. Из моего журнала обновлений, который я получил linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)ранее, когда использовал Linux 3.16.0-37-generic.
pbhj
Исправлена ​​ошибка перемещения libstdc ++. So.6.
pbhj
Вы также можете попробовать решение, опубликованное в askubuntu.com/questions/635851/…, которое я считаю более элегантным.
Тахтисильма

Ответы:

115

Первоначально это была проблема со 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, затем вы попали в эту ошибку , которая считается нефатальной, но она действительно выдает пара в тех же дистрибутивах. Обходной путь это:

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

удачи

Игиты
источник
1
Привет, Не уверен, что я одинокий случай, но я только что установил пакет .deb на мою свежую установку 15.04, и она отлично работает. Жаль, что я не могу играть в половину игр ... из-за того, что я Unix.
thenaglecode
3
Это все еще сломано в декабре? Ух ты. КЛАПАННЫЕ ОТСЕКИ.
Уоррен Р
1
Все эти трюки не работают в 16.10
QkiZ
1
Я удалил версию из Steam и установил версию из репозитория Ubuntu и теперь работает.
QkiZ
3
Просто примечание: 16.10 ваша команда не сработала для меня, однако, найденная здесь: askubuntu.com/a/775667 сработала.
RJP
20

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}
itsnikolay
источник
3
Хм, это выглядело так, как будто это сработало - оно определенно выдавило одно сообщение об ошибке, но все еще говорит, что не может загрузить swrast - -
rm-vanda
1
Вы должны применить это снова после каждого обновления Steam.
bebbo
опять же, это не исправляет сообщение об ошибке OP
mchid
У меня была та же проблема, что и у OP на Xenial 16.04 с тем же сообщением об ошибке, и это сработало для меня. Мне нужно было выполнить эти команды один раз, прежде чем запускать Steam в первый раз, затем во второй раз после первоначального обновления Steam.
Максимилиан Лаумейстер
18

Следующее является ошибкой при установке 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 и работает нормально.

миллер горилла
источник
хотя редактирование файла рабочего стола будет работать, я не могу заставить работать файл рабочего стола в главном меню (xubuntu) в .local / share / Applications / steam.desktop, если я не создаю пункт меню с помощью alacarte, а затем удаляю файл steam из рабочего стола steam .desktop в .local / share / Applications / steam.desktop, а затем ссылка на файл рабочего стола из .local / share / apps, например так: ln -s ~ / Desktop / steam.desktop ~ / .local / share / Applications / steam .desktop
миллер гориллы
Первоначально я переместил файлы, как предложили некоторые ответы выше. Но только с указанным вами экспортом у меня есть пар, работающий над моей Ubuntu 15.04. Большое спасибо! : D
Рубенс
Где $LIBзадана переменная heck ? Многие упоминают об этом, и это нигде не определено
Сергей Колодяжный
8

Это прекрасно работает для меня под Ubuntu 15.04 64bit с проприетарным драйвером NVIDIA версии 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam
Винсент
источник
У меня раньше работало другое исправление, но мне пришлось переустанавливать мои драйверы Nvidia после внесения в черный список моего драйвера nouveau, а затем steam не запускался, так что это исправило это время, надеюсь, эта проблема будет исправлена ​​ко времени выхода Ubuntu 16.04
резонансная 7hand
Это должно работать на любой версии nvidia (кредит: Алан Плам - github.com/ValveSoftware/steam-for-linux/issues/… ):NVIDIA_VERSION=$(nvidia-settings -q NvidiaDriverVersion | grep -oP "[0-9]{3}" | sed -n 1p); export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-$NVIDIA_VERSION:/usr/lib/nvidia-$NVIDIA_VERSION"
higuita
8

Это простое исправление.

Согласно сообщению об ошибке, вам не хватает следующих файлов: r600_dri.soиswrast_dri.so

Выполните следующие команды, чтобы установить эти отсутствующие файлы:

sudo apt-get update
sudo apt-get install libgl1-mesa-dri libgl1-mesa-dri:i386

Теперь проблема должна быть решена.

Пожалуйста, опубликуйте любые дополнительные ошибки.

mchid
источник
1
Если кто-нибудь из сотрудников Valve встретится, у меня есть вопрос; Почему сценарий установщика steam for ubuntu не проверяет установку Mesa, не находит недостающие части и не устанавливает их для меня?
Уоррен П
Не решенные вообще, рассматриваемые libs были уже в их последней версии.
Mystrdat
Это исправило это для меня. Это должно быть первым, что вы попробуете.
Matthew_360
1

Исправление для 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 - отлично!

Джеймс Брэдбери
источник
Если у вас уже есть dpkg, вам не нужно устанавливать gdebi:sudo dpkg -i ./steam.deb
CSkau
1
gdebi установит зависимости, dpkg - нет.
Havok
1

Эти две строки из комментария Менашех по проблеме github работают с Ubuntu 15.10:

export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0

Обратите внимание, что если Steam обновляется сам, вам может понадобиться ввести эти строки снова.

Крис Макфарланд
источник
0

Просто столкнулся с этой проблемой на новой установке Ubuntu 18.04 LTS. Оказывается, версия Steam во время выполнения 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
Бриан
источник
0

16.04 и позже

IMG:  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 совместимы с вашей системой, поэтому обязательно проверьте требования перед покупкой игр.

Карел
источник