如何卸载任何 Apple pkg 包文件?

dla*_*lin 60 mac uninstall packages

尽管有相反的意见,但并非所有软件包都只安装在一个目录中。有没有办法逆转 pkg 文件的安装过程,最好使用原始软件包(或来自有关已安装软件包的信息存储库)?

具体来说,我已经在英特尔 MacBook 上安装了 PowerPC MySQL 5.4.1 软件包,并希望彻底扭转它,恢复我可以看到的 5.1 x86 安装仍然存在,但现在无法正常工作。

bra*_*blc 99

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X描述了如何使用 native 卸载 .pkg pkgutil

修改后的摘录

$ pkgutil --pkgs # list all installed packages
$ pkgutil --files the-package-name.pkg # list installed files
Run Code Online (Sandbox Code Playgroud)

在目视检查文件列表后,您可以执行以下操作:

$ 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
Run Code Online (Sandbox Code Playgroud)

毋庸置疑,删除具有 root 权限的文件时应始终格外小心。特别要注意,某些软件包可能会更新共享的系统组件,因此卸载它们实际上会通过删除必要的组件来破坏您的系统。

对于较小的包,在目视检查包文件列表后手动删除文件可能更安全。

显然, 中曾经有一个--unlink选项可用pkgutil,但从 Lion 开始,手册页中没有提到它。也许它被移除是因为它被认为太危险了。

卸载文件后,您可以使用以下命令删除收据:

$ sudo pkgutil --forget the-package-name.pkg
Run Code Online (Sandbox Code Playgroud)

  • 不要运行 sudo rm -ir 部分。该列表包括父目录!因此,如果 pkg 在 /usr/... 中安装了某些东西,您将删除所有 /usr/ (20认同)
  • 我已将删除目录的命令更改为使用 `rmdir`(它不会删除非空目录)并使用 `tail -r` 以更好的顺序列出它们。 (3认同)

Che*_*ion 21

系统内置没有使用卸载程序卸载文件的选项,因此您可以自己制作卸载程序或手动删除文件。

确定已安装哪些文件的最佳方法是尽可能获取原始文件.pkg。如果这是不可能的,您也可以使用收据代替/Library/Receipts。您最大的问题是当您处理.mpkg包含多个.pkg文件的 a 时,您将不得不.pkg在该文件夹中找到所有单独的文件(幸好按日期排序时并不那么困难)。

获得.pkg文件(收据或完整安装文件)后,您可以使用实用程序创建卸载程序或查找文件,以便您可以手动删除它们:

卸载程序

Absolute Software InstallEase是一个免费程序,可以从现有的 .pkg 文件创建卸载程序。制作卸载.pkg程序文件(注意:您需要安装 Apple 的开发工具才能实际制作该.pkg文件)

手动

使用Pacifist 之类的程序或Suspicious Package 之类的 QuickLook 插件,您可以查看安装了哪些文件以及安装在什么位置。使用该列表,您可以手动导航到这些文件夹并删除文件。在我发现 InstallEase 之前,我已经无数次亲自使用过这种方法,但是如果安装没有分散在许多位置,这通常仍然更快。

  • 哇,如果我知道这一点,我就永远不会安装`.pkg`。没有程序和功能 OS X? (4认同)

小智 11

您还可以使用 UninstallPKG ( http://www.corecode.at/uninstallpkg/ )卸载 .pkg 软件包

[完全披露:是的,我是作者]

  • 值得注意的是,它不是免费的,但包含免费试用 (2认同)