安装Xcode 8 Beta xip文件时出现“找不到中央目录签名”。

46

我已经下载了Xcode 8 Beta的.xip文件,但是无法解压。打开文件后就一直停留在“验证…”状态数个小时。

如果我尝试使用命令行进行解压缩,会出现以下情况...

Downloads unzip Xcode_8_beta.xip 
Archive:  Xcode_8_beta.xip
  End-of-central-directory signature not found.  Either this file 
  is not a zipfile, or it constitutes one disk of a multi-part archive.        

  In the latter case the central directory and zipfile comment will be
  found on the last disk(s) of this archive. unzip:  cannot find 
  zipfile directory in one of Xcode_8_beta.xip or Xcode_8_beta.xip.zip, 
  and cannot find Xcode_8_beta.xip.ZIP, period.

5
请尝试重新下载文件。听起来文件可能已经损坏了。你能否将其哈希值与下载站点上的一个进行比较? - TylerH
1
请检查您的OSX版本,它应该是最新的,与Xcode版本相对应。 - Kamleshwar
Xcode_8_beta_6 只需要更新到OSX 10.11.5,我有15 GB的可用磁盘空间。 - Adil Soomro
12个回答

61

.xip文件格式包含一个归档文件(xar包含gzip归档和元数据)以及该归档文件的签名。 签名非常重要,因为之前Xcode下载曾被篡改(例如XcodeGhost),注入恶意代码到应用程序中。因此,像跳过验证(xattr -d com.apple.quarantine Xcode_8_beta.xip)这样的方法似乎是不负责任的。

强烈建议您尝试在Finder中使用Archive Utility.app打开它。如果签名检查不起作用,请尝试重新下载。

如果您想调查.xip文件是否经过有效签名,或者出于任何原因想要扩展它而不使用Archive Utility,可以使用pkgutil

pkgutil --check-signature Xcode_8_beta.xip

输出应该像这样:

    Package "Xcode_8_beta.xip":
       Status: signed Apple Software
       Certificate Chain:
        1. Software Update
           SHA1 fingerprint: 1E 34 E3 91 C6 44 37 DD 24 BE 57 B1 66 7B 2F DA 09 76 E1 FD
           -----------------------------------------------------------------------------
        2. Apple Software Update Certification Authority
           SHA1 fingerprint: FA 02 79 0F CE 9D 93 00 89 C8 C2 51 0B BC 50 B4 85 8E 6F BF
           -----------------------------------------------------------------------------
        3. Apple Root CA
           SHA1 fingerprint: 61 1E 5B 66 2C 59 3A 08 FF 58 D1 4A E2 24 52 D1 98 DF 6C 60
如果该签名未由您的钥匙串中的 Apple 根 CA 签名,那么您可能应该在此停止。如果到目前为止一切正常,您可以运行以下命令:

如果该签名未由您的钥匙串中的 Apple 根 CA 签名,那么您可能应该在此停止。如果到目前为止一切正常,您可以运行以下命令:

xar -xf Xcode_8_beta.xip
sudo tar zxvf Content

3
存档工具是唯一为我解决问题的方法。谢谢! - gutte
30
无法解压缩,出现错误信息“tar: Unrecognized archive format”。在GUI中也无法提取。我正在运行Yosemite操作系统。 - ReDetection
6
无法解压缩。出现错误tar:未识别的存档格式。在GUI中也无法提取。我正在运行El Captain 10.11.5。 - imti
2
归档实用工具似乎是唯一有效的工具。您可以使用命令行启动它,使用osascript -e "tell application \"Archive Utility\" to open \"Macintosh HD:path:to:Xcode_8.xip\""。但是它会立即返回,所以您需要轮询以查看文件是否存在或其他内容,以了解何时实际完成。 - JScott
2
这是我用来执行所有操作的Apple Script:https://gist.github.com/JScott/5be1c2770f2134b22a67d417fd91c895 例如 osascript unxip.scpt /tmp/Xcode_8.app - JScott
显示剩余8条评论

38

我不确定为什么归档实用程序在处理这些归档文件时遇到了这么多问题,但只要你的下载本身不是损坏的,手动提取应用包总是有效的。顺便说一句,我使用的是10.12 GM种子 (16A320)。

Xcode.app包含在一个CPIO归档文件中,该文件先被压缩成xz格式,然后打包到v2 (即Yosemite) PBZX流中(就像Yosemite/Sierra安装包中的负载一样)。这个结果流是与一些元数据一起打包并签名分发的。将其从所有这些混乱中取出来并不难,但需要付出一点努力。

(如果你想看看这是什么样子,这里有一段记录我刚刚做的,包括文件大小和证书SHA1哈希值。)

  1. 验证签名和签署存档的证书链。

pkgutil --verbose --check-signature ./Xcode_8_GM_seed.xip
  • 从存档中提取PBZX流。

    xar -xf ./Xcode_8_GM_seed.xip
    
    获取 PBZX v2 解包器并解包打包好的文件。
  • curl -O https://gist.githubusercontent.com/pudquick/ff412bcb29c9c1fa4b8d/raw/24b25538ea8df8d0634a2a6189aa581ccc6a5b4b/parse_pbzx2.py
    python parse_pbzx2.py Content
    
  • 解压缩存档(应该只有一个块“part00”)。

  • xz -d Content.part00.cpio.xz
    
  • 以特权用户身份解压CPIO归档文件(因为设备框架具有奇怪的符号链接,使得cpio否则会报错,并且它需要由root拥有),然后将生成的Xcode应用程序包移动到/Applications目录中。

  • sudo cpio -idm < ./Content.part00.cpio
    sudo mv ./Xcode.app /Applications/
    
    它应该在第一次启动时提示您进行安装后设置步骤。


    6
    谢谢。第三步完成后,您可以使用“The Unarchiver”应用程序来解压缩Content.part00.cpio.xz文件。 - krafter
    2
    当你的系统上没有xz工具时,就像我遇到的那样,你可以用“sudo cpio -izmdu 0<Content.part00.cpio.xz”来代替步骤4。cpio的“z”选项可以提取xz压缩文件。 - konran
    2
    要提取Content.part00.cpio.xz文件,您可以使用tar命令:$ sudo tar -zxvf Content.part00.cpio.xz -C /Applications - Bartosz
    @NinjaCoder:你确定在运行命令时所处的目录位置吗?看起来好像你已经将.xz文件复制到某个地方并且cd进入了那个地方... - konran
    如krafter所提到的,在第三步之后,您可以运行:tar xf Content.part00.cpio.xz - iman
    显示剩余2条评论

    31

    XIP文件(提取并安装)只是一种特殊的归档文件,可以通过苹果验证解压缩。在2014年的MacBook Pro i7上,Xcode 8二进制文件需要超过30分钟才能解压缩。如果在接近一小时后文件没有太多进展,请重新下载存档文件并尝试再次解压缩。

    另外,Xcode 8.0 Beta需要运行macOS 10.11.4或更高版本的Mac。请确保您的系统版本得到支持。

    Xcode 8 Beta 2说明:需要安装Beta 2的macOS版本为10.11.5或更高版本。


    3
    结果发现我缺少了一个El Capitan的更新,这导致我无法继续操作,而且从未报错。 - chris P
    @chrisP 好主意,我会把这个信息加到我的答案里,以便帮助未来的访问者。 - JAL
    尽管使用的是2015款MacBook Pro 2.9GHz i5,但仅用了2分钟。 - Rukshan
    @Kamaros 谢谢,我现在正在查看 beta 2 版本的发布说明。 - JAL
    是的,在更新到10.11.6之后,我成功安装了。 - KarenAnne

    6
    我不断地收到有关存档文件损坏的错误消息,因为我使用The Unarchiver作为我的解包程序。出于某种原因,它无法处理数字签名检查,因此手动选择使用存档实用程序打开.xip文件解决了我的问题。

    enter image description here


    6

    打开终端

    1.将Xcode拖放到终端界面,获取路径并输入cd命令,然后按回车键。

    2.输入xattr -d com.apple.quarantine Xcode-beta.xip,然后按回车键。


    3
    这完全绕过了xip文件的签名检查,使得这种存档格式失去了意义。 - sgonzalez
    9
    @sgonzalez 是的... 但我们有些人需要在某个时候做工作。希望苹果可以以一种不需要我四个小时才能完成每件事情的方式部署东西。也许加上免责声明会比较好。 - mpowered
    给这个点赞。我有一种感觉,将来我会更经常需要它。为什么要等待30分钟来查看“验证存档”的原因? - Stanislav Dvoychenko
    我在使用Xcode 8 GM时遇到了一些问题。我使用了Frederic的pkgutil --check-signature命令来检查包是否正常。之后使用xattr命令跳过无尽的验证。双击提取即可。 - Yvo
    @StanislavDvoychenko,我在运行“Xaytr -d com.apple.quarantine XCode…”时遇到了“xattr:XCode-8.2.1.xip:没有这样的xattr:com.apple.quarantine”的问题。你有什么想法吗? - NinjaCoder

    2

    我也遇到了这个错误。

    1. 我将我的Mac OS X版本更新到了10.11.6。 我认为10.11.4是运行Xcode 8所需的最低OS X版本。

    2. 确保您有至少40 GB的空间来解压缩Xcode_8_beta_5.xip或Xcode_8_beta_2.xip文件。

    然后解压它。这个Xcode版本需要比其他版本更多的空间。


    2
    重启我的系统是解决问题的方法。

    0

    使用

    这是我所做的:

    • 在 10.12 上使用“存档实用程序”进行提取
    • 将 Xcode-beta.app 复制到 10.11
    • Xcode-beta.app 在 10.11 上似乎可以正常工作。

    在 El Capitan 上,当我尝试提取下载的 .xip 文件时,“存档实用程序”会挂起,而该文件在 macOS Sierra 上使用“存档实用程序”进行提取则不会出现问题。


    0

    请检查您的Xcode版本,它应该是最新的或与Xcode版本相符。希望这能解决您的问题。


    0

    我也遇到了同样的问题,尽管我正在运行最新的El Capitan(10.11.5)。根据Chris P的评论,我从恢复模式重新安装了OS X(https://support.apple.com/en-us/HT204904),然后一切正常。显然,在之前从应用商店更新中有些东西没有正确安装。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接