FreeBSD9.3: pkg upgrade で pw: user ‘messagebus’ already exists

VirtualBox用に以前製作した FreeBSD8.4 の WordPress 仮想環境。

設定ファイルを確認しようと、zip圧縮してあったファイルを解凍して久しぶりに VirtualBoxで起動してみました。目的のファイルは確認できたのですが、当てが外れ、インストールされていたプログラムはバージョンが古いものでした。

起動ついでに OS とパッケージを FreeBSD 9.3 へアップデートしておこうとして、freebsd-update を実行。これは、過去何度も実施しているので、時間は掛かるものの特に苦労することもなく作業完了。
その後で、pkg upgrade を実行しようとして多少苦労しました。FreeBSD 8.4 インストール時は pkg ではなく 旧pkg_cmds を使っていたため、pkg への変換と、リセットが必要だったようです。

 # pkg update -f
 # pkg check -Ba
 # pkg upgrade

で回復。

しかし、別の問題が発生。messagebus がユーザー登録関係でエラーになり、アップグレードが途中で止まってしまいます。

Number of packages to be removed: 1
Number of packages to be installed: 73
Number of packages to be upgraded: 61
Number of packages to be reinstalled: 9

The process will require 388 MiB more space.

Proceed with this action? [y/N]: y
[1/144] Deinstalling ruby19-bdb-0.6.6_3...
[1/144] Deleting files for ruby19-bdb-0.6.6_3: 100%
[2/144] Installing glib-2.46.2_3...
[2/144] Extracting glib-2.46.2_3: 100%
No schema files found: doing nothing.
[3/144] Installing dbus-1.8.20...
===> Creating groups.
Using existing group 'messagebus'.
===> Creating users
Creating user 'messagebus' with uid '556'.
pw: user 'messagebus' already exists
pkg: PRE-INSTALL script failed

過去に見かけた記憶があるのですけど、messagebus では無かったようで、この「システム管理メモ」内キーワード検索に引っかかりませんでした。

でもまあ、’messagebus’ already exists でエラーになっているので、手動で messagebus ユーザーを消してしまえばいいんじゃない?と pw userdel コマンドで消去しようとしたら、

# pw userdel messagebus
pw: no such user `messagebus'

で、消えない!
/etc/passwd には、

messagebus:*:556:556::0:0:D-BUS Daemon User:/nonexistent:/usr/sbin/nologin

と登録してあるのに、、、、
パスワードdbを更新すれば良かったのかも知れませんが、面倒くさいので vipw で削除してしまいました。

これで、再び pkg upgrade コマンドを発行したところ、無事、途中から継続できました。

原因は、ユーザー登録が必要なパッケージのアンインストール→インストール作業の途中でパスワードデータベースが壊れてしまったことによるもののようです。

エラーメッセージから解決策はすぐに推測できるものの、pkg upgrade コマンド使用時のこのエラーに関しては、過去に記録がなかったので個々にメモしておくことにしました。

コメントを残す