Ubuntu 20.10のSteamでOneShotが起動しない問題


何?

Steamで購入したOneShotをUbuntu20.10で起動しようとしたが起動ボタンを押しても起動しなかったので解決した。
結論として、OneShot自体はLinuxに対応こそしているがあまりメンテされていないようで、古いライブラリを整理するとうまく行った。

事象1

直接起動してエラー出力を読む。

$ cd ~/.local/share/Steam/steamapps/common/OneShot
# steam経由で開かないと正常に起動しない
$ steam steam://rungameid/420530
...
./oneshot: ~/.local/share/Steam/steamapps/common/OneShot/librt.so.1: undefined symbol: __clock_nanosleep, version GLIBC_PRIVATE

Steam Communityで検索すると先人たちが苦労している様子が見えた。
他のLinux系OSでも同様の問題が起こっているようだ。

ググるとヒットした記事より:

$ sudo find /usr/lib/x86_64-linux-gnu -name librt.so* | xargs ls -l
lrwxrwxrwx 1 root root 13 12月 14 14:45 /usr/lib/x86_64-linux-gnu/librt.so.1 -> librt-2.32.so
$ rm -rf librt.so.1
$ ln -s /usr/lib/x86_64-linux-gnu/librt-2.32.so librt.so.1

新しめのlibrtへのシンボリックリンクに差し替えた。

事象2

するとエラーが変わり:

$ steam steam://rungameid/420530
libGL error: MESA-LOADER: failed to open radeonsi (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open radeonsi (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  111
  Current serial number in output stream:  110

とlibGLエラーが出た。

このエラーに関してはSteam Communityにスレがあり:

$ rm -rf libdrm.so.2 libGLdispatch.so.0 libstdc++.so.6

として再度起動すると、

うまく行った。

日本語もOK。

結論

解決

他の解決法は?

このスレッドによると、

$ cd ~/.local/share/Steam/steamapps/common/OneShot
$ rm -rf libgio-2.0.so.0 libglib-2.0.so.0 libsystemd.so.0 librt.so.1 libstdc++.so.6

で動作すると書かれているのでそちらを試しても良い。