1

Я застрял, обновляя свой MacPorts. Кажется, у меня проблема с реестром. Я подал билет здесь. Когда я делаю sudo port upgrade outdated я получаю эти ошибки:

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

У другого пользователя MacPorts была такая же проблема, и, похоже, он не нашел ответа. Кажется, это ошибка, связанная с реестром - база данных sqlite.Я пытался выяснить, как я могу решить эту проблему. Я был неудачным. Без исправления я не могу двигаться дальше. Даже удаление всех портов для новой чистой установки не работает.

Как я могу

  • исправить эту проблему
  • если это невозможно исправить, переустановите MacPorts, если невозможно удалить порты

2 ответа2

3

Дайджест решения, предложенного при ошибке удаления: "передана неверная запись":

Шаг 1: Откройте реестр Macports с помощью sqlite3:

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

Шаг 2: Найдите проблемные порты:

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

Шаг 3: Удалите оскорбительные строки:

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

Шаг 4: исправьте вашу установку

sudo port selfupdate 
sudo port upgrade outdated

Обратите внимание, что id меняется в зависимости от установки!

1

Проблема была решена благодаря людям в MacPorts. Смотрите трек билет здесь. Возникла проблема с реестром MacPorts. Каким-то образом база данных SQLite имела некоторые неконтролируемые остатки зависимостей, которые пришлось удалить.Я выполнил запрос sqlite

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

заменить идентификатор отсутствующего порта в базе данных идентификатором, используемым pkgconfig. Оно работало завораживающе. Я тогда мог сделать

sudo upgrade outdated

снова и продолжаю модернизировать все мои устаревшие порты и чинить сломанные. Все хорошо сейчас!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .