# Per .pkg-Paket installierte Mac-Apps deinstallieren

> Ein .pkg-Installationsprogramm hinterlässt einen Beleg und Dateien außerhalb der App. Lesen Sie den Beleg mit pkgutil, entfernen Sie nur, was zu diesem Produkt gehört, und vergessen Sie den Beleg zuletzt.

Published: 2026-09-06 | Updated: 2026-09-26

Eine App, die als `.pkg`-Installationsprogramm kam, ist nicht dasselbe wie eine App, die Sie aus einem Disk-Image gezogen haben. Das Installationsprogramm lief als root, konnte überall hinschreiben, wohin das Paket es anwies, und hat in der Belegdatenbank des Installationsprogramms festgehalten, was es installiert hat. Ziehen Sie die App in den Papierkorb, verschwindet ein Ordner aus dieser Aufzeichnung, und der Rest bleibt, einschließlich der Aufzeichnung selbst. Um diesen Fall geht es hier: wie Sie erkennen, dass ein Paket die App installiert hat, wie Sie lesen, was es auf der Festplatte abgelegt hat, was weg kann und was bleiben sollte. Verweigert der Finder das Löschen ganz oder kommt die App nach dem Löschen zurück, beginnen Sie stattdessen mit [wenn sich eine Mac-App nicht deinstallieren lässt](https://mole.fit/de/blog/mac-app-wont-uninstall), und für eine App, die Sie selbst hineingezogen haben, beschreibt [die vollständige Anleitung zum Deinstallieren](https://mole.fit/de/blog/how-to-completely-uninstall-apps-on-mac) den üblichen Weg.

## Warum der Papierkorb nicht reicht

Ein Paket kann Dateien neben die App legen, nicht nur hinein. Als ich Apps über ihre offiziellen Installationsprogramme erneut installiert und wieder deinstalliert habe, hinterließ das offizielle Zoom-Paket drei launchd-Jobs und ein privilegiertes Hilfsprogramm, `us.zoom.ZoomDaemon`, außerhalb von `zoom.us.app`. Das Installationsprogramm von Logi Options+ installierte außerdem ein zweites Produkt, LogiRightSight, mit eigenem Beleg und eigenem LaunchAgent. DisplayLink Manager fügte `/Library/LaunchAgents` einen LaunchAgent hinzu. Microsoft Office installiert ein Paket mit gemeinsamen Frameworks, das Word, Excel und PowerPoint alle laden, und Microsoft AutoUpdate sowie ein Lizenzierungshilfsprogramm kommen mit. Nichts davon bewegt sich, wenn das App-Paket verschoben wird.

Auch der Beleg bewegt sich nicht. Er liegt in der eigenen Datenbank des Installationsprogramms, getrennt von den Dateien, die er beschreibt, sodass `pkgutil` das Paket nach dem Entfernen der App weiterhin als installiert meldet. Nach einem sauberen Durchlauf des offiziellen Deinstallationsprogramms von DisplayLink waren seine beiden Belege noch da.

Eine Passwortabfrage im Finder ist das andere Zeichen dafür, dass Sie es mit einem Paket zu tun haben. Das Installationsprogramm lief als root, also gehört das zurückgelassene App-Paket root, und das Verschieben verlangt eine Authentifizierung. Das ist normal und wird in [der Anleitung zur Fehlerbehebung beim Deinstallieren](https://mole.fit/de/blog/mac-app-wont-uninstall) behandelt.

## Prüfen, ob ein Paket sie installiert hat

Beginnen Sie mit der Liste der Belege und dem Pfad der App selbst:

```sh
pkgutil --pkgs | grep -i zoom
pkgutil --file-info /Applications/zoom.us.app
```

`pkgutil --pkgs` listet jede Paket-ID auf, die das Installationsprogramm auf dem Startvolume erfasst hat. Suchen Sie nach dem Hersteller und dem Produktnamen, nicht nur nach der Bundle-ID der App, denn die beiden haben oft nichts gemeinsam. Die App von Zoom ist `us.zoom.xos`, ihr Beleg ist `us.zoom.pkg.videomeeting`. Der Beleg, der Cookie.app installiert, ist `app.fantasticthing.Bookkeeping`. Sogar die Groß- und Kleinschreibung kann abweichen: Die Bundle-ID von 爱思助手 ist `cn.i4Tools.mac`, sein Beleg ist `cn.i4tools.mac`, und `pkgutil` vergleicht IDs exakt, sodass die Schreibweise mit Großbuchstaben „No receipt“ antwortet, obwohl der Beleg direkt daneben liegt. Kopieren Sie die ID aus der Ausgabe von `--pkgs`, statt sie abzutippen.

`pkgutil --file-info` soll eigentlich das Paket nennen, das einen Pfad installiert hat, in `pkgid:`-Zeilen unter dem Pfad. Lesen Sie eine fehlende Antwort nicht als „nicht aus einem Paket“. Unter macOS 27 gab es bei mir für die meisten Pfade nur `volume` und `path` aus, gelöscht oder vorhanden; die App von DisplayLink Manager bekam diese leere Antwort, während ihre beiden Belege noch auf dem Mac lagen. Ein Beleg beweist auch nicht, dass Sie selbst eine `.pkg` ausgeführt haben: Der Mac App Store hinterlässt für manche Apps einen, etwa `com.apple.pkg.TestFlight`.

## Was ein Beleg festhält

Zwei Befehle zeigen, was ein Paket installiert hat und wo:

```sh
pkgutil --pkg-info us.zoom.pkg.videomeeting
pkgutil --files us.zoom.pkg.videomeeting
```

`--pkg-info` gibt Paket-ID, Version, `volume`, `location` und Installationszeit aus. `--files` gibt Pfade relativ zu diesem Volume und diesem Ort aus, der echte Pfad ergibt sich also aus allen dreien zusammen. Ein Beleg mit dem Ort `Applications` listet `Foo.app/Contents/...` auf; einer mit leerem Ort listet stattdessen `Applications/Foo.app/...` auf. Lesen Sie den Ort, bevor Sie die Liste lesen, sonst ist jeder Pfad falsch, den Sie nachschlagen.

Die Liste enthält Verzeichnisse ebenso wie Dateien. `--only-files` und `--only-dirs` trennen beides, was nützlich ist, sobald Sie sehen, dass ein Beleg `Library` und `Library/LaunchAgents` selbst aufführen kann. Die Rohdaten liegen in `/private/var/db/receipts`, je Paket eine `.bom` und eine `.plist`, aber laut Handbuch von `pkgutil` kann sich der Ort der Belegdateien ändern, und man soll sie immer über `pkgutil` abfragen.

## Ein Beleg ist eine Karte, keine Löschliste

Es ist verlockend, `pkgutil --files` in eine Schleife zu geben und alles zu entfernen. Genau so macht eine Paketdeinstallation etwas anderes kaputt. Die Liste sagt, was dieses Paket geschrieben hat, nicht, was nur dieses Paket nutzt:

| Was die Liste enthält | Warum Sie es nicht einfach löschen können |
| --- | --- |
| Verzeichnisse wie `Applications`, `Library`, `Library/LaunchAgents` | Das Paket hat sie angelegt oder berührt, aber jede andere App auf dem Mac nutzt sie auch |
| Frameworks und Hilfsprogramme, die ein Hersteller über mehrere Apps hinweg teilt | Word, Excel und PowerPoint laden alle die gemeinsamen Office-Frameworks und stürzen ohne sie beim Start ab |
| Inhalte, die mehrere Apps teilen | GarageBand, Logic Pro, MainStage und Final Cut Pro teilen `/Library/Application Support/GarageBand`, `/Library/Application Support/Logic` und `/Library/Audio/Apple Loops`, erfasst unter den Belegen `com.apple.pkg.MAContent10_*` |
| Ein weiteres Produkt, das dasselbe Installationsprogramm mitgebracht hat | LogiRightSight kam mit Logi Options+ und funktioniert auch für sich allein weiter |
| Plists von LaunchAgents und LaunchDaemons | Ein geladener Job muss gestoppt werden, bevor seine plist verschwindet, sonst behält launchd einen Job ohne etwas auf der Festplatte dahinter |

Die Liste übersieht auch etwas. Sie hält fest, was die Nutzlast des Pakets auf der Festplatte abgelegt hat. Installationsskripte können mehr tun, und Pakete bringen sie mit: Das von Foxit etwa hat ein Postinstall-Skript und einen Aktualisierungsdienst. Die App schreibt ihre eigenen Daten unter Ihre Benutzer-Library, sobald sie läuft, und nichts davon steht in einem Beleg. Für diese Seite nutzen Sie [Reste nach einer Deinstallation finden](https://mole.fit/de/blog/how-to-remove-leftover-files-after-uninstalling-mac-apps).

## Zuerst das Deinstallationsprogramm des Herstellers ausführen

Apples [Hinweise zum Löschen von Apps](https://support.apple.com/102610) sind hier eindeutig: Enthält eine App ein Deinstallationsprogramm, ist dies „die beste Möglichkeit, die App und alle Anmeldeobjekte, Erweiterungen oder anderen Daten zu löschen, die die App möglicherweise an anderen Orten gespeichert hat“. Per Paket installierte Software bringt oft eines mit, weil der Hersteller seine eigenen Skripte, Hilfsprogramme und gemeinsamen Teile kennt. Sehen Sie im Disk-Image nach, aus dem das Paket kam, im Ordner der App unter Programme, in `/Applications/Utilities`, in den Menüs der App selbst und auf der Support-Website des Herstellers. Splashtop Personal etwa legt sein Deinstallationsprogramm in dasselbe Disk-Image wie das Paket.

Haben Sie die App schon in den Papierkorb gezogen, holen Sie sie mit **Ablage › Zurücklegen** zurück, öffnen sie und starten von dort ihr Deinstallationsprogramm. Bei Sicherheitssoftware, VPN-Clients und Treibern ist das Werkzeug des Herstellers nicht optional: Erweiterungen und Netzwerkfilter lassen sich nur über die App entfernen, der sie gehören, wie [Antivirenprogramme auf dem Mac deinstallieren](https://mole.fit/de/blog/how-to-uninstall-antivirus-mac) beschreibt.

## Von Hand entfernen

Gibt es kein Deinstallationsprogramm, sagt Ihnen der Beleg, wo Sie suchen müssen. Arbeiten Sie ihn in dieser Reihenfolge ab:

1. Beenden Sie die App und alles, was sie im Hintergrund ausführt.
2. Lesen Sie mit `--pkg-info` den Ort, dann mit `--files` die Liste, und notieren Sie die Pfade außerhalb des App-Pakets.
3. Entladen Sie für jeden LaunchAgent oder LaunchDaemon in der Liste den Job mit `launchctl bootout`, bevor Sie seine plist verschieben. [Der launchd-Abschnitt der Anleitung zur Fehlerbehebung](https://mole.fit/de/blog/mac-app-wont-uninstall) erklärt, warum die Reihenfolge zählt.
4. Legen Sie nur in den Papierkorb, was eindeutig zu diesem Produkt gehört: das App-Paket, Ordner und plists, die nach seiner Bundle-ID oder seinem Produkt benannt sind, sein Hilfsprogramm in `/Library/PrivilegedHelperTools`. Lassen Sie gemeinsame übergeordnete Ordner und alles, was andere Apps des Herstellers noch nutzen, stehen. `pkgutil --pkgs | grep -i vendorname` zeigt, ob noch andere Pakete desselben Herstellers installiert sind; wenn ja, bleiben ihre gemeinsamen Frameworks.
5. Vergessen Sie den Beleg zuletzt, sobald nichts mehr übrig ist, was er auflistet:

```sh
sudo pkgutil --forget com.vendor.pkg
```

`--forget` verwirft den Beleg und lässt, so das Handbuch, die installierten Dateien unangetastet. Wer es zuerst ausführt, lässt jede Datei stehen, ohne dass noch eine Aufzeichnung auf sie verweist, und macht den Rest der Arbeit damit schwerer. Es braucht `sudo`, weil `/private/var/db/receipts` root gehört, und es braucht die ID genau so, wie `--pkgs` sie schreibt. Ein veralteter Beleg enthält keine Benutzerdaten; sind Sie unsicher, ob etwas darin noch genutzt wird, kostet es nichts, den Beleg stehen zu lassen.

## Das Ergebnis prüfen

Diese Befehle lesen nur. Ersetzen Sie `com.vendor.pkg` und `vendorname` durch das, was Sie oben gefunden haben:

```sh
id=com.vendor.pkg
loc=$(pkgutil --pkg-info "$id" | sed -n 's/^location: //p')
pkgutil --files "$id" --only-files | while IFS= read -r f; do
  p="/${loc:+$loc/}$f"
  [ -e "$p" ] && echo "$p"
done
pkgutil --pkgs | grep -i vendorname
ls /Library/LaunchAgents /Library/LaunchDaemons /Library/PrivilegedHelperTools | grep -i vendorname
launchctl list | grep -i vendorname
launchctl print system | grep -i vendorname
```

Die Schleife gibt jede Datei aus dem Beleg, die noch existiert, mit vollständigem Pfad aus. Keine Ausgabe bedeutet, dass die Nutzlast weg ist und der Beleg bedenkenlos vergessen werden kann. Ausgabe innerhalb des App-Pakets bedeutet, dass die App noch installiert ist; Ausgabe an anderer Stelle ist das, was beim Entfernen übersehen wurde, oder das, was Sie behalten wollten, weil eine andere App es teilt. Antwortet `pkgutil` mit „No receipt for ... found“, ist der Beleg schon vergessen oder die ID anders geschrieben. Die Zeilen mit `ls` und `launchctl` fangen Hilfsprogramme ab, die der Beleg nie aufgeführt hat. `launchctl list` zeigt Ihre eigenen Agents, `launchctl print system` die Daemons. Jede Zeile aus einem der beiden bedeutet, dass der Job noch geladen ist, und eine Zahl ungleich null in der ersten Spalte heißt, dass er gerade läuft.

## So geht Mole mit per pkg installierten Apps um

Wenn Sie in [Mole](https://mole.fit/de/) eine App entfernen, liest es die Belege, deren Namen zur Bundle-ID oder zum Produktnamen der App passen, und führt die Pfade daraus auf, die noch existieren, aber nur innerhalb eines engen Rahmens: das App-Paket unter Programme und unter `/Library` nur die Ordner Application Support, Caches, Logs, PrivilegedHelperTools, WebKit und HTTPStorages sowie plists in Preferences, LaunchAgents und LaunchDaemons, die genau nach dieser Bundle-ID benannt sind. Diese Zeilen kommen ohne Haken an, Sie haken also jede an, nachdem Sie sie gelesen haben. Pfade unter `/Users`, `/opt`, `/usr` und `/private` werden aus einem Beleg nie zu Zeilen, und die Belegdateien selbst auch nicht.

Ist die App weg, vergisst Mole den Beleg, der nach ihrer Bundle-ID benannt ist, in der Schreibweise, die `pkgutil` auf der Festplatte hat, und einen Herstellerbeleg, den es über `pkgutil --file-info` findet, Letzteren nur, wenn keine der Dateien, die dieser Beleg auflistet, mehr existiert. Das geschieht nur, wenn das Administratorhilfsprogramm für diese Entfernung bereits autorisiert war, sodass nie eine zusätzliche Passwortabfrage für einen Beleg erscheint. Bei der Suche nach Herstellerbelegen überspringt Mole Apples Belege `com.apple.*`.

Die Grenze ist die oben beschriebene. Weil `pkgutil --file-info` unter macOS 27 selten antwortet, kann ein Beleg, dessen ID nichts mit der App zu tun hat, bleiben, nachdem Mole die App entfernt hat, so wie die beiden von DisplayLink und der von Zoom. Sie sind nur Aufzeichnungen, und `sudo pkgutil --forget` räumt sie ab. Bei Treibern, VPN-Clients und Sicherheitssoftware ersetzt Mole nicht das Deinstallationsprogramm des Herstellers.

## Häufige Fragen

### Deinstalliert pkgutil --forget die App?

Nein. Laut Handbuch verwirft es alle Belegdaten des Pakets, lässt aber die installierten Dateien unangetastet. Führen Sie es aus, nachdem die Dateien weg sind, nie statt sie zu entfernen.

### Kann ich jede Datei löschen, die pkgutil --files auflistet?

Nein. Die Liste enthält Systemverzeichnisse wie `Library` und `Applications`, Frameworks, die andere Apps des Herstellers laden, und plists für Jobs, die womöglich noch laufen. Nutzen Sie sie, um zu finden, was Sie prüfen sollten, und entfernen Sie dann, was nur zu diesem Produkt gehört.

### Die App ist weg, aber pkgutil --pkgs listet sie noch auf. Ist sie noch installiert?

Nicht unbedingt. Das Löschen von Dateien aktualisiert den Beleg nie, er bleibt also, bis ihn jemand vergisst. Führen Sie die Prüfschleife oben aus: Existiert nichts mehr, was der Beleg auflistet, ist nur noch die Aufzeichnung übrig, und `sudo pkgutil --forget` entfernt sie.

---

Canonical HTML page: https://mole.fit/de/blog/how-to-uninstall-pkg-apps-mac
Blog index for agents: https://mole.fit/de/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
