このインストーラは Mac に何を入れた?
インストーラを実行してパスワードを入力すると、「インストールが完了しました。」と表示されます。でも、何がどこに入ったかは教えてくれません。
結論:.pkg インストーラはレシートを残します。ターミナルで pkgutil --pkgs を実行するとレシートが一覧表示され、pkgutil --files <package-id> でそのパッケージがインストールしたファイルがすべて表示されます。ディスクイメージ(.dmg)からドラッグしたアプリはレシートを残しません。追加されるものは最初に開いたときに現れ、ほとんどは ~/Library の中です。
インストーラのパッケージ ID を調べるには?
名前でレシートを検索します。
pkgutil --pkgs | grep -i zoom
または、新しいレシートから順に表示して、今日インストールされたものを探します。
ls -lt /var/db/receipts | head
レシートは、com.example.app.plist と .bom のように、パッケージ ID の名前が付いた 2 つのファイルの組です。1 つのインストーラが複数のパッケージを残すこともあります。
インストールされたファイルを一覧にするには?
pkgutil --pkg-info com.example.app
pkgutil --files com.example.app
1 つ目のコマンドは、バージョン、インストール先、インストール日時(1970 年からの秒数)を表示します。2 つ目のパスは、そのインストール先を起点にしています。location: / なら Library/LaunchDaemons/… は /Library/LaunchDaemons/… のことで、location: Library/Audio/Plug-Ins/HAL なら、パスは /Library/Audio/Plug-Ins/HAL の中です。フォルダを除くには --only-files を付けます。
バックグラウンドで動くものが追加された?
pkgutil --files com.example.app | grep -i launch
LaunchAgents や LaunchDaemons に入ったものは、自動で起動します。システム設定 ›「一般」›「ログイン項目と機能拡張」にも表示され、そこでオフにできます。PrivilegedHelperTools も探してください。そこにある補助プログラムは管理者権限で動きます。
pkgutil でパッケージをアンインストールできる?
できません。pkgutil --forget はレシートを消すだけで、ファイルはすべてそのまま残ります。開発元のアンインストーラがあれば、それを使います。ない場合は、上のファイル一覧がチェックリストになります。一覧にあるものをゴミ箱に移動してから、レシートを消します。
ディスクイメージや App Store から入れたアプリは?
- ディスクイメージから:アプリは最初の起動時にファイルを書き込みます。何が増えたかを見るには、フォルダを日付順に並べます。
ls -lt ~/Library/Application\ Support | headを実行し、~/Library/Caches、~/Library/Preferences、~/Library/LaunchAgentsでも同じようにします。 - App Store から:アプリはデータを専用のフォルダ
~/Library/Containers/<bundle ID>に保存し、~/Library/Group Containersにも保存することがあります。