ワタタツの日記!
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メディアで立ち上げてマウントして、単なるディレクトリに見えるスナップショットからがばっとコピーするだけで何とかなります。
スナップショットはとても軽量で、ほぼ一瞬で行われます。実際にファイルの内容をコピーしまくるのではないので、とても気楽です。