Как исправить ошибку libiconv на Mac?

У меня есть порт деинсталляции с Mac с этой командой:

sudo port -fp uninstall installed

Затем, когда я использую wget для загрузки файла, он показывает мне:

dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
  Referenced from: /opt/local/bin/wget
  Reason: Incompatible library version: wget requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Trace/BPT trap: 5

Как сделать?

※ Mac OS X 10.7.5

прибавление

Когда я бегу

otool -L $(which wget)

Это дало мне

/opt/local/bin/wget:
    /opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
    /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.19.0)
    /opt/local/lib/libgnutls.26.dylib (compatibility version 49.0.0, current version 49.3.0)
    /opt/local/lib/libtasn1.3.dylib (compatibility version 5.0.0, current version 5.13.0)
    /opt/local/lib/libgcrypt.11.dylib (compatibility version 19.0.0, current version 19.0.0)
    /opt/local/lib/libgpg-error.0.dylib (compatibility version 9.0.0, current version 9.0.0)
    /opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
    /opt/local/lib/libidn.11.dylib (compatibility version 18.0.0, current version 18.8.0)

1 ответ

Решение

Видимо, вы создали и установили копию wget локально, пока у вас было libiconv устанавливается из MacPorts, поэтому он динамически связывается с той библиотекой, которую вы сейчас удалили. Если вы хотите удалить все следы MacPorts, вам нужно восстановить эту копию wget,

В противном случае вы можете установить копию wget с MacPorts, который также установит все зависимости, такие как libiconv,

sudo port selfupdate
sudo port clean wget
sudo port install wget

Или вместо wget Вы могли бы использовать curl который Apple поставляет с OS X.

ОБНОВЛЕНИЕ: Судя по вашему обновлению, вы используете установленный MacPorts wget, Каким-то образом вам удалось синхронизировать зависимости. (Зачем использовать port -fp uninstall installed?) Предложите сейчас попробовать:

sudo port selfupdate     # if not run recently   
sudo port clean libiconv
sudo port upgrade --force libiconv

форсировать libiconv к текущей версии.

ОБНОВЛЕНИЕ [2014-12]: Возвращаясь к этому, проблема также может быть связана с неполным файлом порта MacPorts, который не регистрирует wget зависимость порта от libiconv, Я открыл вопрос об этом. [...] И проект MacPorts отвечает, что это может быть результатом несоблюдения инструкций по миграции MacPorts при обновлении до новой версии OS X; есть запись о проблемном списке MacPorts для libiconv совместимость здесь.

В любом случае, что может работать, это переустановить wget из источника.

sudo port selfupdate
sudo port -f uninstall wget
sudo port -s install wget

Если это не поможет, вы можете прочитать инструкции по миграции и убедиться, что вы переустановили все порты после обновления.

Другие вопросы по тегам