macOS安装包下载神器gibMacOS:官方目录解析、历史版本批量获取与离线启动盘制作
发布时间:2026/10/13 3:47:02 锦皓数字建站

如果你折腾过 macOS 的安装包一定有过这种经历打开 App Store 想找某个版本的 macOS翻半天只能看到最新系统想要历史版本、想要离线安装包、想在虚拟机里测一个特定的 build官方页面给你一层层跳转还得登录开发者账户体验谈不上顺。这个问题的解法其实一直存在只是没多少人知道——一个叫 gibMacOS 的开源脚本可以直接解析 Apple 官方分发目录里的安装包下载地址把 macOS 安装包从官方服务器“拉”到本地全程不需要打开 App Store也不需要额外的图形界面工具。这篇文章我会把我实际折腾 gibMacOS 的完整过程从环境准备、首次运行、选版本、下载到校验文件、做启动盘、转虚拟机镜像以及中间踩过的坑都一次性拆开讲清楚。适合三种人看IT 运维需要批量留底安装包虚拟机玩家想拿历史版本测试以及普通用户单纯想做个离线启动盘备用。难度不高有一条终端通路就够了。1. 为什么说 gibMacOS 是下载 macOS 安装包的实用方案1.1 官方渠道之外的第三种选择先说清楚一个概念gibMacOS 不是下载“第三方修改版系统”更不是破解工具。它是一个目录解析脚本做的事情非常单纯——把 Apple 官方软件更新服务里的 Catalog 文件抓下来解析成一份人类可读的版本列表然后给出每个版本对应的安装包下载地址。这些地址都指向官方服务器下载得到的文件与你在 App Store 点击“获取”拿到的安装程序完全一致。区别只在于官方界面只给你看“适合你的最新版”而 gibMacOS 把整个货架都搬到你面前老版本、新测试版、恢复固件全部列出来任你挑。这就解决了 App Store 模式的三个痛点历史版本不可选。App Store 通常只会展示与当前硬件和系统匹配的最新版本而运维场景经常需要固定在某一个 build 上。下载状态不可控。浏览器或者 App Store 下载一旦中断往往要重新开始对于十三四个 GB 的大包来说非常痛苦。多版本留存成本高。你想要三个不同版本的安装包就得在图形界面里反复折腾三次而 gibMacOS 可以一次性批量拉取。1.2 它怎么工作的给安装目录做一次“透明拆解”Apple 的软件更新服务会维护一个索引文件你可以把它理解成一份“发货单”所有可用的系统版本、对应文件、文件大小、哈希值全都记录在里面。gibMacOS 做的事情就是读取这份发货单把里面的内容整理成一个类似下面的清单macOS 15.0 (24A5279) - InstallAssistant.pkg macOS 14.6.1 (23G93) - InstallAssistant.pkg macOS 13.7.2 (22H110) - InstallAssistant.pkg macOS 12.7.6 (21H132) - InstallAssistant.pkg macOS 14.6.1 (23G93) - RecoveryOS (IPSW) ...每一行都对应一个真实可下载的官方文件。脚本本身不做任何数据修改所以它生成的链接可以直接扔给浏览器、curl、wget 或者 aria2 下载。整个逻辑有点像你查快递单号先通过脚本拿到“货在哪个仓库”的信息然后再自己去取件。这个设计最大的好处是组件化。gibMacOS 负责“找货”下载环节完全交给用户熟悉的工具你觉得 curl 顺手就用 curl觉得 aria2 快就用 aria2。正因为职责单一这个项目才能长期保持轻量也让我愿意把它放在工具箱里随时使用。2. 环境准备与首次运行让脚本在你的机器上跑起来2.1 环境要求与脚本获取gibMacOS 是基于 Python 3 的脚本对系统本身没有太苛刻的要求。你可以在 macOS 上直接运行也可以在一台 Linux 机器上运行下载文件的环节不受系统类型限制。我自己的使用场景主要是在 macOS 的终端里跑但下面的步骤在两个环境里基本通用。第一步是准备 Python 3 环境。macOS 自带的 python3 通常能用但如果你发现版本比较旧建议用第三方包管理工具装一个新版本避免脚本依赖的语法特性不兼容。第二步是获取脚本源码。用 Git 是最省事的git clone https://github.com/某个开源仓库/gibMacOS.git cd gibMacOS克隆完成后目录里最重要的就是gibMacOS.command这个入口脚本。如果你把它放在 Linux 上跑可能还需要先加执行权限chmod x gibMacOS.command2.2 运行脚本并读懂版本列表进入脚本目录后直接启动python3 gibMacOS.command或者./gibMacOS.command首次运行时脚本会从 Apple 官方目录中抓取最新的 Catalog 缓存这个过程可能需要一点时间。抓取完成后你会看到一个带编号的长列表像这样001: macOS 15.0 beta (24A5325) - 001-23456 002: macOS 15.0 (24A5279) - 001-34567 003: macOS 14.6.1 (23G93) - 001-78901 004: macOS 13.7.2 (22H110) - 002-45678 ...这里有几个信息值得关注版本号后面的括号里是 build 号比如23G93。同一个大版本可能有多个 build升级补丁往往就体现在这里。每一行末尾的001-23456是 Apple 内部的目录标识相当于这次发布的唯一编号下载链接本质上会包含这个编号。有些条目会标注InstallAssistant.pkg这才是完整的安装器包有些标注RecoveryOS或IPSW那是恢复固件不是同一个东西。实际运行中脚本会提示你输入要下载的版本序号。选好之后它有几种处理方式可以调用内置下载器直接下载也可以只把下载链接复制出来。我建议你选择“复制链接”而不是“直接下载”原因后面讲多线程下载时会提到。2.3 目录缓存文件脚本的核心资产运行过第一次之后你会发现脚本目录里多了一个类似macOS 14.6.1.dist的文件。这文件看着不起眼但它是整件事的关键——Catalog 缓存就存在这里面。之后脚本再运行默认可以直接读取这个缓存文件不一定每次都要重新联网抓取。我的习惯做法是每次需要大批量下载前先运行一次脚本让它刷新缓存因为这个.dist文件会过期。Apple 的目录内容不是一成不变的旧版本有时候会被下掉新的测试版会加进来。你拿着一个过期缓存去找链接可能看到 404。另外不同版本、不同分支的 gibMacOS 所以界面细节可能略有差异但核心交互原理是一致的选择编号、确认下载类型、拿到官方地址。如果你在旧脚本上遇到解析报错大概率是 Apple 目录结构有调整去项目主页拉最新代码就能解决。3. 完整实操三条下载路径自由切换3.1 路径 A下载完整安装器 InstallAssistant.pkg最常规的需求就是下载完整安装包。在 gibMacOS 的版本列表里找到标注InstallAssistant.pkg的那一行选择对应的编号。如果你选择把链接复制出来你会看到一个指向 Apple 官方服务器的 https 地址形如https://某个官方子域/dist/001-23456/InstallAssistant.pkg这个链接是可以直接在浏览器里打开的。不过我不推荐直接用浏览器下载主要有两个原因浏览器一旦断流就从头再来而且它不显示进度细节心里没底。我比较推荐的是把链接复制下来用命令行下载。最基础的方式curl -O https://某个官方子域/dist/001-23456/InstallAssistant.pkg-O参数让 curl 保持远程文件名保存。如果后续要继续操作加-C -支持断点续传方便中断之后重新接上。但十几 GB 的单个文件用单线程的 curl速度往往会受限于单连接的稳定性。我更常用 aria2 来做这件事它以同一个官方链接发起多段并行请求性能和断点续传都可靠得多aria2c -x 8 -s 8 -k 1M -d ~/Downloads https://某个官方子域/dist/001-23456/InstallAssistant.pkg参数说明-x 8表示每个服务器最多开启 8 个连接-s 8表示把文件拆成 8 段下载-k 1M表示每段块大小设为 1MB-d ~/Downloads指定保存目录实际经验是并发数控制在 8 就足够不建议开到 16 以上。开太多连接去拉同一个大文件反而可能导致服务端限制更多速度不增反降。3.2 路径 B批量留底多个版本与多个 build运维或测试场景里经常会遇到“我要把这几个版本都存下来”的需求。手动一个一个选太慢gibMacOS 支持把目录缓存文件直接当作参数喂给脚本配合 Linux/macOS 自带的文本处理工具可以快速筛选出你关心的版本。做法很简单。先用脚本刷新一次目录得到最新的.dist缓存文件然后用文本工具过滤grep -n macOS 14 macOS 14.6.1.distgrep会把你关心的版本所在行号列出来。记录这些行号之后再运行脚本时可以按要求输入多个序号或者通过脚本的批量参数一次性导入。这样得到的是一份定制化的下载清单然后你可以逐个把链接丢给 aria2 做队列下载。这里有一个容易忽略的细节一个大版本通常包含多个 build。例如 14.6.1 可能有23G93和23G94两种 build它们的目录标识是不一样的。如果你对版本号要得很精确一定要连 build 号一起看不要只看大版本。批量下载建议把每个版本的校验信息也跟着一起留档建议存成一个文本文件内容简单点就好macOS 14.6.1 (23G93) - 001-78901 SHA-256: ......以后要用的时候不用重新算哈希直接拿文本里的值比对新下载的文件省不少时间。3.3 路径 C下载恢复固件 IPSW另一类常见需求是下载恢复固件也就是列表里标注IPSW的那个条目。用途包括给无法启动的 Mac 刷机、把设备重置到出厂状态、在虚拟化管理工具里直接使用恢复镜像。和 InstallAssistant.pkg 不同IPSW 是完整固件体积同样不小下载之后不需要“安装”而是直接作为恢复映像使用。在 gibMacOS 的列表里IPSW 条目通常会单独列出来和 InstallAssistant 版本分开显示。选择时不要混淆如果你想装系统找InstallAssistant.pkg如果你想恢复设备或做镜像找IPSW。IPSW 下载后同样建议做校验。不过这里要特别注意不同版本的哈希算法可能不同。老版本给的是 MD5新版本通常给 SHA-256。最好以脚本目录缓存里记录到的哈希值为准不要想当然。IPSW 的后续使用已经超出“下载安装包”这个主题太多后面有机会单独展开。这里只强调一点下载时要预留足够空间IPSW 解压还原的过程还会产生额外数据建议磁盘剩余空间至少是固件本身体积的两倍。4. 下载之后的收尾校验、启动盘与虚拟机镜像4.1 校验安装包的完整性这是一步建议认真做的工作。你可以把下载环节省略但校验环节不应该省略。原因很简单一个 13GB 的安装包传输过程中任何一段出错安装阶段可能到一半才报“无法验证安装器”届时你已经在系统恢复环境里折腾了半小时。安装包下载完成后如果保存的是InstallAssistant.pkg你可以直接用系统自带工具计算哈希shasum -a 256 InstallAssistant.pkg然后把输出结果和目录缓存里记录的哈希值比对。传统习惯是使用md5命令但现在的安装包越来越多使用 SHA-256所以我会优先shasum -a 256。还有一种是已解包成.app的情况。比如说你从别人那里拿到一个Install macOS 14.app它本体实际是一个应用程序包里面关键文件是Contents/SharedSupport/InstallAssistant.pkg。校验的时候要深入到 app 包内部shasum -a 256 /Applications/Install macOS 14.app/Contents/SharedSupport/InstallAssistant.pkg因为你在 App Store 下载时校验的对象也是这个 pkg 文件所以这样比对才有意义。4.2 把安装器制作成可启动 U 盘下载下来的安装器最终用途通常是做启动盘。macOS 系统自带createinstallmedia工具它就藏在安装器 app 内部。假设你下载的安装器还叫Install macOS 14.app做法如下。第一步准备一个至少 16GB 的 U 盘用磁盘工具抹成Mac OS 扩展日志式卷名建议设成类似MyVolume这样没有空格的名称。其实空格的卷名也能处理但加引号很麻烦没必要给自己添乱。第二步运行sudo /Applications/Install macOS 14.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --nointeraction这里有两件事要注意--nointeraction表示全程免交互抹盘前不会停下来问你确认。使用前务必确认卷名选对了别手滑指向系统盘。执行过程会把 U 盘完全抹掉所以切记U 盘里如果有数据提前转移。制作过程通常需要 10 到 30 分钟取决于 U 盘速度。结束后你会得到一个具备引导功能的安装盘可以用来在多数受支持的 Mac 上直接重装系统。4.3 二次加工成虚拟机可用的镜像如果你和我一样经常把不同版本的 macOS 放进虚拟机里测试那么除了做 U 盘还有一个更顺手的处理方式把下载好的 installer 转成虚拟机可引导的镜像文件。macOS 自带hdiutil工具可以把一个 macOS 安装器制作成 CDR 镜像hdiutil create -format UDTO -volname macOS 14 -srcfolder /Applications/Install macOS 14.app/Contents/SharedSupport -o ~/Desktop/macOS14.cdr生成的文件格式再改用.iso后缀部分虚拟机平台直接认这个镜像有些平台不认这时可以再用平台自己的镜像工具转换一次。这个方法的好处在于你不用保留一台实体 U 盘镜像文件放在 NAS 或者移动硬盘里想测哪个版本就挂载哪个版本。需要提醒的是在虚拟机里使用这些安装包时和实体机一样会遇到兼容性和引导方式的问题这部分属于虚拟化平台的配置范畴。下载环节本身没有问题重点是把文件保持干净、校验完整。5. 常见问题速查与避坑清单5.1 问题排查速查表现象可能原因处理办法脚本启动报 Python 语法错误本机 Python 版本过旧安装新版 Python 3 后重试运行脚本时提示缺少模块分支版本依赖未装全查看下载页说明安装对应依赖版本列表不刷新Catalog 缓存文件过期重新运行脚本强制刷新目录下载到一半断掉网络波动或单连接中断改用 aria2 并开启断点续传链接 404旧版本已被官方下架换相邻版本或刷新目录看最新状态选错成 RecoveryOS 小包混淆了安装器与恢复固件需要安装器就找标有 InstallAssistant.pkg 的条目校验值不符下载文件损坏不要继续使用删除后重新下载再校验磁盘空间不足安装包大于剩余空间用df -h查看磁盘清理出足够余量5.2 实操心得与三项避坑建议写一点个人体会。第一次用 gibMacOS 的时候最容易踩的坑是“选错条目”。我当时想下载完整安装包却盯着一个 RecoveryOS 条目下载了十几分钟下来的文件根本不能直接做安装器。后来我给自己定了一条规则列表里优先找带InstallAssistant.pkg字样且体积在 12GB 上下的条目其他一律不碰。第二点体会是版本括号里的 build 号值得多看一眼。你以为是同一个系统版本实际上企业环境里经常要求精确到 build。做批量留存的时候不要只按版本号区分最好连 build 一起写进文件名比如macOS14.6.1-23G93-InstallAssistant.pkg这样归档更清楚以后查找不会撞到同名文件。第三点是关于下载工具的选择。虽然内置下载器能用但它本质是一个基础下载进程。局域网环境或者官方服务器状态良好时没问题可一旦遇到大文件中断内置方案不一定有漂亮的恢复机制。所以我现在养成一个习惯不管在哪个系统上运行 gibMacOS 之后不急着下载先把链接复制出来统一交给 aria2 处理。断点续传、连接数控制、下载目录管理这些在同一个工具里搞定连续下载多个版本也方便统一管理。最后再分享一个小技巧。如果你只是临时想在虚拟机里体验某个测试版本不一定要先下载 13GB 的完整 InstallAssistant 再转镜像。目录列表里的 IPSW 恢复固件在部分虚拟化工具里可以直接被识别为启动盘体积往往更小。先看清自己的使用场景再决定下载哪一类文件能省下不少时间和磁盘空间。整个 gibMacOS 的流程跑熟之后你会发现它本质上就是“解析官方目录 搬链接 下载工具”的三步组合。真正提高效率的不是某个神秘脚本而是你对“下载哪些文件、如何校验、怎么存储”这件事有清晰的判别标准。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。