我尝试安装一些软件包并出现以下错误:
$ sudo port install pkgconfig
---> Computing dependencies for pkgconfig
---> Dependencies to be installed: libiconv
---> Installing libiconv @1.14_0
Error: org.macports.install for port libiconv returned: no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_libiconv/libiconv/work/destroot
Error: Failed to install libiconv
Please see the log file for port libiconv for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_libiconv/libiconv/main.log
Error: The following dependencies were not installed: libiconv
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
Error: Processing of port pkgconfig failed
这似乎是 macports 的问题。所以我尝试更新端口。它抛出了同样的错误(未找到 destroot):
$ sudo port upgrade outdated
---> Installing expat @2.1.0_0
Error: org.macports.install for port expat returned: no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/work/destroot
Please see the log file for port expat for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/main.log
Error: Problem while installing expat
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
我试过sudo port selfupdate
,但没有用。不过还是管用的。例如,sudo port -v selfupdate
当我尝试通过 安装 expat 时,我得到了以下信息:sudo port install -fp expat
no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/work/destroot
该错误提示我查看它创建的日志,可以在这里找到:http://pastebin.com/H39VTf7b。尽管我使用 sudo 运行命令,但它仍然涉及用户权限。
之后,我尝试手动创建 expat 目录。然后它失败了,告诉我它没有 ncurses 的 destroot。也创建了它(以及 chown 到 macports)。现在它为 gawk 失败了(日志文件:http://pastebin.com/E5w66mqe)。我无法遍历所有依赖项并为它们创建目录。我也不知道如何解决这个问题。我尝试将 macports 文件的所有者更改为“macports”,但没有结果。
编辑:我还重新安装了命令行工具。仍然没有结果。
答案1
当先前从二进制存档安装失败时,会发生“未找到 destroot”错误(至少我是这样认为的,我还没有深入研究并修复它,因为到目前为止我无法重现)。
无论如何,解决方案不是手动操作,而是运行sudo port clean $portname
并重试。这是每次构建失败时您应该尝试的第一件事,它可以 100% 修复“未找到 destroot”错误。
顺便说一句,安装或升级时不应使用-p
开关。在这种情况下,它被认为是有害的。它不会被删除,因为它对一些不相互依赖的操作很有用,例如sudo port -p fetch outdated
。MacPorts 通常会强制重建未做任何更改的端口,以便获取依赖项的更新版本。如果您运行sudo port -p upgrade outdated
该命令,即使依赖项的更新版本无法构建,也会导致重建,这违背了升级的初衷。
您的 gawk 安装失败,因为您的/opt/local/bin/xz
二进制文件已损坏,并且无法提取源代码:
:info:extract dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
:info:extract Referenced from: /opt/local/lib/libintl.8.dylib
:info:extract Reason: Incompatible library version: libintl.8.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
讽刺的是,当您使用 运行升级时,这种情况确实会发生-p
。要修复此特定错误,您需要重建端口gettext
:sudo port -nf upgrade gettext
。您还应该运行sudo port rev-upgrade
以发现类似问题并自动修复它们(或至少尝试修复)。
答案2
附注:如果 Python 相关包显示 destroot 错误,请检查 pip 的双重安装。在我的特定情况下,我安装了 py27-funcsigs 作为端口包,并且还安装了 funcsigs 和 pip。我必须先删除 pip 版本。
sudo -H pip uninstall funcsigs
sudo port clean py27-funcsigs
sudo port install py27-funcsigs
希望这可以帮助。