Wie deinstalliere ich eine Apple pkg Package-Datei?

50

Trotz gegenteiliger Meinungen werden nicht alle Pakete sauber in nur einem Verzeichnis installiert. Gibt es eine Möglichkeit, den Installationsprozess einer pkg-Datei umzukehren, vorzugsweise mit dem Originalpaket (oder aus einem Repository mit Informationen zu installierten Paketen)?

Insbesondere habe ich das PowerPC MySQL 5.4.1-Paket auf einem Intel MacBook installiert und möchte dies sauber rückgängig machen. Die Wiederherstellung der installierten Version 5.1 x86, die ich sehen kann, ist noch vorhanden, funktioniert jetzt jedoch nicht ordnungsgemäß.

dlamblin
quelle

Antworten:

83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X beschreibt die Deinstallation von .pkg mit native pkgutil.

Modifizierter Auszug

$ pkgutil --pkgs # list all installed packages
$ pkgutil --files the-package-name.pkg # list installed files

Nachdem Sie die Liste der Dateien visuell überprüft haben, können Sie Folgendes tun:

$ pkgutil --pkg-info the-package-name.pkg # check the location
$ cd / # assuming the package is rooted at /...
$ pkgutil --only-files --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -f
$ pkgutil --only-dirs --files the-package-name.pkg | tail -r | tr '\n' '\0' | xargs -n 1 -0 sudo rmdir

Es ist unnötig zu erwähnen, dass beim Entfernen von Dateien mit Root-Rechten immer äußerste Vorsicht geboten ist. Beachten Sie insbesondere, dass einige Pakete möglicherweise gemeinsam genutzte Systemkomponenten aktualisieren. Wenn Sie diese deinstallieren, kann dies Ihr System beschädigen, indem Sie eine erforderliche Komponente entfernen.

Bei kleineren Paketen ist es wahrscheinlich sicherer, die Dateien nur manuell zu entfernen, nachdem Sie die Paketdateiliste visuell überprüft haben.

Anscheinend gab es einmal eine --unlinkOption in pkgutil, aber seit Lion wird sie nicht in der Manpage erwähnt. Vielleicht wurde es entfernt, weil es als zu gefährlich eingestuft wurde.

Sobald Sie die Dateien deinstalliert haben, können Sie den Beleg entfernen mit:

$ sudo pkgutil --forget the-package-name.pkg
brablc
quelle
1
Ich würde empfehlen, rmdiranstatt zu verwenden rm -r; Man könnte auch tacoder verwenden tail -r, um die Liste der Verzeichnisnamen umzukehren, damit sie in der richtigen Reihenfolge gelöscht werden
Sam Mason,
18
LASSEN SIE DAS SUDO NICHT LAUFEN. Die Liste enthält die übergeordneten Verzeichnisse! Wenn das Paket also etwas in / usr / ... installiert hat, werden Sie ALL / usr /
FiloSottile
2
Ich habe den Befehl zum Löschen der zu verwendenden Verzeichnisse geändert rmdir(der nicht leere Verzeichnisse nicht löscht) und benutze, tail -rum sie in einer besseren Reihenfolge aufzulisten.
Brablc
1
Ironischerweise fand ich bei der Verwendung von pgkutil eine versteckte uninstaller.pl, die ich verwenden konnte. Perfekt!
Cmroanirgo
Eine Sache, die pkgs nicht im Auge zu behalten scheinen, sind die von den pkgs erstellten Symlinks. Es ist möglich, dass beim Bereinigen des Pakets anhand der obigen Anweisungen (oder einer der hier beschriebenen Methoden) fehlerhafte Symlinks zurückbleiben.
James McMahon
19

Das System bietet keine Möglichkeit, die Dateien mit einem Deinstallationsprogramm zu deinstallieren, sodass Sie entweder selbst ein Deinstallationsprogramm erstellen oder die Dateien manuell entfernen können.

Die beste Methode, um festzustellen, welche Dateien installiert wurden, ist, .pkgwenn möglich, das Original zu beschaffen. Ist dies nicht möglich, können Sie stattdessen auch die Belege unter verwenden /Library/Receipts. Ihr größtes Problem ist, wenn Sie es mit einer Datei zu tun haben, .mpkgdie mehrere .pkgDateien enthält , da Sie dann alle separaten .pkgDateien in diesem Ordner finden müssen (zum Glück nicht so schwierig, wenn Sie nach Datum sortiert sind).

Sobald Sie die .pkgDatei (Receipt oder die vollständige Installationsdatei) haben, können Sie mit einem Dienstprogramm entweder das Deinstallationsprogramm erstellen oder die Dateien suchen, um sie manuell zu entfernen:

deinstallierer

Absolute Software InstallEase ist ein kostenloses Programm, mit dem Deinstallationsprogramme aus vorhandenen .pkg-Dateien erstellt werden können. Erstellen Sie die Deinstallationsdatei .pkg(Hinweis: Damit die .pkgDatei tatsächlich erstellt werden kann, müssen die Entwicklertools von Apple installiert sein. )

Manuell

Mit einem Programm wie Pacifist oder einem QuickLook-Plugin wie Suspicious Package können Sie anzeigen, welche Dateien an welchem ​​Ort installiert sind. Mit dieser Liste können Sie dann manuell zu diesen Ordnern navigieren und die Dateien entfernen. Ich habe diese Methode unzählige Male persönlich angewendet, bevor ich InstallEase entdeckt habe, aber dies ist oftmals noch schneller, wenn die Installation nicht auf mehrere Standorte verteilt ist.

Chealion
quelle
Danke, während die regulären 5.1-MySQL-Pakete eine Quittung hinterlassen haben, haben die Beta 5.4-MySQL-Pakete keine Quittung hinterlassen. Das ist etwas seltsam.
Dlamblin
4
Wow, wenn ich das gewusst hätte, hätte ich das nie installiert .pkg. yu nein Programme und Funktionen OS X?
NobleUplift
10

Sie können .pkg-Pakete auch mit UninstallPKG deinstallieren ( http://www.corecode.at/uninstallpkg/ )

[vollständige Offenlegung: Ja, ich bin der Autor]

user1259710
quelle
Es ist erwähnenswert, dass es nicht kostenlos ist, aber eine kostenlose Testversion beinhaltet
Ron E
1

Sie können die Vorschläge von dieser Website ausprobieren: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Es gibt auch einen Artikel dazu auf der Adobe-Support-Website. Hier ist der Link: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Die Apps, die normalerweise eine pkg- Datei im dmg haben, haben normalerweise auch eine andere pkg- Datei , die für die Deinstallation verwendet wird. Ich bin mir nicht sicher, ob dies hier zutrifft, aber ich wollte Sie wissen lassen, dass Sie die ursprüngliche dmg-Datei behalten.

Alex
quelle
1

Ich habe ein Shell-Skript erstellt

du kannst es versuchen

https://github.com/iamrToday/pkg-remove

Es zeigt eine GIF-Demo. Sie können den Quellcode sehen, indem Sie die Befehlszeile des Brablc umbrechen . Sie können es ausführen, um Informationen zu suchen, Sie können auch apk entfernen. Es ist interaktiv.

Heute Lin
quelle
was tut es?
Pierre.Vriens
Ich zeige eine GIF-Demo. Sie können den Quellcode sehen, indem Sie die Befehlszeile des Brablc umbrechen . Sie können es ausführen, um Informationen zu suchen. Sie können auch apk entfernen. es ist interaktiv. :)
rToday Lin