如何在Mac上修复libiconv错误?

9

我用这个命令从 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

How to do?

※ Mac OS X 10.7.5

Addition

When I run

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)

确保您没有设置DYLD_LIBRARY_PATH。这可能会导致此类问题,并且在OS X上通常是不必要的并且有害的(例如在此情况下)。 - neverpanic
1个回答

10

显然,在你安装了libiconv之后,你在本地构建并安装了wget的副本,因此它会动态链接到该库,而你现在已经删除了该库。如果你想删除MacPorts的所有痕迹,你需要重新构建那个wget副本。

否则,你可以使用MacPorts安装一个wget副本,这也会安装所有依赖项,如libiconv

sudo port selfupdate
sudo port clean wget
sudo port install wget

或者,你可以使用苹果自带的 curl,而不是 wget

更新:根据你的更新,似乎你正在使用通过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端口文件未在libiconv上注明wget端口依赖关系。我已经提出了一个问题。而MacPorts项目回答说,这可能是由于在升级到新版本的OS X时没有遵循MacPorts迁移指南导致的;这里有一个关于libiconv兼容性的MacPorts问题热点清单条目。

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

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

如果这不起作用,您可能需要阅读迁移指南,并确保在升级后重新安装了所有端口。


非常感谢。我已经按照你所写的做了。但是不幸的是,我又看到了错误。当我运行 port installed 命令检查 libiconv 时,它显示为 libiconv @1.14_0(active)。当我运行 curl 命令时,收到了相同的消息:() - ikebukuro
谢谢!我已经尝试了你的方法。但结果还是一样的。可能是我电脑出了点问题。不过还是非常感谢你。 - ikebukuro
1
接受的答案是不正确的,也不能解决问题。 - Antonio Sesto
@AntonioSesto,从您的评论中并不清楚您所说的问题是什么。可能有许多不同的情况。如果您遇到了问题,请建议打开自己的问题并描述您所拥有的确切情况。 - Ned Deily
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Antonio Sesto
好的,谢谢。请参阅上面的附加更新,如果对您有用,请告诉我们。 - Ned Deily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接