読者です 読者をやめる 読者になる 読者になる

Ging Ring Activity Report

PCゲーマーグループ"Ging Ring"の活動報告、私的メモ、身内(+α)向けまとめ、日記、etc...です。ここ書かれている情報の正確性は保証しません。

質問受付中!

 ブログ内コメント、又はTwitter経由で質問を受付中です。
 記事に対するものでも、単に聞いてみたいことでも構いません。

 ※質問内容をテーマにブログ記事を作成することがあります。予めご了承下さい。

StarboundのLinux鯖構築時に発生するライブラリエラーの対処法に関して

 StarboundのLinux鯖は、SteamCMD経由でインストールしてそのまま実行しようとしても、

./starbound_server: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./starbound_server)
./starbound_server: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./starbound_server)
./starbound_server: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./starbound_server)

 ライブラリのバージョンが古い、というエラーが出て起動しない。

 これは32bit版でも64bit版でも起こる問題で、しかし32bit版はSteamCMDに付属するライブラリを利用することで対処できる。

32bit版対処法

 SteamCMDを導入した場所にあるlinux32の中にあるlibstdc++.so.6を、starbound_serverが見ている"/usr/lib"に放り込めばいい。
 既に同じファイルがあるだろうし、そのまま放り込むと上書きすることになるので、先にリネームしておくことをオススメする。

mv /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.bak
cp linux32/libstdc++.so.6 /usr/lib/

 その上で改めてstarbound_serverを実行すれば鯖が起動するはず。

64bit版対処法

 しかし生憎とこれは32bit版のライブラリで、64bit版は付属していない。
 なので64bit版の鯖を建てるには何処からかこのライブラリの最新版を見付けてくるか、このライブラリを含むアプリを自分でソースからコンパイルしなければならないんだとか。

 ちなみにyumでインストールしようとしても、バージョンが古いので解決しない。

 仕方なくGCCを自分でコンパイルしてみようとしたら、こんどはこれをコンパイルする為に他に三個のアプリをソースから(以下略

(ノ`Д´)ノ彡┻━┻

 投げた。もう諦めて32bit版で遊ぼう、と思い、鯖の設定に関して調べていたらこの問題に対する対処法を記した記事を公式フォーラムで発見した。

http://community.playstarbound.com/index.php?threads/how-to-install-fix-missing-libraries-for-starbound_server-32-64bit.39126/

 この記事に書かれたURLから必要なライブラリの入ったパッケージが手に入る。

 早速ダウンロードして展開し、64bit版のライブラリを置く"/usr/lib64"に放り込んで起動してみた。
 が、また別のエラーが発生した。

./starbound_server: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libgcc_s.so.1)

 同じくlibc.so.6を探して/usr/lib64に放り込むがエラーは変化なし。よく見るとディレクトリの指定が違う。

 以前はstarbound_serverと同じ階層からライブラリファイルを探していたが、いまはハードコーディングされた固定のパスを探しに行くんだとか。

 有志のパッチでそのパスを書き換えることで対処可能とあるが、64bit版なのならコメントの方にもっといい対処法が書かれているらしい。

http://community.playstarbound.com/index.php?threads/how-to-install-fix-missing-libraries-for-starbound_server-32-64bit.39126/page-2#post-1543454

./ld-linux.so.2 --library-path ./ ./starbound_server

 このコマンドで鯖を起動すればいいんだとか。

 しかしまずld-linux.so.2とやらが見当たらない。展開したパッケージの中にもない。

 パッケージを展開したところに"linux_loader-dont-know-if-you-need-this"というディレクトリがあり、そこに"ld-linux-x86-64.so.2"というものがあるが名前が違う。

 しかしよく似ているのでこれでいいんじゃないか? とそれをstarbound_serverと同じディレクトリにコピーし、

cp linux_loader-dont-know-if-you-need-this/ld-linux-x86-64.so.2 .

 先程のコマンドを一部書き換えて実行したところ、

./ld-linux-x86-64.so.2 --library-path ./ ./starbound_server

 無事に鯖が起動した。