トラブル概要
nping
を入れて、使おうとしたら libssl.so 1.0.1
が無いと言われたので、反射的に sudo pacman -S openssl
した。
途中「バージョンアップするけど本当にいいの?」みたいなこと聞かれたが、即 y
無事に nping
はできた。めでたしめでたし。となるはずが・・・
$ curl http://example.com
curl: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
$ git
git: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
$ sudo pacman -Syyu
sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"
sudo: unable to load /usr/lib/sudo/sudoers.so: libssl.so.1.0.0: cannot open shared object file: No such file or directory
sudo: fatal error, unable to load plugins
詰んだ\(^o^)/
解決方法
Arch Linuxでは、アップグレードによって壊れる時の復旧が便利なよう、各パッケージのスナップショットを保存しておく機能がある。
pacman#パッケージキャッシュの削除 | ArchWiki
これは /var/cache/pacman/pkg/
に保存されているので、下記のコマンドを実行すればよい。
su -
cd /tmp
cp /var/cache/pacman/pkg/openssl-1.0.2.k-1-x86_64.pkg.tar.xz openssl.tar.xz
tar xJvf openssl.tar.xz
cp usr/lib/{libssl.so,libcrypto.so}.1.0.0 /usr/lib
sudo
さえ使えなくなるので注意。
/usr/lib
は環境によって変わる。 ldd $(which pacman)
で確認。
参考
ArchLinux界隈ではよくあることらしい。というかやったことこれと全く同じだ
「私はArch Linuxインストール一週間で環境を破壊しました。」(直しました)