【问题标题】:How to extract xip archive using command line?如何使用命令行提取 xip 存档?
【发布时间】:2017-03-17 19:31:37
【问题描述】:

我搜索了如何使用命令行提取 XIP 存档但没有运气,所以我将自己的解决方案作为bash 函数留在这里。

我找到了灵感here

【问题讨论】:

标签: xcode macos xcode8 osx-elcapitan macos-sierra


【解决方案1】:

在 macOS Mojave 上(不确定其他操作系统版本),导航到您想要展开内容的目录,然后运行 ​​xip --expand /path/to/xip.xip。例如:

iMac:Applications jeff$ xip --expand /Users/jeff/Downloads/Xcode_11_Beta.xip

【讨论】:

  • 我刚刚检查过,在 macOS High Sierra (10.13.6) 中,这个命令也可以正常工作,尽管奇怪的是在“man xip”中没有提到。我遇到了一些身份验证问题,从 developer.apple.com 重新下载文件清除了它。
【解决方案2】:

使用unxip。您可以使用 Homebrew 安装它:

brew install thii/unxip/unxip

提取.xip 文件:

unxip path/to/.xip

【讨论】:

  • Unxiping XCode 10.1 无法与 Unarchiver 一起使用...但这成功了,谢谢!
  • 这为我节省了无数小时的挫败感。谢谢。我用它来提取 Xcode_12.5.1.xip
  • @IeeCoder 我已经在Expanding items from “Xcode_12.5.1.xip”: 99% 上停留了很长时间。我要放弃吗? (那个 xip 有什么问题?没有工具可以提取它...)
【解决方案3】:

你可以试试:

xip -x [path to .xip file]

【讨论】:

    【解决方案4】:

    open -W archive.xip 会更好地工作,因为它会阻塞直到存档完成打开。

    【讨论】:

      【解决方案5】:

      你可以运行:

      open archive.xip
      

      【讨论】:

        【解决方案6】:
        function unxip()
        {
            [ -z "$1" ] && echo "usage: unxip /path/to/archive.xip" && return
        
            # http://newosxbook.com/src.jl?tree=listings&file=pbzx.c
            PBZX="/usr/local/src/pbzx/pbzx" && [ ! -x "$PBZX" ] && echo "$PBZX not found." && return
        
            [ ! -f "$1" ] && echo "$1 not found." && return
        
            [ -f "Content" ] || [ -f "Metadata" ] && echo "Content or Metadata already exists." && return
        
            pkgutil --check-signature "$1" && xar -xf "$1" && "$PBZX" Content | sudo tar x --strip-components=1
        
            rm "Content" "Metadata"
        }
        

        我们首先检查xip 文件签名,然后使用xar 提取其内容。然后,我们使用 Jonathan Levin pbzx 正确解压缩 pbzx 块并将输出通过管道传输到 tar,跳过 . 以避免覆盖当前工作目录权限。

        这可以在 OS X El Capitan 上解压 Xcode8.xip 档案。

        【讨论】:

        • 从 CI 的角度来看这是不可取的,因为它需要在本地工具(/System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility)时安装第三方应用程序安装在系统上已经执行了工作。
        • @ablarg 从 CI 的角度来看:存档实用程序如何可行地集成到 shell 脚本中以实现自动化?可以写脚本吗?或者你有没有想过双击 XIP 存档?
        • @rexford 如果您只是从终端执行open -W archive.xip,它将启动 bomArchiveHelper 并解压缩当前目录中的 xip 并在解压缩完成之前一直阻塞。我一直使用它通过 Jenkins 中的 shell 调用打开 Xcode.xip。 -W 标志告诉 shell 在继续之前等待被调用的应用程序退出。
        • 赞成,但请参阅下文以获得更简单的解决方案:brew install thii/unxip/unxip 也可以正确解开 Xcode 档案,这与 Apple 工具不同。 (但它需要从源代码编译pbzx 工具,还需要构建一个自定义库......)
        猜你喜欢
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 2013-02-06
        • 2019-09-18
        • 2011-07-20
        • 2015-06-27
        相关资源
        最近更新 更多