今晚更新了 portupgrade 後,然後再更新其它的 ports 發現怎麼都出現下列訊息
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb <format:bdb_btree> in
/var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]: Cannot update the pkgdb!] ...... 略

找了一些文章,大部份的人都會好心建議要去看 /usr/ports/UPDATING 的東西,不過我是不太會看這東西的傢伙 ... XD


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 automatically. 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.

解決的方法很簡單 ~

Shell > cd /var/pkg/db
Shell > rm pkgdb.db
Shell > pkgdb -fu

嘿 ~ 我的 portupgrade 又正常了 :D
arrow
arrow
    全站熱搜

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