【ArchLinux】削除されたlibcrypt.so.1を復旧させる方法
本日(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へリプレースしようと思います。
それでは、何かの参考になれば幸いです。