ワタタツの日記!
2021 年 9 月 1 日 (水)
☆ いわゆるusr mergeに遭遇し、乗り越えた
Linuxのファイル群が /bin や /sbin になっているものを /usr/bin や /usr/sbin に書き換えていこうという変更を usr merge または UsrMerge と呼ぶようです。
https://en.opensuse.org/openSUSE:Usr_merge
最近この動きを知らずに一部のパッケージをアップデートしたときに整合性がとれなくなって当たって往生しました。メモしておきます。
openSUSEでzypper upしたらログインできなくなって気付いた
openSUSEでzypper upして一部のパッケージをアップグレードしたところ、ログインできなくなってびっくりしました。 login incorrect "Module is unknown" です。最初は何が起きているのかわからなかったのですが、
PAM unable to dlopen(/lib64/security/pam_keyinit.so): /lib64/security/pam_keyinit.so: cannot open shared object file: No such file or directory
というエラーが出ていることに気付きました。 /lib64 も usr.merge されて /usr/lib64 になろうとして、一部が整合性が取れない状態になっていたようです。
Mailing List
ググるとopenSUSEのメーリングリストでこのことが話し合われていました。
アップグレードの途中で /bin や /lib64 にあるはずのファイルが見えなくなってこけるので、 zypper dup (distribution upgrade) する前に 一旦 zypper dup -l --download-only するとかいろいろな技が書いてありました。(ちなみに最終的にどうやったのか忘れました(笑))
転ばぬ先のスナップショット (バックアップ)
この復旧作業をするときに何度か元に戻す作業をしました。
ここ数年はbtrfsで毎日スナップショットを取るようにしているので、リストアするのが非常に楽でした。スナップショットは1つのディレクトリのディレクトリがコピーされているように見えるので、一旦rescueメディアで立ち上げてマウントして、単なるディレクトリに見えるスナップショットからがばっとコピーするだけで何とかなります。
スナップショットはとても軽量で、ほぼ一瞬で行われます。実際にファイルの内容をコピーしまくるのではないので、とても気楽です。