portupgrade (corrupted Packages)

borsti007

Well-Known Member
Nabend,

was macht man hier:

root@freebsd:/root # pkg_version -v | grep "<"
pkg_version: corrupted record for package ORBit2-2.14.19 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package aalib-1.4.r5_6 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package analitza-4.10.5 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package appres-1.0.4 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package ark-4.10.5 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package bitmap-1.0.7 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package blinken-4.10.5 (pkgdep line without argument), ignoring
pkg_version: corrupted record for package bomber-4.10.5 (pkgdep line without argument), ignoring




Die Liste geht noch endlos weiter. pkgdb -F ändert nichts. Ist da die Dantenbank hin? Kann man sowas reparieren?
 
Zuletzt bearbeitet von einem Moderator:
Hast du evtl. mal auf pkgng umgestellt? Dann kannste die pkg_* Tools vergessen und musst für alles pkg nehmen. Portmaster muss man dann noch mitteilen, dass es pkgng benutzen soll, wie es bei portupgrade ist, sollte dir die Manpage sagen.

Rob
 
An der Fehlermeldung sieht man, dass nicht auf pkgng umgestellt wurde.

Meine Diagnose ist, dass da ein make install beim Update gescheitert ist. Das ist ein Sonderfall, der weder von portmaster noch portupgrade gut gehandhabt wird, weil das einfach nicht passieren sollte.

Jedenfalls löschen die Tools alle Abhängigkeiten auf das zu aktualisierende Paket und nach erfolgter Installation werden dort neue eingetragen.

Wenn die Installation nun scheitert bricht das Tool ab. Dann ist das alte Paket nicht mehr installiert, das neue nicht (vollständig) und die Abhängigkeiten wurden nicht eingetragen.

So ein fehlendes Paket kommt dann beim Weitermachen wieder quasi automatisch als Abhängigkeit rein (wenn denn die Installation nun klappt). Aber das Tool (portmaster/portupgrade) hat dann vergessen, dass diese Pakete eine Abhängigkeit hatten die aktualisiert werden muss.

Die Tools bieten jeweils einen Parameter der eine Reparatur solcher Fehler erlaubt. In der Regel werden die Abhängigkeiten dann einfach gelöscht. Solche unsichtbaren Fehler heilen sich dann beim nächsten Update von selbst.
 
Bei pkgdb verwende ich routinemäßig:
Code:
pkgdb -Ffv
um leichte Fehler auszubügeln und:
Code:
pkgdb -fu
um die Datenbank neu aufzubauen.

Zur Bequemlichkeit habe ich mir einen Alias "kehrwoche" in die /root/.cshrc gesetzt:
Code:
alias kehrwoche 'pkgdb -Ffv && pkgdb -fu && pkgdb -Ffv && portsclean -CD'

Für hartnäckige Fälle gibt es den Schalter:
Code:
pkgdb  --fix-lost
oder in kurz:
Code:
pkgdb -L
Dauert dann aber seine Zeit, bis das durchgelaufen ist.
Am besten auch noch mal nachschauen, ob da irgendwas in /usr/ports/UPDATING der Aufmerksamkeit entgangen ist, was den Fehler ausgelöst haben könnte. Da war doch kürzlich das glib20 Update.

Man kann auch mal versuchen die Datenbank beiseite zu schieben:
Code:
mv -v /var/db/pkg/pkgdb.db /var/db/pkg/pkgdb.db.backup
und dann mit:
Code:
pkgdb -fu
neu aufbauen.
 
Zuletzt bearbeitet:
Moin, ich weiss nicht was verkehrt lief, aber "pkgdb --fix-lost" hat die Sache wieder bereinigt.

Aussedem hatte ich auch noch mal nach "pkg_version: corrupted record for package" gesucht.

Ein "portmaster --check-depends" soll auch helfen:
http://forums.freebsd.org/showthread.php?t=35009

"portmaster --check-depends" ist dann wohl das Gegenstück zu "pkgdb --fix-lost"?
 
Zurück
Oben