macOS安装程序以其快速和便捷性而闻名,但你可能不知道的是,它还内置了详细的日志记录功能,能够让你深入了解安装过程中究竟发生了什么。下面就是查看这些日志的方法。
macOS的安装文件通常被称为“包”,文件扩展名为.pkg
。当你在Mac上打开一个.pkg
文件来安装软件时,苹果的安装程序会执行一系列复杂的步骤来验证和安装软件。大多数.pkg
文件都包含一系列标准步骤:首先是验证包的完整性,然后解压并复制文件到目标驱动器,最后运行安装后的脚本,检查安装情况、设置文件权限,并进行清理工作。从用户的角度来看,整个过程似乎简单又迅速,但其实背后发生了许多事情。
幸运的是,安装程序会详细记录安装过程中的每一个细节。你可以轻松查看这些日志,甚至将它们保存为文本文件或打印出来。
安装程序是一个通用应用程序,用于运行.pkg
文件。大多数.pkg
文件并不包含安装程序本身,而是由macOS自带的安装程序应用程序(Installer.app
)读取并运行。Installer.app
位于启动磁盘的/System/Library/Core Services
路径下。目前macOS Sequoia 15.3的安装程序版本为6.2。
当你在Finder中双击一个.pkg
文件时,macOS会启动Installer.app
,并将.pkg
文件的路径传递给它以便读取。如果你想列出Mac上所有的.pkg
文件,可以按下键盘上的Command-F,将搜索条件设置为“种类是其他”,然后在右侧的搜索框中输入“安装程序”。
.pkg
文件实际上是macOS中的特殊文件夹,类似于大多数应用程序。它们也可以包含其他包。这同样适用于开发者构建的自定义安装程序,这些程序不会被Installer.app
运行。
苹果的Xcode应用程序就包含了四个这样的包。从Mac OS X 10.5 Leopard开始,苹果为开发者提供了创建扁平化安装包文件的能力。这些文件是单编码文件,而不是文件夹,但它们仍然具有.pkg
扩展名,并且由Installer.app
运行。扁平化文件包的一个特点是,用户无法通过Finder的“显示包内容”菜单项或终端应用程序打开.pkg
文件包并查看其内部内容。
如果.pkg
文件不是扁平化文件包,你可以在Finder中通过按住Control键点击它,然后从上下文菜单中选择“显示包内容”来打开.pkg
文件包并查看其内部内容。不过,需要注意的是,不要更改.pkg
文件包中的任何内容,因为许多.pkg
文件包含数字签名信息,这些信息必须与文件包的内容匹配。
安装完成后,通常用户会点击安装程序窗口中的关闭按钮。但如果用户没有点击关闭按钮,而是选择窗口菜单中的“安装程序日志”(Command-L),就会弹出一个日志窗口,显示安装过程中发生的所有文本内容。
日志的默认显示是仅显示错误。但如果你点击窗口顶部工具栏中的“仅显示错误”菜单项,还可以选择“显示错误和进度”或“显示所有日志”。选择“显示所有日志”后,日志窗口会显示安装程序在安装过程中运行的完整详细步骤,以及任何错误。日志窗口顶部还有一个搜索字段,可以用来搜索日志文本,同时还有一个保存和打印按钮。
保存功能特别有用,特别是当你需要从不同的.pkg
文件进行多次安装,并希望保留所有安装记录时。保存或打印每个日志后,你可以安全地退出安装程序。
安装程序日志中包含了许多有用的信息,例如安装的时间和日期、Mac的硬件和软件配置、用户名、安装目标路径、安装组件以及错误或警告。
每次安装完成后,macOS会在启动磁盘的/Library/Receipts
路径下的InstallHistory.plist
文件中追加一条简短记录。这是一个标准的XML文件,格式为属性列表(.plist),你可以使用任何文本编辑器或苹果的Xcode开发工具来阅读它。
InstallHistory.plist
文件中的每个项目都是一个XML字典,包含有关安装的一些基本信息,其中一个子项名为“packageIdentifiers”。这个数组列出了运行的所有安装程序的捆绑包ID。
可以将.plist
字典视为一组嵌套的XML数据,包含名称(键)和一组数据项(如字符串、数组、日期、数字或其他字典)。捆绑包ID是用于唯一标识macOS中的应用程序或.pkg
文件的文本。例如,“com.apple.installer”是macOS安装程序应用程序本身的捆绑包ID。每个捆绑包ID必须是唯一的,以避免应用程序和.pkg
文件之间的冲突。
如果你想查看macOS上的系统范围日志文件install.log
,它位于启动磁盘的/private/var/log
路径下。不过请注意,除非你最近刚刚进行了macOS的全新安装,否则该文件可能会非常庞大,甚至可能有数千甚至数万页。
你需要在Finder中显示隐藏文件才能查看/private/var/log
。你可以使用任何纯文本编辑器(包括苹果自带的TextEdit)来查看任何macOS.log
文件。大多数macOS日志文件都存储在这个文件夹或用户文件夹中的/Library/Logs
路径下。
你还可以通过运行启动磁盘上的/Applications/Utilities
文件夹中的macOS控制台应用程序来查看install.log
文件。控制台将所有系统日志集中在一个地方显示。要在控制台中查看install.log
,只需在侧边栏中选择“日志报告”,然后在右侧的文件窗格中双击install.log
。控制台还提供了清除日志和显示日志在启动磁盘上的存储位置的选项。
macOS还包含一个名为pkgutil
的命令行终端应用程序,这是一个通用的.pkg
工具。要在终端中查看选项和使用说明,可以输入以下命令:
man pkgutil
,然后按下回车键。要退出手册系统,可以按Control-Z或q键。你也可以在终端中输入pkgutil -h
来获取pkgutil
命令的列表。
pkgutil
提供了一些有趣的选项,可以查看Mac上的.pkg
文件信息。其中一些更有趣的选项包括:
— pkgs
(显示给定卷上所有已安装的包ID)
— files
(显示由指定包安装的文件)
— pkg-info
(显示有关包的元数据)
— forget
(丢弃指定包的收据数据)
— expand
(将扁平化的.pkg
文件扩展为文件夹)
— flatten
(与expand
相反)
— check-signature
(验证包的签名)
大多数.pkg
文件还包含一个bom(物料清单)文件,另一个命令行工具(lsbom
)允许你读取bom文件以列出.pkg
文件中的内容。
如果你愿意,可以定期删除/private/var/logs
中的某些日志文件,但不要删除任何被macOS锁定或正在使用的文件。macOS会定期通过压缩和删除旧日志文件来归档它们。这些日志文件会以.gz
或.bz2
文件的形式出现。
如果你不需要这些归档日志,可以删除它们。你也可以从控制台应用程序本身删除日志。在Finder和控制台中,你需要管理员密码才能删除受保护的日志。
请注意,当你从Mac上删除日志文件时,这些消息将永远消失,不再可用。如果你删除了macOS使用的系统日志,它会在需要将日志消息写入磁盘时自动重新创建一个新副本。删除日志后,最好重启Mac,以重置和刷新所有内容。
如果你需要保留某些日志文件以备后用,但又想从Mac上清除它们,请确保先备份这些日志文件。
如果你想要自己构建.pkg
安装程序,macOS提供了一个名为pkgbuild
的内置命令行工具。第三方工具Package Builder(售价25美元)来自Araelium,它可以帮助简化包的组装和构建过程。Stephane Sudre(斯蒂芬·苏德雷)提供了一个名为“Packages”的免费包构建器。你还可以查看CharlesSoft(查尔斯·索夫特)提供的酷炫的.pkg
检查工具Pacifist(售价20美元)。另一个非常实用的安装程序工具是来自Mother's Ruin(莫瑟斯·鲁恩)的Suspicious Package。这个工具可以在不运行macOS安装程序的情况下查看其内部内容,允许你验证包的签名、查看安装程序包含的内容以及安装程序将运行的脚本。
macOS的安装程序架构非常强大,事实上,它从2000年首次发布的Mac OS X开始就一直存在。实际上,.pkg
架构甚至可以追溯到macOS的前身——NeXTStep。