可通过pkgutil --pkgs命令列出Mac上所有已安装的.pkg包ID,结合--volume指定卷、lsbom查看文件路径、plutil读取元数据、mdfind搜索receipt文件实现全面排查。

如果您在Mac上通过.pkg安装器安装了软件,但无法直观确认哪些包已成功部署,则可能是由于pkg安装后不生成图形化清单。以下是列出所有已安装pkg包的多种命令方法:
一、使用pkgutil --pkgs列出全部安装包ID
pkgutil是macOS原生工具,专用于查询系统中通过Installer安装的pkg包元数据,其--pkgs选项可直接输出所有已注册的包标识符(Package ID),这是最权威、覆盖最全的系统级清单来源。
1、打开“终端”应用(可在“启动台→其他→终端”中找到)。
2、输入以下命令并按回车执行:pkgutil --pkgs。
3、终端将逐行列出全部pkg包的唯一标识符,例如com.oracle.jdk8u201、com.picotech.picoscope6等。
4、如需筛选特定厂商或关键词,可结合grep使用,例如查找含“zoom”的包:pkgutil --pkgs | grep -i zoom。
二、使用pkgutil --pkgs --volume指定卷宗范围
默认pkgutil仅扫描启动卷(/),若曾对其他挂载卷(如外置硬盘或Time Machine备份盘)执行过pkg安装,则需显式指定--volume参数才能检索该卷上的pkg记录。
1、在终端中运行:pkgutil --pkgs --volume /(等同于默认行为,明确指定启动卷)。
2、若存在名为“DataDisk”的外接卷,且怀疑其上有pkg安装痕迹,则执行:pkgutil --pkgs --volume /Volumes/DataDisk。
3、注意:该命令仅对已启用pkg receipt数据库的卷有效;部分只读或非标准格式卷可能无响应。
三、结合lsbom查看pkg实际安装文件路径
仅获知Package ID不足以定位文件位置,lsbom命令可解析pkg安装时生成的BOM(Bill of Materials)文件,从而还原其在磁盘上的完整路径结构,适用于验证是否残留或定位配置文件。
1、先获取目标pkg的完整ID,例如通过第一步查得:com.tencent.qq。
2、执行命令查询其BOM文件路径:ls /private/var/db/receipts/ | grep com.tencent.qq,确认存在com.tencent.qq.bom文件。
3、运行lsbom命令展开内容:lsbom /private/var/db/receipts/com.tencent.qq.bom。
4、输出结果中每一行代表一个被安装的文件或目录,例如../QQ.app、./QQ.app/Contents/Resources/等。
四、通过plutil读取pkg安装元信息
每个pkg安装后会在/private/var/db/receipts/下生成对应的plist文件,其中包含安装时间、目标路径、安装进程名等关键元数据,适合审计安装行为或排查异常安装源。
1、进入receipts目录:cd /private/var/db/receipts/。
2、列出所有plist文件:ls *.plist。
3、查看某包详情,例如腾讯QQ:plutil -p com.tencent.qq.plist。
4、输出中重点关注InstallDate、InstallPrefixPath(如Applications/)、InstallProcessName(如appstoreagent或installer)字段。
五、使用mdfind全局搜索pkg相关receipt文件
当pkgutil --pkgs返回空或遗漏条目时,可能因receipt数据库损坏或权限限制导致,此时可绕过pkgutil,直接用Spotlight后端命令mdfind搜索磁盘上所有receipt文件,实现兜底检索。
1、在终端中执行:mdfind "kMDItemDisplayName == '*receipt*'wc" | head -n 20,快速预览receipt类文件分布。
2、精确匹配所有以.plist或.bom结尾的receipt文件:mdfind "kMDItemDisplayName == '*.plist' || kMDItemDisplayName == '*.bom'"。
3、对返回路径逐一检查,例如:file /private/var/db/receipts/com.apple.pkg.CoreAuthenticationMethods.bom,确认其为BOM格式。










