安装 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 bash
和cd /opt/local
之后,您应该开始使用grep /Developer/ ...
等命令查找所有受影响的端口文件。
您应该使用port provides ...
识别所有受影响的端口,我通过sed
和sort | uniq
进行管道传输。您可以使用port -n upgrade --force ...
或单独的port uninstall ...
和port install ...
命令简单地重新安装所有这些端口。
我建议使用一个大的port -n upgrade --force ...
命令来避免重复重建依赖项,然后使用单独的卸载和安装命令。
当然,/Developer
仅存在于文本配置文件中的各种端口,这意味着您可以使用 sed -i -e 's/\/Developer//g' ...
手动修复它们,但显然不能使用二进制文件这样做。
恐怕您至少必须重建所有 Python 和 Perl 安装,使这次升级成为清理依赖旧版本的软件包的理想时机,比如 python26
和 perl5.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 功能的主要内容,如果未能解决你的问题,请参考以下文章