terça-feira, setembro 05, 2006

Solucionando problemas com portupgrade e pkgdb

Esta semana tive problemas com isso, atualizei o ruby ele atualizou o db1 pra db41 e virou uma anarquia, hehe, não funcionava mais o portupgrade ele dava o seguinte erro:

[Updating the pkgdb in /var/db/pkg ... Failed
`Inappropriate file type or format'; rebuild needed] [Rebuilding the
pkgdb in /var/db/pkg ... - 439 packages found (-0 +439)

Então só fui ter tempo pra resolver isso hoje =/ bom, como ele recompilou o ruby e o db ele não sabia reconhecer o formato que o arquivo que fica em /var/db/pkg/pkgdb.db e não atualizava mais nenhum pacote que o portaudit (/usr/ports/security/portaudit) me avisa que estava desatualizado, procurando na net achei algumas respostas, testei e funcionou 100% bom.



Lembrando que estava usando nesse servidor um FreeBSD 5.4 com ports atualizado por cvs

Vamos ao que interessa:

Primeiro é necessário fazer backup dos db's que existem hoje, mesmo que eles não funcionem.

#mv /var/db/pkg/pkgdb.db /var/db/pkg/pkgdb.db.bkp
#mv /usr/ports/INDEX-6.db /usr/ports/INDEX-6.db.bkp

depois retire os programas que utilizam esse db:

# pkg_info | grep portupgrade | awk '{ print "pkg_delete " $1 }' | sh
# pkg_info | grep ruby | awk '{ print "pkg_delete " $1 }' | sh
# pkg_info | grep db41 | awk '{ print "pkg_delete " $1 }' | sh

ou

# pkg_delete portupgrade-2.1.3.1,2
# pkg_delete ruby18-bdb-0.5.9
# pkg_delete ruby18-bdb1-0.2.2
# pkg_delete db4-4.0.14_1,1
# pkg_delete db41-4.1.25_3
# pkg_delete db42-4.2.52_4


No seu sistema isso pode diferir!

Após remoção dos pacotes, basta reinstalá-los:

# cd /usr/ports/sysutils/portupgrade && make config && make install clean

no make config selecione bdb4

ele já ira baixar e instalar os pacotes do ruby, depois de feito isto, é necessário "arrumar" as dependências dos pacotes no banco (fix):

# pkgdb -F

Feito isto atualize seu ports por CVSUP ou PORTSNAP, e pode utilizar o portupgrade[1] novamente para atualizar os pacotes que estão desatualizados e foram mostrados pelo portaudit

[1] /usr/ports/sysutils/portupgrade

Com isso resolvi meus problemas. =D

Fiz este pequeno artigo com base em:
http://www.mail-archive.com/freebsd-ports@freebsd.org/msg00247.html