2020年8月10日月曜日

Devil DaggersがLibcurl3依存で起動しないのを直す(?)

7〜8月の間にやったアプデのせいか、Libcurl3が4に代わりDD(ddコマンドじゃないよ)が起動しなくなってしまい、それを直したメモ。 ただこれのせいで失ったアプリなどもあるので綺麗サッパリ解決できたとは言えない。

追記:治ったので最後に記載。

Debian 10 Buster

発端はこれ

[fahrenheit:~]% devildaggers
./libcurl.so.4
Running Devil Daggers
ERROR: ld.so: object './libcurl.so.4' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object './libcurl.so.4' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
./devildaggers: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)
パス通ったところにdevildaggersという実行ファイルを置いている。GOGからダウンロードしたゲームデータstart.shを叩くだけのもので、どこかで見た解決法では(すみません見つけ次第リンク貼ります…)、Libcurl3のライブラリを側に置いてLD_PRELOAD変数で持ってこさせるみたいだったけど、なんか上手くいってない。

Libcurl4を消す

% sudo apt remove libcurl4                  
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libayatana-appindicator3-1 libayatana-ido3-0.4-0 libayatana-indicator3-7 libminiupnpc17 libnatpmp1 transmission-common yudit-common
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  lynx lynx-common
The following packages will be REMOVED:
  curl feh libcurl4 steam:i386 steam-launcher transmission transmission-gtk ttytter
The following NEW packages will be installed:
  lynx lynx-common
0 upgraded, 2 newly installed, 8 to remove and 0 not upgraded.
Need to get 1,824 kB of archives.
After this operation, 2,889 kB disk space will be freed.
Do you want to continue? [Y/n] 
Get:1 http://debian-mirror.sakura.ne.jp/debian buster/main amd64 lynx-common all 2.8.9rel.1-3 [1,183 kB]
Get:2 http://debian-mirror.sakura.ne.jp/debian buster/main amd64 lynx amd64 2.8.9rel.1-3 [642 kB]
Fetched 1,824 kB in 1s (2,692 kB/s)
(Reading database ... 347789 files and directories currently installed.)
Removing ttytter (2.1.0+1-1) ...
Removing steam:i386 (1:1.0.0.64) ...
Removing steam-launcher (1:1.0.0.64) ...
Removing curl (7.64.0-4+deb10u1) ...
Removing feh (3.1.3-1) ...
Removing transmission (2.94-2+deb10u1) ...
Removing transmission-gtk (2.94-2+deb10u1) ...
Removing libcurl4:amd64 (7.64.0-4+deb10u1) ...
Selecting previously unselected package lynx-common.
(Reading database ... 347603 files and directories currently installed.)
Preparing to unpack .../lynx-common_2.8.9rel.1-3_all.deb ...
Unpacking lynx-common (2.8.9rel.1-3) ...
Selecting previously unselected package lynx.
Preparing to unpack .../lynx_2.8.9rel.1-3_amd64.deb ...
Unpacking lynx (2.8.9rel.1-3) ...
Setting up lynx-common (2.8.9rel.1-3) ...
Setting up lynx (2.8.9rel.1-3) ...
update-alternatives: using /usr/bin/lynx to provide /usr/bin/www-browser (www-browser) in auto mode
Processing triggers for desktop-file-utils (0.23-4) ...
Processing triggers for mime-support (3.62) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for libc-bin (2.28-10) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for menu (2.1.47+b1) ...
Libcurl4を使っていたと思しきFehやSteamが一緒に消えるのはまあ分かるとして、なぜかテキストブラウザLynxが代わりに入ってくる。

Steamはまぁ……いや本当は何でもゲームしたいとこだけどGPU破損問題でロクにプレイできるタイトルがないためとりあえず消えてもいいことにした。(今後GOGで買うかもしんないし)

Libcurl3の入手

うちのDebianはBusterだけどStretchのパッケージも依存がなければ普通に入れてOK(セキュリティ的にどうかは分かんないけど)だと思うので、sudo apt install libcurl3 でインストール。

Fehを取り返す

デスクトップにi3を使っていると壁紙の設定でfehが必要になる。

これはBuster以降のバージョンだとlibcurl4に依存しているので、3に依存するStretch版を https://packages.debian.org/stretch/feh からdebパッケージをもらってきてdpkgでインストール。これもすんなり入ったし普通に使える。

おわり

Steamは死んだけどやりたいタイトルがWin専ばっかりでWineからSteam起動するので別にいいかなってなった。

追記

DebianのStretch版のLibcurlのtar.gzアーカイブを取得、解凍してlibcurl.so.4(libcurl.so.4.4.0?)のライブラリだけを取り出す。

ゲーム本体のフォルダとして $HOME/Games/devil daggers があり、ここにライブラリファイルを置き、
start.sh の先頭に
LD_PRELOAD=/home/username/Games/devlidaggers/libcurl.so.4.4.0 
と記載。

LD_PRELOADに指定するライブラリを書く時に、フォルダ名などにスペースが入っているとエスケープしようがクォートで囲もうが途切れて見つからない扱いにされるので、パスにスペースが入らないようリネームしておく。
あとカレントディレクトリの指定として「./」とか、パス省略で$HOMEとか「~」(半チルダ)とかも展開されないので、使わないようにする。

これでDDは隣に置いてあるlibcurl3を参照するようになるので、aptでインストールするのは現行のlibcurl4でよくなる。

0 件のコメント:

コメントを投稿