Archのアップデート後にDevil Daggersが起動しなくなる

14 Jun 2023
Back

5月末ほどにたぶん1年近く放置していたArchのアップデートをしたら竹馬の友たるゲームDevil Daggersが起動しなくなった。

ほぼ検索に引っかけるために載せておくエラー内容

[fahrenheit:~/Games/DevilDaggers3-2]% ./start.sh
Running Devil Daggers
./devildaggers: /usr/lib/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by ./devildaggers)
./devildaggers: /usr/lib/libssl.so.1.1: version `OPENSSL_1_1_0' not found (required by ./devildaggers)

実はエラーログを取っておいていないので再現として同じヘマをやらせているだけの文で、本当はもう1行libcryptoで同じようなエラーが出ていた。
ArchのアプデでOpenSSLのバージョンが1→3になったことでシステムにあるライブラリのバージョンもまるっと変わってしまったらしい。

息をするように無意識にlibssl.so.3へのリンクを1.1として貼るという蛮行$ ln -s /usr/lib/libssl.so.3 /usr/lib/libssl.so.1.1をしてしまうのだけど、大抵は内部のデータが違うということでエラーになる。
というかこのエラーを吐く前はNot found系のエラーだったかもしれん。

直す

参考:ArchLinuxでlibssl.so.1.1が見つからないエラーの対応について
そのまんまこういう感じだったかもしれんのでこっちを見たほうがいいです(全力で匙を投げる)

OpenSSLのパッケージの中にlibsslやlibcryptoも入っているので、Pacmanの過去パッケージの中から取り出して置いてやればいいとのこと。
で、ためしにlsしてみるとやっぱりある。

[root@cookpod lib]# ls /var/cache/pacman/pkg/openssl*
/var/cache/pacman/pkg/openssl-1.0-1.0.2.u-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.i-2-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.j-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.k-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.l-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.l-1-x86_64.pkg.tar.zst.sig
/var/cache/pacman/pkg/openssl-1.1.1.n-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.n-1-x86_64.pkg.tar.zst.sig
/var/cache/pacman/pkg/openssl-1.1.1.p-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-1.1.1.p-1-x86_64.pkg.tar.zst.sig
/var/cache/pacman/pkg/openssl-3.0.8-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-3.0.8-1-x86_64.pkg.tar.zst.sig
/var/cache/pacman/pkg/openssl-3.0.9-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/openssl-3.0.9-1-x86_64.pkg.tar.zst.sig

バージョンが1.1.1のzstアーカイブをどれかhomeフォルダなどにコピーして(たぶん1.1.1以降の字はアルファベット順に新しいと思われる)、tar -xvf openssl-1.1.1.p-1-x86_64.pkg.tar.zst してtarアーカイブにしたあと、適当にXarchiverなどで解凍する。
参考サイトのコマンドだと何故か開かなかったし機械おんちなのですぐGUIツールを使います。私はそういう人間だ。(ていうかアーカイブ操作のコマンドいっつもゴチャンゴチャになるよね)

image

で、解凍されたところにusr/フォルダが出来ていて、その中をたどっていくとusr/lib/libssl.so.1.1 などが入っているので、これをシステムの /usr/lib 以下にコピーする。
Devil Daggersのログでは/usr/libの中を探しているので、効果があるのかはさておきルート直下の/lib以下に置かないでおいたほうがいいかも。

libcryptoの扱いは慎重に

何をどうやったのか忘れたけどlibcrypto.so.1.1も必要なのか…とリンクを貼ったり剥がしたりをしたらsudoを筆頭にシステム関連のコマンドが使えなくなりシャットダウンもできなくなり強制再起動後は起動途中でカーネルパニックを起こして締め出されるという惨事に陥ったので気をつけよう!
もし締め出されたらインストール用に作ったUSBから起動してルートだけマウントしてUSBに入ってるライブラリをコピーし直してやると元通りになる。