「私はArch Linuxインストール一週間で環境を破壊しました。」(直しました)(libssl.so.1.0.0 のundefined symbolとかでた)

拝啓 公式リポジトリ様。

opensslアップデートしたらネットワーク周り全部死ぬのは流石にヤバいっす…

経緯

ぼく「drillしてえな」 → いれる

ぼく「なんとなくopensslアップデートしとくか」 → いれる

いろんなネットワーク関連のバイナリが死亡

解決

間違ってArch LinuxのLive Imageでもopensslをアップデートしたら、同じ現象になったので、こちらの環境でopensslをダウングレードして解決しました。

有識者曰く「pacman -Syuしないお前が悪い」 とのことです。全くその通りだと思います。反省しています

ダウングレード

$ pacman -U /var/cache/pacman/pkg/openssl-1.0.2.k-1-x86_64.pkg.tar.xz

これで行けるかと思ったんですけど、/usr/lib/libssl.so.1.0.0 とか /usr/lib/libcrypto.so.1.0.0 があると依存関係エラーでできません。

でも libssl.so.1.0.0 がないとそもそもpacman -U できないので、これ削除するのはダメです。

というわけで

$ cd / && tar xvf /var/cache/pacman/pkg/openssl-1.0.2.k-1-x86_64.pkg.tar.xz

しましょう。こうすればパッケージ内のモジュールを問答無用で配置できます。通常の場合はこれをやるのはやめましょう。pacmanを経由しないので他の依存関係が破壊されてしまう可能性などがあります。*1

学び

ちゃんとfsのスナップショットとか定期的にとろうやという話ですね。

pacman -Syuしなきゃダメ、これも覚えました(追記)

*1:まあ今回はpacmanに共有ライブラリの依存関係破壊されたんですが…