2016年5月28日土曜日

FreeBSD の portsdb エラー

新しく FreeBSD 10.3 になって ports ツリーの更新を行いました。

すると portsdb のエラーが発生しました。
HASH: Out of overflow pages.  Increase page size
/usr/ports/INDEX-10:20155:dbm_store failed

原因

以前にも同じような症状が発生していました。原因は portsdb の問題です。

対策

portsdb の再構築を行いました。

現状の portsdb の様子を確認しました。何と! INDEX-6 からのものが存在していました(笑)。
# cd /usr/ports
# ls | grep INDEX
.portsnap.INDEX
INDEX-10
INDEX-10.db
INDEX-6
INDEX-7
INDEX-8
INDEX-8.db
INDEX-9
INDEX-9.db

現状の portsdb を過去のものを含めて削除しました。
# rm -rf INDEX*

portsdb の再構築を行いました。再構築には結構な時間がかかりました。
# make index
Generating INDEX-10 - please wait..--- describe.accessibility ---
--- describe.arabic ---
--- describe.archivers ---
# portsdb -uU
Updating the ports index ... Generating INDEX20160528-41516-6hhlqn - please wait..--- describe.accessibility ---
--- describe.arabic ---
--- describe.archivers ---

出来上がった portsdb を確認しました。
# ls | grep INDEX
.portsnap.INDEX
INDEX-10
INDEX-10.db

以上で portsdb のエラーが発生しなくなりました。

[追記 : 2016-05-29]

再び同じエラーが発生しました。

再度ネット上を検索してみたところ、ruby-bdb に問題があると同様のエラーが発生することがあるようです。そこで ruby-bdb のインストール状況を確認してみました。すると ruby 本体がバージョン 2.2 (標準)と 2.1 の二つがインストールされていました。さらに ruby-bdb も 2.1 のものがインストールされていました。
# pkg info | grep ruby
ruby-2.2.5,1     Object-oriented interpreted scripting language
ruby21-2.1.9,1  Object-oriented interpreted scripting language
ruby21-bdb-0.6.6_4  Ruby interface to Oracle Berkeley DB

そこでこの古いバージョン(2.1)と標準バージョン(2.2)を含めて削除した後、再度インストールし直すこととしました。我が家では portupgrade の依存関係で ruby がインストールされているため、思い切った処置をしました。
# pkg delete ruby-2.2.5,1 ruby21-2.1.9,1 ruby21-bdb-0.6.6_4 portupgrade-2.4.14,2

次に再度 portupgrade をインストールして、依存関係で ruby 類の自動インストールを行いました。
# portmaster ports-mgmt/portupgrade
===>>> The following actions will be taken if you choose to proceed:
    Install ports-mgmt/portupgrade
    Install databases/ruby-bdb
    Install lang/ruby22

===>>> Proceed? y/n [y]

portupgrade のインストールが終わったところで、再度 ports ツリーのダウンロードを行いました。そして
# portsdb -FU

インストール済みパッケージの中でアップデートが到着していないか確認してみました。エラーが発生するときには、ここで発生します。
# portversion -vL=

今度は、本当にエラーが発生していないようです。


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。