Проблема з встановленням 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.