¿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.

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

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.


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


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.


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.


¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.