2014-09-19 42 views
14

Come si può disinstallare completamente (rimuovere i file appartenenti ad un determinato pacchetto) in Mac OS X? Questo può essere fatto usando un comando nel terminale?Disinstallare pacchetti in Mac OS X

Ho installato un pacchetto .pkg sul mio Mac e mi chiedo come posso disinstallare l'intero pacchetto senza utilizzare un'applicazione di terze parti come UninstallPKG?

Mi chiedo se la disinstallazione di file .dmg richiede anche applicazioni di terze parti o è possibile disinstallarle inserendo un comando nel terminale?

+4

Questa domanda sembra essere fuori tema perché non riguarda la programmazione. Prova http://apple.stackexchange.com – Droppy

+1

In particolare, questa è la stessa domanda di http://superuser.com/questions/36567/how-do-i-uninstall-any-apple-pkg-package-file. Ti consiglio di chiudere questa domanda poiché è fuori tema per StackOverflow. –

risposta

5

Il concetto di disinstallazione PKG non è presente in OS X. A PKG/MPKG possono essere associati determinati script di installazione e postinstallazione. Ciò che viene fatto negli script PKG è sempre fino al creatore di PKG. Come laico non possiamo andare avanti e disinstallare un PKG.

Ma allo stesso tempo ci sono linee di comando che possono eseguire un reverse engineering completo su file PKG. Può estrarre gli script e altre informazioni correlate. I collegamenti indicati di seguito vi darà alcune informazioni

http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html http://www.mactech.com/articles/mactech/Vol.26/26.02/TheFlatPackage/index.html

Ci sono pochi disinstallare/apps più pulite disponibili su OS X. La maggior parte di loro fare una ricerca nelle directory noti (come/Library/Preferences,/Library/Application Support etc) con il nome dell'app/nome pkg o identificatore del bundle. Questo è un modo per fare una rimozione completa.

DMG non sono file di installazione. Sono file immagine disco. Può inserire .apps, pkg, mpkgs, altri file ecc. Ciò che viene installato sono gli installer all'interno di DMG. DMG deve essere montato per leggere i contenuti e disinstallare quando fatto.

http://osxdaily.com/2011/12/17/mount-a-dmg-from-the-command-line-in-mac-os-x/

Questo link fornisce informazioni su come montare un DMG

9

utilizzare questo comando in terminale per controllare la lista dei pacchetti e disinstallato i file.

$ pkgutil --pkgs # list all installed packages 

Una volta disinstallato i file, è possibile rimuovere la ricevuta con:

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

Dopo aver ispezionato visivamente l'elenco dei file che è possibile fare qualcosa di simile:

$ 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 -i 

Be attento a questo ultimo passaggio. L'elenco di directory prodotte da pkgutil --files può includere importanti directory condivise come usr, che non si desidera rimuovere .

$ pkgutil --only-dirs --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -ir 

copiato da here

+0

Ho provato il comando precedente per rimuovere i file da un pacchetto, ma non ha funzionato. 'rm -i' richiede all'utente la conferma, ma stdin proviene da'/dev/null' grazie a xargs (http://man7.org/linux/man-pages/man1/xargs.1.html), quindi non puoi confermare nulla. Hai solo una serie di molti prompt e nessun file rimosso. Qualcun altro ha avuto successo? – LarsH

+0

Come si disinstallano i file/come si conoscono i file in cui le directory sono correlate a un pacchetto specifico? – JedatKinports

4

sto modificando la risposta @ di Karthikeyan, che non ha funzionato per me.

In una riga di comando, utilizzare il seguente per trovare il nome del pacchetto desiderato:

$ pkgutil --pkgs | grep -i {keyword} | less 

dove {} parola chiave è una stringa che ci si aspetta di vedere nel nome del pacchetto.

Per trovare la posizione del pacchetto (la directory principale che tutti gli elenchi di file saranno relativi a), utilizzare

$ pkgutil --pkg-info package-name.pkg 

Utilizzare questo alla lista file installati del pacchetto:

$ pkgutil --files package-name.pkg 

Dopo aver ispezionato visivamente l'elenco dei file è possibile fare qualcosa di simile per rimuoverli:

$ cd/# assuming the package location is/
$ pkgutil --only-files --files package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 -p sudo rm 

Fare attenzione al passaggio (finale) che rimuove le directory. L'elenco di directory prodotte da pkgutil --files può includere importanti directory condivise come usr, che non si desidera rimuovere . -p provoca xargs per richiedere conferma, ma non ottenere trigger-happy. (Si dovrebbe essere al sicuro con rmdir troppo, perché sarà solo rimuovere directory vuote. Ma alcune persone avrà bisogno di modificare la riga di comando, quindi è meglio essere chiari!)

$ pkgutil --only-dirs --files package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 -p sudo rmdir 

Una volta disinstallato i file , è possibile rimuovere il record del sistema di quel pacchetto:

$ sudo pkgutil --forget package-name.pkg 

Fonti: pkgutil man page e this post.

+1

L'estensione '.pkg' non è necessaria, almeno nel passaggio pkg-info. –

+0

Presumibilmente, se il passo info dice 'location: Applications/xxx.app' e il passo' --files' non mi mostra nulla al di fuori di 'Contents /' Posso essere abbastanza sicuro che il semplice trascinamento della app nel cestino abbia rimosso tutto? –