修复无聊的macports

Lig*_*ded 7 macports

我尝试安装一些软件包并出现以下错误:

$ 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
Run Code Online (Sandbox Code Playgroud)

这似乎是一个 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
Run Code Online (Sandbox Code Playgroud)

我试过了sudo port selfupdate,没有用。然而sudo port -v selfupdate工作。sudo port install -fp expat例如,当我尝试通过 安装 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
Run Code Online (Sandbox Code Playgroud)

该错误建议我查看它创建的日志,可以在这里找到:http : //pastebin.com/H39VTf7b。尽管我正在使用 sudo 运行命令,但它继续与用户权限有关。

之后,我尝试手动为 expat 创建目录。然后它非常失败地告诉我它没有 ncurses 的 destroot。也创建了它(以及 chown 到 macports)。现在 gawk 失败了(日志文件:http : //pastebin.com/E5w66mqe)。我无法浏览所有依赖项并为它们创建目录。我也不知道如何解决这个问题。我尝试将 macports 文件的所有者更改为“macports”但没有结果..

编辑:我还重新安装了命令行工具。依然没有。

nev*_*nic 16

当从二进制存档安装较早失败时,会出现“未找到 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
Run Code Online (Sandbox Code Playgroud)

具有讽刺意味的是,当您使用-p. 要修复此特定错误,您需要重建gettext端口:sudo port -nf upgrade gettext. 您还应该运行sudo port rev-upgrade以发现类似的问题并自动修复它们(或至少尝试)。