macOS 安装程序使用起来既快速又简单,但您可以通过查看其内置日志来了解有关安装过程中发生的情况的更多信息。以下是如何查看它们。
macOS 安装程序文件称为 Packages,通常具有 .pkg 的文件扩展名。当您在 Mac 上打开 .pkg 安装软件时,Apple 的安装程序应用程序会执行一系列复杂的步骤来验证和安装软件。
大多数 .pkg 文件都包含一系列标准步骤,在这些步骤中,首先验证包,然后解压缩有效负载并将其复制到目标驱动器。
最后,运行安装后脚本以检查安装、设置文件权限并执行任何安装后清理。
从 GUI 来看,这一切看起来都是一个简单而快速的过程。但是,在幕后,发生了很多事情。
幸运的是,安装程序会详细记录安装过程中发生的情况。查看此日志、将其保存到文本文件或打印它很容易。
Installer 是一个通用应用程序,可运行 .pkg 个文件
大多数 .pkg 文件实际上并不包含安装程序应用程序,而是由 macOS 的安装程序应用程序 (Installer.app) 读取和运行,该应用程序位于启动磁盘上,位于 /System/Library/Core Services。当前的 macOS Sequoia 15.3 安装程序应用程序版本为 6.2。
当您在 Finder 中双击 .pkg 文件时,macOS 会启动安装程序应用程序,然后将.pkg的文件路径传递给它,以便可以读取它。
要获取 Mac 上所有.pkg文件的列表,请按键盘上的 Command + F,然后将搜索词设置为“种类为其他”,然后在右侧的搜索字段中输入“安装器”。
.pkg 文件是 Bundles,即 macOS 中的特殊文件夹 - 就像大多数应用程序一样。.pkg 捆绑包也可以包含其他包。
由开发人员构建的自定义安装程序也是如此,这些安装程序不会由 Installer.app 运行。
Apple 的 Xcode 应用程序中捆绑了四个软件包
从 Mac OS X 10.5 Leopard 开始,Apple 为开发人员提供了创建平面安装程序包文件的功能。它们是单一编码的文件,而不是捆绑包文件夹,但它们仍然具有 .pkg 的文件扩展名,并由 Installer.app 运行。
平面文件包会阻止用户打开 .pkg 捆绑包并使用 Finder 的“显示包内容”上下文菜单项或终端应用程序查看内部。
无论哪种方式,当打开时,Installer.app 都会运行 .pkg 并执行它在其中找到的内容。
如果 .pkg 不是平面文件包,您可以在 Finder 中按住 Control 键单击它,然后从上下文菜单中选择 Show Package Contents 项以打开 .pkg 包并查看其中的内容。
不要更改 .pkg 中的任何内容,因为许多 .pkgs 包含数字签名信息,这些信息必须与 .pkg 的内容相匹配。
安装后查看安装程序日志
典型的 .pkg 安装将打开一个标准 Installer.app 窗口,其中显示安装进度,包括安装过程中的步骤和消息。当安装完成或失败时,安装程序将显示结果和一条消息,例如“安装成功”。
此时,用户通常会单击安装程序窗口中的 Close 按钮。
Installer.app 安装完成后
如果用户选择“窗口”菜单,而不是单击“关闭”按钮,则标题为“安装程序日志 (Command + L)”的菜单项可用。选择 Installer Log (安装程序日志) 会提示 Installer.app 打开一个日志窗口,该窗口显示安装过程中所发生情况的全文。
日志中的默认显示是显示 Show Errors Only (仅显示错误)。但是,如果单击窗口顶部工具栏中的 Show Errors Only 菜单项,则还可以选择 Show Errors and Progress 或 Show All Logs。
选择“Show All Logs(显示所有日志)”以查看安装过程中发生的所有事情
选择 Show All Logs (显示所有日志) 会更改日志窗口的文本,以显示安装程序在安装过程中运行的完整详细步骤以及任何错误。日志窗口顶部还有一个 Search 字段用于搜索日志文本,还有一个 Save and Print 按钮。
如果要从不同的 .pkg 文件进行多次安装,并希望保留所有安装的记录,则 Save 特别有用。
保存或打印每个日志后,您可以安全地退出安装程序。
安装程序日志显示许多有用的信息,包括:
- 安装时间和日期
- Mac 硬件和软件配置
- 用户名
- 安装目标路径
- 安装组件
- 错误或警告
- 更多
安装人员收据
每次安装后,macOS 都会将一条简短记录附加到启动磁盘上名为“InstallHistory.plist”的文件中,该文件位于“/资源库/Receipts”中。这是一个属性列表 (.plist) 格式的标准 XML 文件,您可以使用任何文本编辑器或 Apple 的 Xcode 开发人员应用程序读取。
InstallHistory.plist 文件中的每个项都是一个 XML 字典,其中包含有关所执行安装的少量信息 - 其中一个子项名为“packageIdentifiers”。此数组包含已运行安装程序的所有捆绑 ID 的列表。
将 .plist 字典视为一组嵌套的 XML 数据,其中包含名称(键)和一组数据项(例如字符串、数组、日期、数字或其他字典)。
捆绑 ID 只是向 macOS 唯一标识应用程序或.pkg的文本。例如,“com.apple.installer” 是 macOS 安装程序应用程序本身的捆绑 ID。每个 bundle ID 必须是唯一的,以避免 app 和 .pkg 冲突。
install.log
如果要在 macOS 上查看系统范围的日志文件 (install.log),它位于启动磁盘的 /private/var/log 中。但要注意:除非您最近刚刚完成了 macOS 的全新安装,否则文件可能会很大 - 例如数千甚至数万个页面。
您需要在 Finder 中显示不可见的文件才能查看 /private/var/log。您可以使用任何纯文本编辑器(包括 Apple 提供的 TextEdit)查看任何 macOS .log 文件。
大多数 macOS 日志文件都位于此文件夹或用户文件夹的 /Library/Logs 中。
您还可以通过运行启动盘上 /Applications/Utilities 文件夹中的 macOS 控制台应用程序来查看 install.log 文件。Console 将所有系统日志显示在一个集中位置。
要在 Console 中查看install.log,只需在侧边栏中选择 Log Reports(日志报告),然后双击右侧文件窗格中的 install.log 即可。还有一些选项可用于清除日志,并显示它们在启动磁盘上的位置。
pkgutil
macOS 还包括一个名为 的命令行终端应用程序,这是一个通用的 .pkg 实用程序。要查看使用选项和使用说明,请在 Terminal type (终端类型) 中:
man pkgutil,然后按键盘上的 Return 键。要退出手动系统,请按 Control-Z 或 q。您还可以在终端中键入 pkgutil -h 以获取命令列表。
pkgutil 有一些很酷的选项,可让您在 Mac 上查看有关 .pkgs 的信息。一些更有趣的选项是:
- — pkgs(显示给定卷上所有已安装的软件包 ID)
- — files (显示由指定包安装的文件)
- — pkg-info(显示有关软件包的元数据)
- — forget (丢弃指定包的收据数据)
- — 展开(将平面.pkg展开到文件夹)
- — 展平(展开的反面)
- — check-signature (验证包的签名)
大多数 .pkgs 还包含一个 bom(物料清单)文件 - 另一个命令行工具 () 允许您读取 bom 以列出.pkg中的内容。
删除日志
如果您愿意,您可以不时删除 /private/var/logs 中包含的某些日志。只是不要删除 macOS 锁定或正在使用的任何内容。
macOS 会定期通过压缩和删除旧日志来存档它们。这些日志文件将显示为 .gz 或 .bz2 文件。
如果您不需要这些存档日志,可以将其删除。
您还可以从 Console 应用程序本身中删除日志。在 Finder 和 Console 中,您都需要管理员密码才能删除受保护的日志。
请记住,当您从 Mac 中删除日志文件时,这些消息将永远消失,不再可用。
如果您删除了 macOS 使用的系统日志,它将在需要将日志消息写入磁盘时自动重新创建新副本。最好在删除日志后重新启动 Mac 以重置和刷新所有内容。
如果您确实需要保留一些日志文件以备后用,但又想从 Mac 中清除它们,请务必先备份日志文件。
安装程序实用程序
如果您想构建自己的 .pkg 安装程序,macOS 有一个名为 的内置命令行工具。来自 Araelium 的第三方实用程序 Package Builder(25 美元)有助于简化包组装和构建。
Stephane Sudre 有一个免费的包构建器,简称为 Packages。
还可以查看 CharlesSoft 的酷炫.pkg检查器工具 Pacifist(20 美元)。
另一个很棒的小安装程序实用程序是来自 Mother's Ruin 的 Suspicious Package。此实用程序允许您在不运行 macOS 安装程序的情况下查看它们 - 允许您验证包签名、查看安装程序包含的内容以及查看安装程序将运行哪些脚本。
macOS 安装程序架构非常健壮,实际上可以追溯到 2000 年 Mac OS X 的第一个版本。实际上,.pkg架构可以追溯到 macOS 的前身 NeXTStep。
在以后的文章中,我们将介绍常见的 macOS 安装程序错误,并讨论如何构建 macOS 安装程序包以及其中包含哪些内容。