読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

Binaries move to /usr/bin requiring update intervention (ArchLinux)

というのがあるので、一応メモしておく。


※この記事はTOEIC300点もいかない英語バカがArchLinux公式の手順の説明をフィーリングで訳しつつ実際に行った時のメモなので参考程度にしてあまり信用しないでください。 確実に信用できる情報は以下のURLから

https://www.archlinux.org/news/binaries-move-to-usrbin-requiring-update-intervention/


現在ArchLinuxをアップデートしようとすると以下のようなメッセージとともにエラー終了する。

error: failed to commit transaction (conflicting files)
filesystem: /bin exists in filesystem

どうやら、すべてのバイナリを/usr/bin以下に統合してしまおうという算段のよう。
無駄なディレクトリの分別をなくしてしまおうという話らしい。
具体的には「/sbin,/bin,/usr/sbinを/usr/binへのシンボリックリンク化をして、中身はすべて/usr/bin内部に統一しよう」という話。

上記エラーを解決するのに以下の手段を使う。

$ pacman -Qqo /bin /sbin /usr/sbin | pacman -Qm -

これによって表示されたパッケージは修正の必要がある。
なんの表示も出なければ問題がない。おそらく非公式なパッケージなどが発見される。

そして、そのある非公式なパッケージについて調べるには

$ paclist <repo> | awk ' { print $1 } ' | pacman -Ql - | grep ' /s\?bin/\| /usr/sbin/'

を使う。

そして、IgnorePkgかIgnoreGroupに登録されてるパッケージが/bin,/sbin,/usr/sbin以下にファイルを保持していないかを確かめる。
必要ならば訂正する。

で、このへん直訳で申し訳ないのだけども...
もし、/bin,/sbin,/usr/sbin以下に不明なファイルがあったら移動する必要がある。
次のコマンドでそれを見つける。

$ find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null

そして、もしautofsを使っているのならすべてのパーティションがマウントされてるかを確認する。
このアップデートのあとautomountしないかもしれません?

で、update your systemということでroot権限で以下の3コマンドを実行する。ただし万一の失敗に備えて特にssh接続してアップデートする場合は、直接マシンをいじれるターミナルを別に用意できたほうがいいらしい。

# pacman -Syu --ignore filesystem,bash
# pacman -S bash
# pacman -Su

で、reboot

多分一つコマンド飛ばしちゃったか何かでVMのArchLinuxちゃんはこの作業後のrebootでOSが起動しなくなってしまって正直かなり緊張したけど、VPSのArchLinuxちゃんは無事できたようできちんと適応されてるみたい。

$ ls -la /bin /sbin /usr/sbin

とすると

lrwxrwxrwx 1 root root 7  6月  1 03:40 /bin -> usr/bin
lrwxrwxrwx 1 root root 7  6月  1 03:40 /sbin -> usr/bin
lrwxrwxrwx 1 root root 3  6月  1 03:40 /usr/sbin -> bin

と全部シンボリックリンクになってるのが確認できる。こなってれば成功かな。

Firefox ブラウザ無料ダウンロード