问题描述
尝试使用 easy_install 或 pip 安装 psycopg2,但终端卡在 xcrun 和 lipo 之间的循环中.
Been trying to install psycopg2 with either easy_install or pip, and the terminal gets stuck in a loop between xcrun and lipo.
sidwyn$ sudo easy_install psycopg2
Searching for psycopg2
Reading https://pypi.python.org/simple/psycopg2/
Reading http://initd.org/psycopg/
Reading http://initd.org/projects/psycopg2
Best match: psycopg2 2.5.1
Downloading https://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.5.1.tar.gz#md5=1b433f83d50d1bc61e09026e906d84c7
Processing psycopg2-2.5.1.tar.gz
Writing /tmp/easy_install-dTk7cd/psycopg2-2.5.1/setup.cfg
Running psycopg2-2.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dTk7cd/psycopg2-2.5.1/egg-dist-tmp-4jaXas
clang: warning: argument unused during compilation: '-mno-fused-madd'
它在 xcrun 和 lipo 之间反弹,并永远停留在这个循环中.希望对此有所了解.
It bounces between xcrun and lipo and is stuck forever in this loop. Would appreciate some insights on this.
我使用的是最新版本的 OS X Mavericks 10.9.
I'm on OS X Mavericks 10.9, latest build.
推荐答案
更合适的解决方法是:
ln /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo
xcrun -k lipo
为什么:xfx 的修复可能会破坏在未来版本的 Xcode 中使用 xcode-select 选择工具链的能力.
Why: xfx's fix will likely break being able to use xcode-select to choose your toolchain in future versions of Xcode.
Pre- Mavericks 和 Xcode 5.x,/usr/bin/lipo 似乎是 actual lipo 工具的 actual 位置(试试 cat/usr/bin/lipo
- 看起来像一个大二进制文件).在 Mavericks/Xcode 5.x 中,lipo 被移动到 XcodeDefault.xctoolchain,/usr/bin/lipo
中的二进制文件是一个看起来只是调用 xcrun lipo
的薄包装器>(参见nm/usr/bin/lipo
),它依次根据xcode-select
找到lipo的位置.
Pre- Mavericks and Xcode 5.x, /usr/bin/lipo seems to be the actual location of the actual lipo tool (try cat /usr/bin/lipo
- looks like a big binary). In Mavericks / Xcode 5.x, lipo was moved to XcodeDefault.xctoolchain, and the binary at /usr/bin/lipo
is a thin wrapper that appears to just call xcrun lipo
(see nm /usr/bin/lipo
), which in turn finds the location of lipo based on xcode-select
.
可能,xcode-select
和/或 Mavericks 的新版本用包装器版本替换了/usr/bin/lipo.如果您随后尝试将 lipo 与 4.x 工具链 xcode-select
一起使用,它将不起作用,因为该工具不包含在旧版本的 Xcode 中.幸运的是,出于某种原因,它仍然包含在 iPhoneOS.platform 中,否则您可能不得不从未损坏的 <=10.8 机器中提取它.
Probably, new versions of xcode-select
and/or Mavericks replace /usr/bin/lipo with the wrapper version. If you then try to use lipo with the 4.x toolchain xcode-select
'd, it won't work, since the tool isn't contained in older versions of Xcode. Luckily, it's still included in iPhoneOS.platform for some reason, else you'd probably have to pull it from an uncorrupted <=10.8 machine.
看起来好像在 4->5 开关中 Developer/usr/bin 和 Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 之间有很多工具改组 - 如果有的话我不会感到惊讶其他不太常用的命令行工具也存在类似问题.
It looks as if there was a lot of shuffling of tools between Developer/usr/bin and Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin in the 4->5 switch - it wouldn't surprise me if there were similar problems with other less-often-used command line tools as well.
最后,xcrun 在找不到工具时挂起的事实看起来像一个苹果 bug,简单明了.
Finally, the fact that xcrun hangs when it can't find a tool seems like an apple bug, plain and simple.
这篇关于xcrun/lipo 在 OS X Mavericks 和 XCode 4.x 中冻结的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!