安装 Xcode 4.3 后无法获得 MacPort 功能

Posted

技术标签:

【中文标题】安装 Xcode 4.3 后无法获得 MacPort 功能【英文标题】:Unable to get MacPort functionality after installing Xcode 4.3 【发布时间】:2012-03-08 14:04:32 【问题描述】:

我无法让 MacPorts 正常运行。我刚刚安装了OSX Lion 10.7.3我先下载安装了MacPorts,然后看了需求,从App Store下载了Xcode4.3,然后安装了。我启动了 Xcode,它看起来可以运行且功能正常。但是,当我尝试使用 MacPorts 移植时,它给了我这个错误消息(摘录):

Warning: xcodebuild exists but failed to execute
Warning: Xcode does not appear to be installed; most ports will likely fail to build.

我听从了以下的建议:

How do i install additional packages for Xcode on OSX Lion to allow MacPorts to work

并从 Xcode 中的首选项安装 command_line_tools_for_xcode。我关闭了 Xcode,又遇到了错误:

$ sudo port install libsocketsPassword:
Warning: xcodebuild exists but failed to execute
Warning: Xcode does not appear to be installed; most ports will likely fail to build.
--->  Computing dependencies for libsockets
--->  Dependencies to be installed: openssl zlib
--->  Extracting zlib
Error: Couldn't determine your Xcode version (from '/usr/bin/xcodebuild -version').
Error: 
Error: If you have not installed Xcode, install it now; see:
Error: http://guide.macports.org/chunked/installing.xcode.html
Error: 
Error: Target org.macports.extract returned: unable to find Xcode
Error: Failed to install zlib
Log for zlib is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_archivers_zlib/zlib/main.log
Error: The following dependencies were not installed: openssl zlib
Error: Status 1 encountered during processing.

我不确定下一步该去哪里。如何解决我的 Xcode 和 MacPort 界面问题?

【问题讨论】:

【参考方案1】:

理论上,如果您安装了 Xcode4.3(在 /Applications 中),这应该可以工作:

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

(并且您已经安装了可选的命令行工具)

【讨论】:

在将 Xcode 从 4.2 更新到 4.3 时,这也对我有用;我相信你只需要在进行重大操作系统更新时重新安装 mac-ports +1。谢谢!!接受/评分最高的答案看起来真的很痛苦! 也为我工作:Xcode 4.3.2 on OSX 10.7.3 using MacPorts 2.0.4 供参考,xcode-select 来自 Apple:developer.apple.com/library/mac/#documentation/Darwin/Reference/… 运行后重新启动终端可能会对您有所帮助。【参考方案2】:

安装“Xcode 命令行工具”包后,一切都将开始正常工作。 你可以从这里得到它:https://developer.apple.com/downloads/index.action#

【讨论】:

不知道为什么这被否决了......对我来说就像一个魅力......谢谢帕维尔 在通过 xcode 中的首选项下载命令行工具之前,我重新安装的 macports 无法正常运行。这个答案与我为使 macports 正常工作所做的相符。 在尝试任何迁移之前。我下载了“命令行工具...”并且运行良好。 Mac OS Lion + xCode 4.3.3。无需迁移 投票!这对我有用,使用 XCode 4.4 和 Mountain Lion 这为我解决了一个相关问题。升级到 XCode 4.6 后,EPD ipython 无法运行。安装命令行工具(来自 Xcode Gui)就可以了。【参考方案3】:

请查看MacPorts migration instructions for Xcode 4.3。

说明非常复杂。您需要运行xcode-select 设置新的工具路径,更新macports.conf 中的developer_dir(如Henk Poley 所述),重新安装MacPorts(哎哟),最后卸载并重新安装所有端口(双哎哟)。

编辑: libpvx 在完成上述操作后仍然无法安装。需要两个额外的步骤:

    sudo ln -s /Developer / sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs /SDKs

YMMV 如果你安装了不同的端口!

【讨论】:

我能够通过仅将两个软链接添加到我的根目录(编辑中提到的开发人员和 SDK)来使其工作。无需迁移 macports。 这些额外的信息起到了帮助作用,最终奏效了。我使用:sudo nano /opt/local/etc/macports/macports.conf 更新了配置文件。非常感谢,我现在可以成功使用 MacPorts。 这些说明比需要的要复杂。我只是确保xcode-select 指向正确的路径并且/opt/local/etc/macports.conf 具有developer_dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain【参考方案4】:

同样在/opt/local/etc/macports/macports.conf 中将developer_dir 更改为指向/ 而不是/Developer

【讨论】:

记得取消注释该行! (默认用#注释掉) 我使用:'sudo nano /opt/local/etc/macports/macports.conf' 来编辑配置,但这仍然没有这样做,所以我遵循了@gmcnaughton 的附加建议它终于奏效了。感谢您的帮助。 使用 XCode 4.6 为我工作【参考方案5】:

之后

sudo xcode-select -switch /Applications/Xcode.app

我也不得不跑

sudo xcodebuild -license

并接受许可

【讨论】:

【参考方案6】:

这是一个对我有用的解决方案:

    为 Xcode 安装命令行工具

    Xcode -> Preferences -> Downloads
    

    帮助 MacPorts 找到正确的 Xcode 文件夹

    sudo /usr/bin/xcode-select -switch /Applications/Xcode.app
    

    为现在存在于其他地方的 clang 编译器创建符号链接

    sudo ln -s `which clang` /Applications/Xcode.app/Contents/Developer/usr/bin/
    sudo ln -s `which clang++` /Applications/Xcode.app/Contents/Developer/usr/bin/
    

【讨论】:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer 更合适吗?我现在正在以这种方式成功构建 macport。 Contents/Developer 似乎是自动添加的。 xcode-select -print-path 显示/Applications/Xcode.app/Contents/Developer【参考方案7】:

尝试使用trunk,目前还没有支持Xcode 4.3的版本。

【讨论】:

【参考方案8】:

在 /opt/local/etc/macports.conf 中设置开发者路径对我有用,

developer_dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain

因为大多数编译器现在都存储在那里,而不是 Developer 下的 /usr/bin。

【讨论】:

【参考方案9】:

这些都不适合我。等待macports发布正式支持XCode 4.3+的新版本

【讨论】:

【参考方案10】:
sudo mv /usr/bin/xcodebuild /usr/bin/xcodebuild.old
sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild /usr/bin/xcodebuild 

【讨论】:

【参考方案11】:

从 Xcode 4.3 开始,默认不安装命令行构建工具。启动 Xcode,打开 Preferences,然后转到 Downloads 选项卡。从那里您应该可以选择安装命令行工具。

您也可以在这里从网上下载它们:https://developer.apple.com/downloads/index.action

免责声明:我还没有安装 Xcode 4.3。我只在网上读到过。

【讨论】:

我安装了命令行工具,按照link,没有效果。 你可以尝试运行xcode-select -switch /Applications/Xcode.app 这行得通,但现在 clang 不在 macports 期望的位置,即在 usr/bin/clang 中【参考方案12】:

截至 2012 年 2 月 27 日,MacPorts 的 official suggestion 似乎不再使用 XCode 4.3,而是使用 4.1 到 4.2.1,可以从 Apple 下载。

有一个bug ticket 可能有助于跟踪它的演变。

顺便说一句,正如我在该错误报告中的评论 #11 中所报告的,我能够通过使用在这个问题中找到的 2 个看起来最理智的建议来构建端口而不发出警告:sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer并将 /opt/local/etc/macports/macports.conf 中的 developer_dir 更改为 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain

【讨论】:

假设2011应该是2012?【参考方案13】:

我在没有管理员/root 权限的情况下安装了 macport,因此无法测试 xcode-select 答案。但是,我观察到 Pall Melsted 的回答有效,但最初并非如此。我发现我没有接受 Xcode 4.5 许可协议

如果您刚刚为 macports 安装了 Xcode,并且尚未接受 Xcode 许可证,您可能会收到原始帖子中出现的错误。当我使用/usr/bin/xcodebuild -version 检查我的 Xcode 版本时,系统提示我阅读并接受许可证。这样做之后,在对 Pall 建议的 macports.conf developer_dir 进行更改之后,现在一切正常。

【讨论】:

【参考方案14】:

作为替代方案:您可以将 Xcode 降级到 4.2.1 版本。 Xcode 4.2.1的DMG放在这里:https://developer.apple.com/downloads/index.action

在这个 MacPorts 对我来说很好用之后。

【讨论】:

【参考方案15】:

这已在 MacPorts 2.0.4 中修复。

要升级:

    从install site 下载MacPorts 2.0.4 或运行sudo port selfupdate。 运行here 中描述的 MacPorts 迁移以重新安装所有端口。这很痛苦,但需要恢复到工作状态。

【讨论】:

【参考方案16】:

您绝对应该像这里的每个人所说的那样运行sudo xcode-select -switch /Applications/Xcode.app,这将解决许多问题,但肯定不是全部。

Afaik,所有剩余的问题都存在于各种包的配置信息中。您可能只需按照migration instructions 中的说明重新安装 MacPorts,但我找到了另一种解决方案。


在自然执行sudo bashcd /opt/local 之后,您应该开始使用grep /Developer/ ... 等命令查找所有受影响的端口文件。

您应该使用port provides ... 识别所有受影响的端口,我通过sedsort | uniq 进行管道传输。您可以使用port -n upgrade --force ... 或单独的port uninstall ...port install ... 命令简单地重新安装所有这些端口。

我建议使用一个大的port -n upgrade --force ... 命令来避免重复重建依赖项,然后使用单独的卸载和安装命令。

当然,/Developer 仅存在于文本配置文件中的各种端口,这意味着您可以使用 sed -i -e 's/\/Developer//g' ... 手动修复它们,但显然不能使用二进制文件这样做。

恐怕您至少必须重建所有 Python 和 Perl 安装,使这次升级成为清理依赖旧版本的软件包的理想时机,比如 python26perl5.8

我决定不重建几个受技术影响的端口,例如fuse4x-kext,它们在Library/Extensions/fuse4x.kext/Contents/MacOS/fuse4x 中包含/Developer,但并未阻止sshfs 正常工作。

【讨论】:

【参考方案17】:

我最初安装了 xcode 3.2.2,之后我安装了 4.3。当我运行 xcode-select 时,我仍然收到关于 /Applications 中没有 xcode 项目的相同错误。然后,我深入研究了 /usr/bin/xcodebuild 脚本,发现它工作正常,并且 xcodebuild 的另一个实例(使用 xcode 4.3 安装的那个,而不是 /usr/bin 中的那个)正在运行并返回错误:

xcodebuild: 错误:/Applications 目录不包含 Xcode 项目。

似乎 /usr/bin/xcode-select 不适用于 xcode 4.3,(它已编译,因此您无法真正了解它为什么不起作用)。字符串没有提供任何线索。好东西 osx 有 strace.. 哦等等。

无论如何,我能做的最好的就是修改 /opt/local/etc/macports.conf 并取消注释包含 xcode 安装路径的行。这似乎在很大程度上解决了我的问题。

【讨论】:

好东西 osx 有 dtruss。

以上是关于安装 Xcode 4.3 后无法获得 MacPort 功能的主要内容,如果未能解决你的问题,请参考以下文章