按照這一篇文章的說法,
是因為正在跑的 portupgrade 跟現在系統裡面的 pkgdb 版本不相容的緣故。

portupgrade 的 notes 裡面這樣說:

20060703:
AFFECTS: users of sysutils/portupgrade
AUTHOR: sem@FreeBSD.org

Because portupgrade had a problem with detecting Berkley DB version 2
or newer, and the default database format is now set to use these
versions, you can end up with a portupgrade that does not work with
older databases. A quick fix is to remove the databases, type:
'rm /var/db/pkg/pkgdb.db /usr/ports/INDEX*.db'.
portupgrade will recreate them automaticaly. It does absolutely no harm.

If you do not want remove the databases, you should detect what database
type do you use, and set the port options for portupgrade accordingly.
Follow these instructions:

- run 'pkgdb -fu' *before* upgrading and take a look on the output.
You can see database format there as: format:XXX, where XXX is your
current database format.
- Go to portupgrade port directory and configure the port with
`make config' command. If you have bdb_* format, then turn on the BDB4
option. If you have bdb1_* format, then turn off BDB4 and turn on
the BDB1 option. If you have dbd_hash format, then turn off all options.
- Upgrade portupgrade.

Note: if you change database format with changing port options,
you should remove the ruby-bdb* port that you don't need anymore.
Alternatively, you can hard code database format in your pkgtools.conf.

然後文章裡有個人提出了這樣的解法:

#rm /var/db/pkg/pkgdb.db /usr/ports/INDEX*.db
#pkgdb -uvF; portsdb -u; portsdb -f

我試了之後是可以解決這個問題的。

origin2 發表在 痞客邦 PIXNET 留言(0) 人氣()