Come disinstallare qualsiasi file del pacchetto pkg di Apple?


51

Nonostante le opinioni contrarie , non tutti i pacchetti sono installati in modo pulito in una sola directory. C'è un modo per invertire il processo di installazione di un file pkg, preferibilmente con il pacchetto originale (o da un repository di informazioni sui pacchetti installati)?

In particolare ho installato il pacchetto PowerPC MySQL 5.4.1 su un MacBook Intel e vorrei invertirlo in modo chiaro, il ripristino dell'installazione 5.1 x86 che vedo è ancora lì, ma non funziona correttamente ora.

Risposte:


83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X descrive come disinstallare .pkg usando native pkgutil.

Estratto modificato

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

Dopo aver ispezionato visivamente l'elenco dei file, puoi fare qualcosa del tipo:

$ 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

Inutile dire che è necessario prestare la massima attenzione durante la rimozione di file con privilegi di root. In particolare, tenere presente che alcuni pacchetti possono aggiornare i componenti di sistema condivisi, quindi disinstallarli può effettivamente danneggiare il sistema rimuovendo un componente necessario.

Per i pacchetti più piccoli è probabilmente più sicuro rimuovere manualmente i file dopo aver ispezionato visivamente l'elenco dei file del pacchetto.

Apparentemente, una volta c'era --unlinkun'opzione disponibile in pkgutil, ma a partire da Lion non è menzionata nella pagina man. Forse è stato rimosso perché ritenuto troppo pericoloso.

Dopo aver disinstallato i file, è possibile rimuovere la ricevuta con:

$ sudo pkgutil --forget the-package-name.pkg

1
Consiglierei di usare rmdirinvece di rm -r; si potrebbe anche usare taco tail -rinvertire l'elenco dei nomi di directory in modo che vengano eliminati nell'ordine corretto
Sam Mason,

18
NON ESEGUIRE IL SUdo rm -ir PART. L'elenco include le directory principali! Quindi se il pkg ha installato qualcosa in / usr / ... rimuoverai ALL / usr /
FiloSottile il

2
Ho modificato il comando per l'eliminazione delle directory da utilizzare rmdir(che non elimina le directory non vuote) e le utilizza tail -rper elencarle meglio.
brablc,

1
ironicamente, usando pgkutil ho trovato un programma di disinstallazione nascosto che potevo usare. Perfetto!
cmroanirgo,

Una cosa che pkgs non sembra tenere traccia dei link simbolici creati dai pkgs. È possibile che la pulizia del pacchetto dalle istruzioni sopra (o da uno qualsiasi dei metodi qui) lascerà indietro i collegamenti simbolici rotti.
James McMahon,

19

Integrato nel sistema non esiste alcuna opzione per disinstallare i file utilizzando un programma di disinstallazione in modo da poter creare manualmente un programma di disinstallazione o rimuovere i file manualmente.

Il metodo migliore per determinare quali file sono stati installati è quello di ottenere l'originale, .pkgse possibile. Se ciò non è possibile, puoi anche utilizzare le ricevute trovate in /Library/Receipts. Il tuo problema più grande è quando hai a che fare con un file .mpkgche contiene più .pkgfile poiché dovrai quindi trovare tutti i .pkgfile separati in quella cartella (per fortuna non è così difficile se ordinati per data).

Una volta ottenuto il .pkgfile (ricevuta o il file di installazione completo) è quindi possibile utilizzare un'utilità per creare il programma di disinstallazione o trovare i file in modo da poterli rimuovere manualmente:

uninstaller

Absolute Software InstallEase è un programma gratuito in grado di creare programmi di disinstallazione da file .pkg esistenti. Crea il .pkgfile di disinstallazione (nota: per creare effettivamente il .pkgfile avrai bisogno degli strumenti per sviluppatori Apple installati )

manualmente

Utilizzando un programma come Pacifist o un plug-in QuickLook come il pacchetto sospetto è possibile visualizzare quali file sono installati e in quale posizione. Utilizzando tale elenco è quindi possibile accedere manualmente a tali cartelle e rimuovere i file. Ho usato questo metodo personalmente innumerevoli volte prima di scoprire InstallEase, ma questo è spesso più veloce se l'installazione non è distribuita in molte posizioni.


Grazie, mentre i normali pacchetti mysql 5.1 lasciavano una ricevuta, i pacchetti beta 5.4 mysql no. È un po 'strano.
dlamblin,

4
Caspita, se lo sapessi, non avrei mai installato .pkgper cominciare. yu no Programmi e funzionalità OS X?
NobleUplift,


1

Puoi provare i suggerimenti da questo sito: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Inoltre, c'è un articolo a riguardo sul sito di supporto di Adobe; ecco il link: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Inoltre, le app che di solito hanno un file pkg nel dmg di solito hanno anche un altro pkg che viene utilizzato per la disinstallazione. Non sono sicuro che questo sia vero qui, ma volevo farti sapere per mantenere il file dmg originale.


1

Ho realizzato una shell shell

Puoi provarlo

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

Mostra una demo .gif, puoi vedere il codice sorgente, basta avvolgere la riga di comando di brablc . Puoi eseguirlo per cercare informazioni, puoi anche rimuovere l'apk. È interattivo.


Che cosa fa?
Pierre.Vriens,

Mostro una demo .gif, puoi vedere il codice sorgente, basta avvolgere la riga di comando di brablc . puoi eseguirlo per cercare informazioni, puoi anche rimuovere apk. è interattivo. :)
oggi Lin Lin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.