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

怎么做?

※ 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)
4

1 回答 1

10

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

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

sudo port selfupdate
sudo port clean wget
sudo port install wget

或者,wget您可以使用curlApple 随 OS X 提供的版本,而不是 。

更新:根据您的更新,您似乎正在使用 MacPorts-installed 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 项目回答说,这可能是由于升级到新版本的 OS X 时未遵循 MacPorts 迁移说明造成的;此处有一个MacPorts 问题热列表条目以了解libiconv兼容性

无论如何,可能的工作是wget从源代码重新安装。

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

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

于 2012-11-09T05:35:14.067 回答