可通过pkgutil --pkgs列出所有已注册pkg包id,结合--volume指定卷、lsbom解析bom文件查路径、mdfind扫描.app应用、brew list --cask和mas list补全homebrew与app store安装项,实现多源安装包统一排查。

如果您在Mac上通过多种方式(如.pkg安装器、App Store、Homebrew Cask、拖拽安装等)部署了软件,但无法统一确认哪些包已实际注册进系统,则可能是由于不同安装渠道各自维护独立的元数据存储。以下是查询当前系统所有安装包记录的多种方法:
一、使用pkgutil --pkgs列出全部已注册pkg包ID
pkgutil是macOS原生内置的安装包管理工具,专用于查询Installer安装流程生成的receipt数据库,其--pkgs选项可直接输出所有已成功注册的.pkg包唯一标识符(Package ID),该列表覆盖系统级与用户级pkg安装,权威性最高。
1、打开“终端”应用(可在“启动台→其他→终端”中找到)。
2、输入以下命令并按回车执行:pkgutil --pkgs。
3、终端将逐行列出全部pkg包ID,例如com.adobe.acrobat.pro、org.python.python3等。
4、如需筛选含特定关键词的包,可追加grep,例如查找Python相关包:pkgutil --pkgs | grep -i python。
二、指定卷宗范围扫描pkg安装记录
默认pkgutil仅检索启动卷(/),若曾对外置硬盘、Time Machine备份盘或非默认系统卷执行过pkg安装,则必须显式指定--volume参数,否则对应receipt条目将被遗漏。
1、确认目标卷挂载路径,例如外接硬盘名为“BackupDisk”,则其路径为/Volumes/BackupDisk。
2、执行命令:pkgutil --pkgs --volume /Volumes/BackupDisk。
3、注意:该命令仅对启用pkg receipt数据库的APFS/HFS+格式卷有效;exFAT或NTFS格式卷不支持pkg receipt写入,将无输出。
三、解析BOM文件获取pkg实际安装路径
仅获知Package ID无法定位文件位置,而每个pkg安装后会在/private/var/db/receipts/下生成对应的BOM(Bill of Materials)文件,lsbom命令可据此还原其完整安装路径结构,适用于审计残留文件或调试部署问题。
1、从第一步结果中选取一个pkg ID,例如com.microsoft.autoupdate。
2、执行命令确认BOM文件是否存在:ls /private/var/db/receipts/ | grep com.microsoft.autoupdate。
3、若返回com.microsoft.autoupdate.bom,则运行:lsbom /private/var/db/receipts/com.microsoft.autoupdate.bom。
4、输出中每一行代表一个被安装的绝对路径,例如/Applications/Microsoft AutoUpdate.app或/Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist。
四、结合mdfind深度扫描全系统.app应用包
mdfind利用Spotlight索引快速定位所有被识别为Application类型的文件包,可穿透/Applications、~/Applications、/Users/*/Applications等多级目录,适用于捕获未被pkgutil收录的手动拖拽安装应用。
1、在终端中执行:mdfind "kMDItemKind == 'Application'",获得所有.app包的完整路径。
2、如需提取精简名称并去重,执行:mdfind "kMDItemKind == 'Application'" | sed 's/\.app.*$/.app/' | sort -u。
3、若要导出至桌面文本文件,执行:mdfind "kMDItemKind == 'Application'" | sed 's/\.app.*$/.app/' | sort -u > ~/Desktop/app_names.txt。
五、调用Homebrew与App Store工具补全第三方来源
Homebrew Cask与App Store客户端各自维护独立安装日志,二者均不写入pkg receipt数据库,因此必须单独调用其原生命令提取,确保清单覆盖全部主流分发渠道。
1、检查是否已安装Homebrew,若已安装,执行:brew list --cask,列出所有Cask安装的GUI应用。
2、若已登录App Store,执行:mas list(需提前通过brew install mas安装mas工具),输出App Store购买/下载的应用及其版本号。
3、对于未安装mas的用户,可手动访问:~/Library/Application Support/AppStore/appstore.sqlite,用sqlite3查询ZDOWNLOADHISTORY表获取历史更新记录。











