本日(2月18日20時48分〜21時40分位迄)、本WEBサーバが一時的に閲覧できなくなりました。

上記時間に閲覧していた方にはご迷惑・ご心配をお掛けして申し訳ありません。

今回、閲覧できなくなった原因ですが、本日は当ブログWEBサーバのOSである「ArchLinux」の
パッケージ更新を実施したのですが、その直後、OpenLiteSpeedを稼働させるのに必要な
ライブラリが無くなってしまったためです。

無くなってしまった該当のライブラリは、「libcrypt.so.1」というファイルです。

以下がopenlitespeedのエラーメッセージとなります。


エラー(全部)

× lshttpd.service - OpenLiteSpeed HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/lshttpd.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Fri 2022-02-18 20:48:54 JST; 27s ago
    Process: 594 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=127)

 2月 18 20:48:37 tpx240 systemd[1]: Starting OpenLiteSpeed HTTP Server...
 2月 18 20:48:37 tpx240 lswsctrl[606]: ./litespeed: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
 2月 18 20:48:37 tpx240 lswsctrl[594]: [ERROR] Failed to start litespeed!
 2月 18 20:48:54 tpx240 lswsctrl[775]: ./litespeed: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
 2月 18 20:48:54 tpx240 lswsctrl[594]: [ERROR] Failed to start litespeed!
 2月 18 20:48:54 tpx240 systemd[1]: lshttpd.service: Control process exited, code=exited, status=127/n/a
 2月 18 20:48:54 tpx240 systemd[1]: lshttpd.service: Failed with result 'exit-code'.
 2月 18 20:48:54 tpx240 systemd[1]: Failed to start OpenLiteSpeed HTTP Server.

エラー(該当)

上記エラーが出て、原因としては、「libcrypt.so.1」が読み込めませんと言っています。
以下の部分が該当ですね。

./litespeed: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory

暫定対応

libcrypt.so.1がないなら、作ってしまえ、ということで、
libcrypt.soのシンボリックリンクをlibcrypt.so.1に貼ってみましたが、結果は変わらず。
他にもあったファイルとして、libcrypt.so.1.1もlibcrypt.so.1へリンク貼っていましたが、
これもダメ。

簡単には解決が難しそうだったので、本格的に調査するために、
一旦、WEBサーバを予備サーバに切り替えたところ、予備サーバのSSLが期限切れており、
表示させると期限切れのエラー。。。と泣きっ面に蜂状態。

なんとかSSLの証明書ファイル予備機と同期させて、予備機で正常に閲覧が可能にしました。


調査の結果

ArchLinuxのメンテナー側(メンテナンスされる方々)で、該当ライブラリを切り捨てたことがわかりました。そもそも非推奨(depreciated)なライブラリであったようで、古くなったので削除されたようです。

それが本日のパッケージ更新の際に発生し、「libcrypt.so.1」が削除されてしまった原因でした。


解決方法

既に同様の被害に遭った方々により、以下のパッケージがリリースされていました。
これをインストールすることで、libcrypt.so.1が復旧しました。
該当パッケージは「libxcrypt-compat 4.4.28-1」です。

https://aur.archlinux.org/packages/libxcrypt-compat

こちらのインストール方法を紹介します。
以下コマンドでインストール可能です。

$ yay -S libxcrypt-compat

ちなみに32bit版も同様に切り捨てにあったようです。。。


まとめ

今回は、ArchLinuxを更新したら、削除されてしまった、libcrypt.so.1の復旧方法について
紹介しました。

しかし、安定稼働がマストなWEBサーバとしてArchLinuxを使うことは、リスクですね。

予備サーバがあって助かりました。予備サーバはUbuntuなのですが、
これももしArchLinuxに切り替えていたら大変な状況になっていたでしょうね。

ArchLinuxでWEBサーバを稼働させることに不安を覚えたので、もうじきリリースされる予定のUbuntu 22.04(LTS)が公開されたら、本ブログのWEBサーバはUbuntuへリプレースしようと思います。

それでは、何かの参考になれば幸いです。