【问题标题】:How to fix libiconv error on Mac?如何修复 Mac 上的 libiconv 错误?
【发布时间】:2012-10-29 09:38:36
【问题描述】:

我已使用此命令从 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)

【问题讨论】:

  • 确保您没有设置DYLD_LIBRARY_PATH。它可能会导致诸如此类的问题,并且通常不需要并且在 OS X 上是有害的(例如在这种情况下)。

标签: macos libiconv


【解决方案1】:

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

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

sudo port selfupdate
sudo port clean wget
sudo port install wget

或者,您可以使用 Apple 随 OS X 提供的 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 端口文件未注册 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 并确保在升级后重新安装了所有端口。

【讨论】:

  • 非常感谢。我已经做了你写的。但不幸再次看到错误。当我运行port installed检查libiconv时,它是libiconv @1.14_0(活动)。当我运行 curl 命令,得到相同的消息:(
  • 谢谢!我试过你的方法。但结果是一样的。也许我的电脑有问题。但还是谢谢你。
  • 接受的答案不正确,并不能解决问题。
  • @AntonioSesto 从您的评论中不清楚您在说什么问题。有许多不同的情况可能。如果您遇到问题,建议您提出自己的问题并描述您遇到的确切情况。
  • 问题正是问题中描述的问题。我尝试了接受答案的命令,但没有成功。
猜你喜欢
  • 2018-02-10
  • 2022-01-08
  • 2021-01-14
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2012-06-05
  • 2014-07-03
  • 2011-07-12
相关资源
最近更新 更多