Как исправить ошибку 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
Если это не поможет, вы можете прочитать инструкции по миграции и убедиться, что вы переустановили все порты после обновления.