安装 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 功能的主要内容,如果未能解决你的问题,请参考以下文章

安装新的 xcode 4.3 后找不到 stdio.h

无法使用 TestFlight 安装 xCode 4.3 beta 应用程序

Xcode 4.3 没有正确链接到 ZbarSDK

xcodebuild 更新到 xcode 4.3 后移动

Xcode 4.3 的奇怪行为

XCode 4.3 - 从 XCode 4.2 升级后 perl 找不到 C 编译器