如何在Mac上修复libiconv错误?

时间:2012-11-09 03:40:58

标签: macos libiconv

我使用此命令从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 个答案:

答案 0 :(得分:10)

显然,当您从MacPorts安装了wget时,您在本地构建并安装了libiconv的副本,因此它会动态链接到您现在已删除的库。如果要删除所有MacPorts痕迹,则需要重建wget的副本。

否则,您可以使用MacPorts安装wget的副本,该副本还会安装所有依赖项,例如libiconv

sudo port selfupdate
sudo port clean wget
sudo port install wget

或者,您可以使用Apple提供给操作系统X的wget代替curl

更新:根据您的更新,您似乎正在使用安装了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端口依赖项。我已经opened an issue了解它。 [...]并且MacPorts项目回答说,这可能是因为在升级到OS X的新版本时没有遵循MacPorts迁移说明;有一个MacPorts problem hotlist entry for libiconv compatibilities here

无论如何,可能有效的方法是从源代码重新安装wget

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

如果这没有帮助,您可能需要阅读the migration instructions并确保在升级后重新安装了所有端口。