Ports をメンテナンスしていて、またまたエラーが発生しました。
具体的には、PHP5モジュール関係のアップデートが大量に発生したため、ソースからのビルドが面倒と感じてビルド済みバイナリーを導入することにしました。
ところが、特定モジュールを入れようとすると、エラーが発生し更新できません。PostgreSQL関係のモジュールのようで、私はPostgreSQLを使っていないので、更新できなくても問題ないのですが、エラーを解決できないというのもくやしい。
# pkg install php5-pdo_pgsql Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. Checking integrity...Assertion failed: (pkgdb_ensure_loaded(j->db, p2, PKG_LOAD_FILES|PKG_LOAD_DIRS) == EPKG_OK), function pkg_conflicts_need_conflict, file pkg_jobs_conflicts.c, line 211. Child process pid=21831 terminated abnormally: Abort trap: 6
やっていることは pkg コマンドにより、サーバーからビルド済みパッケージをダウンロードして、インストールするだけのはずなのですが、/var/log/messages を見てみるとなぜか pkg コマンドがコアを吐いて落ちています。
kernel: pid 21831 (pkg), uid 0: exited on signal 6 (core dumped)
これが Abort trap: 6 だったのね。
pkg-1.4.3 < needs updating (index has 1.4.4)
pkg コマンドを手動により 1.4.4 に上げてみることにしました。
その後、同じコマンドを試してみたところ、
# pkg install php5-pdo_pgsql Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. Updating database digests format: 100% Checking integrity... done (1 conflicting) Checking integrity... done (0 conflicting) The following 3 packages will be affected (of 0 checked): Installed packages to be REMOVED: postgresql90-client-9.0.18 New packages to be INSTALLED: php5-pdo_pgsql: 5.4.36 postgresql93-client: 9.3.5 The process will require 586 kB more space. Proceed with this action? [y/N]:
ということで、pkg コマンドがパッケージ同士のコンフリクトをうまく処理できないことが原因だったようです。postgresql クライアントが古すぎるのかな。
ここで Y を押せばいいのでしょうが、postgresql は現時点では必要無いので、Nで放置することにしました。