¿Cómo desinstalo cualquier archivo del paquete Apple pkg?

51

A pesar de las opiniones en contrario , no todos los paquetes se instalan limpiamente en un solo directorio. ¿Hay alguna manera de revertir el proceso de instalación de un archivo pkg, preferiblemente con el paquete original (o desde un repositorio de información sobre los paquetes instalados)?

Específicamente, instalé el paquete PowerPC MySQL 5.4.1 en un MacBook de Intel, y me gustaría revertirlo limpiamente, recuperando la instalación 5.1 x86 que puedo ver todavía está allí, pero ahora no funciona correctamente.

dlamblin
fuente

Respuestas:

83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X describe cómo desinstalar .pkg usando nativo pkgutil.

Extracto modificado

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

Después de inspeccionar visualmente la lista de archivos, puede hacer algo como:

$ 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

No es necesario decir que siempre se debe tener extremo cuidado al eliminar archivos con privilegios de root. Particularmente, tenga en cuenta que algunos paquetes pueden actualizar los componentes compartidos del sistema, por lo que desinstalarlos puede dañar su sistema al eliminar un componente necesario.

Para paquetes más pequeños, probablemente sea más seguro eliminar manualmente los archivos después de inspeccionar visualmente la lista de archivos del paquete.

Aparentemente, una vez hubo una --unlinkopción disponible pkgutil, pero a partir de Lion no se menciona en la página del manual. Tal vez fue eliminado porque se consideró demasiado peligroso.

Una vez que haya desinstalado los archivos, puede eliminar el recibo con:

$ sudo pkgutil --forget the-package-name.pkg
brablc
fuente
1
Recomiendo usar en rmdirlugar de rm -r; uno también podría usar taco tail -rrevertir la lista de nombres de directorio para que se eliminen en el orden correcto
Sam Mason
18
NO EJECUTE LA PARTE sudo rm -ir. ¡La lista incluye los directorios principales! Entonces, si el paquete instaló algo en / usr / ... eliminará ALL / usr /
FiloSottile el
2
He cambiado el comando para eliminar directorios para usar rmdir(que no elimina los directorios no vacíos) y los uso tail -rpara enumerarlos en mejor orden.
brablc
1
Irónicamente, cuando uso pgkutil encontré un uninstaller.pl escondido que podía usar. ¡Perfecto!
cmroanirgo
Una cosa que los pkgs no parecen seguir son los enlaces simbólicos creados por los pkgs. Es posible que limpiar el paquete de las instrucciones anteriores (o cualquiera de los métodos aquí) deje enlaces simbólicos rotos.
James McMahon el
19

Integrado en el sistema, no hay opción para desinstalar los archivos usando un desinstalador para que pueda hacer un desinstalador usted mismo o eliminar los archivos manualmente.

El mejor método para determinar qué archivos se han instalado es obtener el original .pkgsi es posible. Si esto no es posible, también puede utilizar los recibos que se encuentran en /Library/Receipts. Su mayor problema es cuando se trata de un archivo .mpkgque contiene varios .pkgarchivos, ya que tendrá que encontrar todos los .pkgarchivos separados en esa carpeta (afortunadamente, no es tan difícil cuando se ordena por fecha).

Una vez que tenga el .pkgarchivo (Recibo o el archivo de instalación completo), puede usar una utilidad para crear el desinstalador o buscar los archivos para poder eliminarlos manualmente:

Desinstalador

Absolute Software InstallEase es un programa gratuito que puede crear desinstaladores a partir de archivos .pkg existentes. Cree el .pkgarchivo desinstalador (nota: necesitará las herramientas de desarrollador de Apple instaladas para crear el .pkgarchivo)

A mano

Usando un programa como Pacifist o un complemento QuickLook como Suspicious Package , puede ver qué archivos están instalados y en qué ubicación. Usando esa lista, puede navegar manualmente a esas carpetas y eliminar los archivos. He usado este método personalmente innumerables veces antes de descubrir InstallEase, pero esto a menudo es más rápido si la instalación no se extiende entre muchas ubicaciones.

Chealion
fuente
Gracias, mientras que los paquetes regulares mysql 5.1 dejaron un recibo, los paquetes mysql beta 5.4 no. Eso es un poco extraño.
dlamblin
44
Wow, si supiera esto, nunca habría instalado el .pkgpara empezar. yu no Programas y características OS X?
NobleUplift
10

También puede desinstalar paquetes .pkg con UninstallPKG ( http://www.corecode.at/uninstallpkg/ )

[divulgación completa: sí, soy el autor]

usuario1259710
fuente
Vale la pena señalar que no es gratis, pero incluye una prueba gratuita
Ron E
1

Puede probar las sugerencias de este sitio: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Además, hay un artículo sobre esto en el sitio de soporte de Adobe; aquí está el enlace: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Además, las aplicaciones que generalmente tienen un archivo pkg en el dmg generalmente también tienen otro paquete que se usa para desinstalar. No estoy seguro de si esto es cierto aquí, pero quería hacerle saber que mantenga el archivo dmg original.

alex
fuente
1

Hice un srcipt de concha

puedes probarlo

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

Muestra una demostración .gif, puede ver el código fuente, simplemente ajuste la línea de comando de brablc . Puede ejecutarlo para buscar información, también puede eliminar apk. Es interactivo.

rToday Lin
fuente
¿Qué hace?
Pierre.Vriens
Muestro una demostración .gif, puedes ver el código fuente, simplemente ajusta la línea de comando de brablc . puedes ejecutarlo para buscar información, también puedes eliminar apk. Es interactivo. :)
rToday Lin