如何在Mac OS X中完全卸载(删除属于某个软件包的文件)?可以使用终端中的命令来完成吗?
我在Mac上安装了.pkg软件包,我想知道如何在不使用第三方应用程序(如UninstallPKG)的情况下卸载整个软件包?
我想知道卸载.dmg文件是否也需要第三方应用程序,还是可以卸载它们在终端中输入命令?
答案 0 :(得分:12)
在终端中使用此命令检查包列表并卸载文件。
$ pkgutil --pkgs # list all installed packages
卸载文件后,您可以使用以下内容删除收据:
$ sudo pkgutil --forget the-package-name.pkg
在目视检查文件列表后,您可以执行以下操作:
$ 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
小心这最后一步。 pkgutil --files
输出的目录列表可以包含重要的共享目录,例如usr
,您不想删除。
$ pkgutil --only-dirs --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -ir
从here
复制答案 1 :(得分:9)
我正在修改@ karthikeyan的答案,这对我来说并不适用。
在命令行中,使用以下命令查找所需的包名称:
$ pkgutil --pkgs | grep -i {keyword} | less
其中{keyword}是您希望在包名中看到的字符串。
要查找包位置(所有文件列表将相对的根目录),请使用
$ pkgutil --pkg-info package-name.pkg
使用此列出软件包的已安装文件:
$ pkgutil --files package-name.pkg
在目视检查文件列表后,您可以执行以下操作以删除它们:
$ cd / # assuming the package location is /
$ pkgutil --only-files --files package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 -p sudo rm
小心下一步(最后)步骤,删除目录。 pkgutil --files
输出的目录列表可以包含重要的共享目录,例如usr
,您不想删除。 -p
会导致xargs
提示确认,但不要触发快乐。 (你应该对rmdir
安全,因为它只会删除空目录。但有些人需要调整命令行,所以最好清楚!)
$ pkgutil --only-dirs --files package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 -p sudo rmdir
卸载文件后,您可以删除该软件包的系统记录:
$ sudo pkgutil --forget package-name.pkg
答案 2 :(得分:6)
在OS X中不存在PKG卸载的概念.PKG / MPKG可以具有与之关联的某些预安装和后安装脚本。 PKG脚本中的操作总是由PKG创建者完成。作为外行,我们无法继续卸载PKG。
但与此同时,有一些命令行可以对PKG文件进行完整的逆向工程。它可以提取脚本和其他相关信息。下面给出的链接将为您提供一些信息
http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html http://www.mactech.com/articles/mactech/Vol.26/26.02/TheFlatPackage/index.html
OS X上几乎没有可用的卸载/清除应用程序。他们中的大多数都使用应用程序名称/ pkg名称或包标识符在已知目录(例如/ Library / Preferences,/ Library / Application Support等)中进行搜索。这是完全删除的一种方法。
DMG不是安装程序文件。它们是磁盘映像文件。它可以包含.apps,pkg,mpkgs,其他文件等。安装的是DMG内部的安装程序。必须安装DMG才能读取内容并在完成后卸载。
http://osxdaily.com/2011/12/17/mount-a-dmg-from-the-command-line-in-mac-os-x/
此链接提供有关如何安装DMG的信息
答案 3 :(得分:0)
我真的很讨厌一个cr脚的供应商(我正在看你的LG),他留下了大约10个左右的打包文件,所以我最终编写了@ karthikeyan-viswanathan / @ LarsH的内容。
下面是完整脚本的要点: https://gist.github.com/vpetersson/f9970eb394adfa1173362a1aa71b2c4b