MacPorts Invalid Entry

1

Ich kann meine MacPorts nicht mehr aktualisieren. Ich habe anscheinend ein Registrierungsproblem. Ich habe ein Ticket eingereicht Hier . Wenn ich es tue sudo port upgrade outdated Ich erhalte diese Fehler:

DEBUG: Executing org.macports.uninstall (iso-codes)
--->  Unable to uninstall iso-codes @3.34_0, the following ports depend on it:
Error: org.macports.uninstall for port iso-codes returned: an invalid entry was passed
DEBUG: Error code: registry::invalid
DEBUG: Backtrace: an invalid entry was passed
    while executing
"$depport name"
    (procedure "registry::check_dependents" line 19)
    invoked from within
"registry::check_dependents $port ${uninstall.force} "uninstall""
    (procedure "registry_uninstall::uninstall" line 83)
    invoked from within
"registry_uninstall $subport $version $revision $portvariants [array get user_options]"
    (procedure "portuninstall::uninstall_main" line 3)
    invoked from within
"$procedure $targetname"
Warning: targets not executed for iso-codes: org.macports.uninstall
Please see the log file for port iso-codes for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_registry_portfiles_iso-codes_3.34_0/iso-codes/main.log
DEBUG: an invalid entry was passed
    while executing
"$depport name"
    (procedure "registry::check_dependents" line 19)
    invoked from within
"registry::check_dependents $port ${uninstall.force} "uninstall""
    (procedure "registry_uninstall::uninstall" line 83)
Warning: Failed to execute portfile from registry for iso-codes @3.34_0
--->  Unable to uninstall iso-codes @3.34_0, the following ports depend on it:
DEBUG: an invalid entry was passed
    while executing
"$depport name"
    (procedure "registry::check_dependents" line 19)
    invoked from within
"registry::check_dependents $port ${uninstall.force} "uninstall""
    (procedure "registry_uninstall::uninstall" line 83)
    invoked from within
"registry_uninstall::uninstall $newname $version_in_tree $revision_in_tree $portinfo(canonical_active_variants) [array get options]"
Error: Uninstall iso-codes 3.34_0 failed: an invalid entry was passed
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets

Ein anderer MacPorts-Benutzer hatte das gleiche Problem und fand anscheinend keine Antwort. Es scheint ein Fehler in Bezug auf die Registry zu sein - SQLite-Datenbank. Ich habe versucht herauszufinden, wie ich dieses Problem lösen kann. Ich war erfolglos Ohne einen Fix kann ich nicht weitermachen. Selbst die Deinstallation aller Ports für eine neue Neuinstallation funktioniert nicht.

Wie kann ich

  • Beheben Sie dieses Problem
  • Wenn dies nicht behoben werden kann, installieren Sie MacPorts neu, wenn die Deinstallation von Ports nicht möglich ist
rhand
quelle

Antworten:

3

Eine Zusammenfassung der unter vorgeschlagenen Lösung Deinstallationsfehler: "Ein ungültiger Eintrag wurde übergeben" :

Schritt 1: Öffnen Sie die Macports Registry mit sqlite3:

sudo sqlite3 /opt/local/var/macports/registry

Schritt 2: Finden Sie die problematischen Ports:

sqlite> SELECT * FROM dependencies WHERE id NOT IN (SELECT DISTINCT id FROM ports);
618|apr|
618|expat|
618|libiconv|
618|db46|
618|sqlite3|

Schritt 3: Entfernen Sie die fehlerhaften Zeilen:

DELETE FROM dependencies WHERE id = 618;
DELETE FROM files WHERE id = 618;

Schritt 4: Reparieren Sie Ihre Installation

sudo port selfupdate 
sudo port upgrade outdated

Notiere dass der id variiert je nach Installation!

Tim
quelle
1

Das Problem wurde dank der Mitarbeiter von MacPorts behoben. Siehe Streckenkarte Hier . Es gab ein Problem mit der MacPorts-Registrierung. Irgendwie hatte die SQLite-Datenbank Reste von Schurkenabhängigkeiten, die entfernt werden mussten. Ich führte die SQLite-Abfrage aus

sqlite> UPDATE dependencies SET id = 2323 WHERE id = 1407;

um die ID des fehlenden Ports in der Datenbank durch die von pkgconfig verwendete ID zu ersetzen. Es wirkte wie ein Zauber. Ich könnte es dann tun

sudo upgrade outdated

Führen Sie ein erneutes Upgrade aller meiner veralteten Ports durch und reparieren Sie die defekten. Alles gut jetzt!

rhand
quelle