มีปัญหากับการติดตั้ง Steam บน Ubuntu 15.04+


103

ที่จริงฉันติดตั้ง 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

คุณมีโอกาสใช้สถาปัตยกรรมเอเอ็มดีหรือไม่?

ฉันมีข้อผิดพลาดนี้ในระบบ 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/…ว่าฉันคิดว่ามันดูสง่างามกว่า
Tahtisilma

คำตอบ:


115

ตอนนี้ปัญหานี้เกิดจาก Steam ใน Ubuntu 15.04 / 15.10 Steam รวม libs เก่า ๆ และปะทะกับไดรเวอร์ mesa ด้วยเหตุนี้จึงทำให้คนขับรถที่ปิดอยู่ไม่เห็นปัญหานี้ อัปเดต: อาจเป็นเพราะคุณพลาดบางสิ่ง ดูคำตอบของ mchid อื่น ๆ

มีเป็นข้อผิดพลาดที่เปิดใน GitHub

วิธีแก้ปัญหาในปัจจุบันคือการลบ lib เวอร์ชันเก่าออกอย่างน้อยก็จนกว่า 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

ใช้สิ่งนั้นเพื่อค้นหาตำแหน่ง lib ของคุณ:

[config value] + /ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
   |
   \-> $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu

มันใช้งานได้สำหรับฉัน ... แต่โปรดทราบว่าหากบางเกมต้องการ lib เก่าจากการรันไทม์บน Steam ก็อาจมีปัญหา (นั่นคือเหตุผลที่ Valve ควรแก้ไขปัญหานี้)

แก้ไข 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 คุณอาจต้องใช้งานสิ่งนี้

แก้ไข 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 Steam ล่าสุดควรแก้ไขได้มากที่สุดหากไม่ใช่ปัญหาทั้งหมด! ในที่สุด! : 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 ที่สดใหม่และใช้งานได้ดี น่าเสียดายที่ฉันไม่สามารถเล่นครึ่งเกมได้ แต่ ... โดยนับว่าเป็นยูนิกซ์
thenaglecode

3
จะยังคงแตกในเดือนธันวาคม ว้าว. SUCKS วาล์ว
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
อืมดูเหมือนว่ามันจะใช้งานได้จริง ๆ แล้วมันบีบข้อความข้อผิดพลาดหนึ่งข้อ แต่ก็ยังบอกว่ามันไม่สามารถโหลดความคมชัดได้ -
rm-vanda

1
คุณต้องใช้สิ่งนี้อีกครั้งหลังจากการอัปเดตแต่ละครั้งของ Steam
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 ซึ่งเป็น shared library ที่รับผิดชอบในการสื่อสารกับไดรเวอร์กราฟฟิก ในการตรวจสอบว่าไดรเวอร์เปิดใช้งาน 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))

ดูเหมือนว่า 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 วิธีแก้ปัญหาคือบอก OS ให้โหลดรุ่น 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 สดใส 15.04 และทำงานได้ดี


แม้ว่าการแก้ไขไฟล์บนเดสก์ท็อปจะใช้งานได้ แต่ฉันไม่สามารถรับไฟล์เดสก์ท็อปรายการเมนูหลัก (xubuntu) ใน. local / share / applications / steam.desktop เพื่อทำงานเว้นแต่ฉันจะสร้างรายการเมนูโดยใช้ alacarte .desktop ใน. local / share / applications / steam.desktop แล้วเชื่อมโยงไปยังไฟล์เดสก์ทอปจาก. local / share / applications เช่นนั้น: ln -s ~ / Desktop / steam.desktop ~ / .local / share / applications / steam .desktop
มิลเลอร์ the กอริล

ตอนแรกฉันย้ายไฟล์ตามคำตอบข้างต้นที่แนะนำ แต่มันเป็นเพียงการส่งออกที่คุณชี้ว่าฉันมีไอน้ำทำงานบน Ubuntu 15.04 ของฉัน ขอบคุณมาก! : D
รูเบนส์

$LIBตัวแปรheck ตั้งอยู่ที่ไหน? ผู้คนจำนวนมากพูดถึงมันและมันไม่มีคำจำกัดความ
Sergiy Kolodyazhnyy

8

มันใช้งานได้ดีสำหรับฉันภายใต้ Ubuntu 15.04 64 บิตพร้อมไดรเวอร์ที่เป็นกรรมสิทธิ์ของ NVIDIA รุ่น 346:

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

แก้ไขอีกได้ทำงานให้ฉันมาก่อน แต่ผมต้องติดตั้งไดรเวอร์ Nvidia ของฉันหลังจากที่ขึ้นบัญชีดำคนขับนูโวของฉันแล้วอบไอน้ำจะไม่เปิดดังนั้นนี้คงได้เวลานี้หวังว่าปัญหานี้ได้รับการแก้ไขตามเวลาที่อูบุนตู 16.04 ออกมา
resonant7hand

สิ่งนี้ควรใช้กับ nvidia ทุกรุ่น (เครดิต: Alan Plum - 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"
......

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

ไม่ได้รับการแก้ไขเลย libs ที่เป็นปัญหานั้นเป็นเวอร์ชั่นล่าสุดแล้ว
mystrdat

สิ่งนี้แก้ไขได้สำหรับฉัน นี่ควรเป็นสิ่งแรกที่คุณลอง
matthew_360

1

แก้ไขสำหรับ Ubuntu 16.04, Xenial Xerus, 64-bit

ฉันเพิ่งพบปัญหานี้กับ 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


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 ระยะไกลเพิ่ม - ถ้าไม่มีอยู่ 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 เกมลีนุกซ์บางตัวนั้นไม่สามารถใช้งานร่วมกับระบบของคุณได้ดังนั้นให้แน่ใจว่าคุณตรวจสอบข้อกำหนดก่อนที่จะซื้อเกม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.