On 7/9/2024 02:14, Riccardo Mottola wrote:

The first step toward fixing it is to find out which ports' db rows are affected. Try running this: sqlite3 /opt/local/var/macports/registry/registry.db "select * from ports where id=726"

sqlite3 /opt/local/var/macports/registry/registry.db "select * from ports where id=726"
726|xmlcatmgr|435d94eb7431bfb474662c034bffac8cbde64759424e188613ed8a7f8287ba96-1298|/opt/local/var/macports/software/xmlcatmgr/xmlcatmgr-2.2_1.darwin_10.x86_64.tbz2|0|2.2|1|||installed|1724755415|image|x86_64|0|darwin|10|none|0

apparently, there is only one line.

An miracle, if I run now "port upgrade outdated" I get no errors, fixed itself! but reboot or some operation was needed.

Interesting. Maybe the issue was at the filesystem level and rebooting triggered a fsck that repaired it, or maybe sqlite was able to self-repair somehow when given write access.

Is there anything else I can run to see if there is no other inconsistency? Or maybe it's OK?

First install the macports.sqlext port. Then run this command (all one line):

sqlite3 /opt/local/var/macports/registry/registry.db ".load /opt/local/lib/sqlite3/macports.sqlext" "PRAGMA integrity_check"

That will check that the database is internally consistent. It does not however check that the data is correct with respect to external factors, e.g. whether the files that each port is recorded as installing actually exist in the filesystem.

Deleting everything takes some time, so before doing it...

If you're no longer seeing errors, no need to delete anything I guess. It's probably worth running a test with smartctl (from the smartmontools port), just in case.

- Josh

Reply via email to