1. 什么是 hdiutil?
hdiutil 是 macOS 自带的命令行工具,用于管理磁盘镜像(如 .dmg 文件)。通过它,可以挂载、卸载、转换或验证磁盘镜像,无需图形界面即可完成软件安装。
2. 安装步骤
步骤 1:下载 .dmg 文件
从官网获取软件的 .dmg 文件(如 Firefox):
cd ~/Downloads
curl -LO https://download.mozilla.org/?product=firefox-latest&os=osx&lang=zh-CN -o Firefox.dmg
步骤 2:挂载 .dmg 文件
hdiutil attach Firefox.dmg
输出示例:
/dev/disk2s1 /Volumes/Firefox
镜像挂载到 /Volumes/Firefox。
步骤 3:复制 .app 到应用目录
cp -R "/Volumes/Firefox/Firefox.app" ~/Applications/
无管理员权限时:安装到用户目录 ~/Applications(需提前创建):
mkdir -p ~/Applications
步骤 4:卸载 .dmg
hdiutil detach /Volumes/Firefox
步骤 5:运行软件
open ~/Applications/Firefox.app
首次运行:右键选择 打开 绕过 macOS 安全限制。
3. 完整脚本示例
#!/bin/zsh
# 下载 .dmg
curl -LO https://download.mozilla.org/?product=firefox-latest&os=osx&lang=zh-CN -o Firefox.dmg
# 挂载并安装
hdiutil attach Firefox.dmg
cp -R "/Volumes/Firefox/Firefox.app" ~/Applications/
hdiutil detach /Volumes/Firefox
# 清理
rm Firefox.dmg
echo "Firefox 已安装到 ~/Applications/"
4. 常见问题解决
问题 1:挂载失败(权限不足)
错误:hdiutil: attach failed - Permission denied
解决:确保 .dmg 文件在用户目录下(如 ~/Downloads),而非系统目录。
问题 2:无法卸载 .dmg
强制卸载:
hdiutil detach /Volumes/Firefox -force
问题 3:软件无法运行(“已损坏”)
解除隔离属性:
xattr -d com.apple.quarantine ~/Applications/Firefox.app
5. 高级技巧
静默挂载(无图形界面)
hdiutil attach -nobrowse Firefox.dmg
查看已挂载的镜像
hdiutil info
转换 .dmg 为 .iso
hdiutil convert Firefox.dmg -format UDTO -o Firefox.iso
6. 为什么推荐 hdiutil?
无图形界面依赖:适合远程服务器或自动化脚本。
精准控制:可集成到 CI/CD 流程中。
避免双击安装的权限问题:尤其适合无管理员权限的场景。
7. 总结
步骤命令示例下载 .dmgcurl -LO URL -o 软件名.dmg挂载镜像hdiutil attach 软件名.dmg复制 .appcp -R /Volumes/镜像名/软件.app ~/Apps/卸载镜像hdiutil detach /Volumes/镜像名运行软件open ~/Apps/软件名.app