Проблема з встановленням Steam на Ubuntu 15.04+


103

Насправді я встановив новий Ubuntu 15.04 64bit, і коли я намагаюся встановити Steam на ньому, виникає проблема. Насправді я завантажив пакет деб з веб-сайту 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 GPU, але я все ще перебуваю на 14.10 - я оновив ядро ​​в придатності, хоча тому я припускаю, що помилка випливає звідти. З мого журналу оновлень я отримав до цього linux-image-3.16.0-41-generic:amd64 (3.16.0-41.57, automatic)час, який я раніше використовував Linux 3.16.0-37-generic.
pbhj

Виправлення переміщення libstdc ++., Так, здається, працює.6.
pbhj

Ви також можете спробувати рішення, розміщене на сайті askubuntu.com/questions/635851/…, яке я вважаю більш елегантним.
Тахтісільма

Відповіді:


115

Спочатку це була проблема зі Steam на Ubuntu 15.04 / 15.10. Парові зв'язує старі лісти і стикаються з драйверами 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. Якщо у вас немає цих папок, знайдіть правильне розташування, перевіривши, де ваша пара шукає профіль користувача:

$ 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

Це працювало для мене ... але зауважте, що якщо якась гра вимагає, щоб ця стара лівер від часу пари, вона може вийти з ладу (саме тому клапан повинен це виправити)

Редагувати 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

Також пам’ятайте, що для кожного оновлення часу виконання пари, ймовірно, потрібно буде це запустити.

Редагувати 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:

Можливо, остаточне редагування, останнє оновлення для парового 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.

а потім парова аварія, то ви потрапляєте на цю помилку , яку повідомляють як про смертельну, але вона виходить парою в тих же дистрибутивах. вирішення цього питання:

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
Це все-таки порушено в грудні? Ого. КЛАПАН СУБИ.
Warren P

1
Усі ці трюки не спрацьовують у 16.10
QkiZ

1
Я видалив версію Steam та встановлену версію від Ubuntu repo і зараз працює.
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}

3
Хм, це виглядало так, що воно буде працювати - воно, безумовно, скасувало одне повідомлення про помилку, але воно все ще говорить, що не може завантажити swrast - -
rm-vanda

1
Ви повинні застосувати це знову після кожного оновлення пари.
bebbo

знову ж, це не виправляє повідомлення про помилку OP
mchid

У мене була та сама проблема, що і в OP на Xenial 16.04 з тим же повідомленням про помилку, і це працювало для мене. Мені потрібно було запустити ці команди один раз, перш ніж запустити Steam вперше, потім вдруге після початкового оновлення Steam.
Maximillian Laumeister

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

Вихід повинен бути:

пряма візуалізація: Так Запуск пари в режимі налагодження:

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))

Здається, що пара використовує різні версії libstdc ++., Так.6. Дозволяє перевірити, у якій версії використовується пара:

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 до правильного шляху на основі платформи запущеного процесу (людина 8 ld.so для деталей).

Ви можете створити сценарій із наступним вмістом, щоб запустити його замість пари:

#!/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, а потім видалити пару файлів на робочому столі .desktop у .local / share / applications / steam.desktop, а потім посилання на файл на робочому столі з .local / share / додатків, таких як: ln -s ~ / Desktop / steam.desktop ~ / .local / share / applications / steam .desktop
мельник горили

Я спочатку перемістив файли, як було запропоновано деякі відповіді вище. Але тільки з експортом ви вказали, що я працюю над моєю ubuntu 15.04. Дуже дякую! : D
Рубенс

Де встановлюється хек- $LIBзмінна? Дуже багато людей згадують про це, і це ніде не визначено
Сергій Колодяжний

8

Це добре працює для мене в Ubuntu 15.04 на 64 бітах із власним драйвером NVIDIA версії 346:

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-346/:/usr/lib/nvidia-346/" steam

Ще одне виправлення працювало для мене раніше, але мені довелося перевстановити свої драйвери Nvidia після чорного списку мого драйвера nouveau, а потім пара не запуститься, тому це вирішено цього разу, сподіваємось, ця проблема виправляється до моменту виходу Ubuntu 16.04
resonant7hand

Це має працювати на будь-якій версії nvidia (кредит: Alan Plum - github.com/ValveSoftware/steam-for-linux/isissue/… ):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

Тепер проблему слід вирішити.

Будь ласка, опублікуйте будь-які додаткові помилки.


1
Якщо якісь співробітники Valve трапляються разом, у мене виникає питання; Чому пара для сценарію інсталятора ubuntu не досліджує встановлення Mesa і не знайде відсутні частини та не встановить їх для мене?
Warren P

Зовсім не вирішені питання, про які говорили, вже були в останній версії.
mystrdat

Це зафіксувало це для мене. Це має бути першим, що ви спробуєте.
matthew_360

1

Виправлення для 64-розрядних Ubuntu 16.04, Xenial Xerus

У мене з 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
гдебі встановить залежності, dpkg не буде.
Хавок


0

Щойно наткнувся на цю проблему на новій установці 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

0

16.04 та пізніше

IMG:  Steam можна встановити як пакет flatpak у всіх підтримуваних на даний момент версіях Ubuntu. Відкрийте термінал і введіть:

sudo add-apt-repository ppa: alexlarsson / flatpak # потрібно лише 16.04 , а не в наступних випусках
sudo apt оновлення 
sudo apt встановити flatpak
flatpak remote-add --if-not-postoji flathub https://flathub.org/repo/flathub.flatpakrepo
встановіть flatpak встановити flathub com.valvesoftware.Steam

Перша команда для додавання ppa: alexlarsson / flatpak не потрібна в 18.04 та пізніше, оскільки пакет flatpak знаходиться у сховищах за замовчуванням.

Пару можна запустити, натиснувши на її піктограму в тире або запустити з терміналу за допомогою наступної команди:

flatpak run com.valvesoftware.Steam   

Багато ігор вимагають покупки в Інтернеті, але деякі популярні ігри, такі як Team Fortress 2, можуть безкоштовно грати. Під час пошуку в магазині обов’язково звужуйте результати операційної системи SteamOS / Linux. Не всі ігри Linux сумісні з вашою системою, тому обов'язково перевіряйте вимоги перед придбанням ігор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.