2014-09-19 177 views
14

如何在Mac OS X中完全卸载(删除属于某个软件包的文件)?这可以使用终端中的命令完成吗?在Mac OS X中卸载软件包

我在我的Mac上安装了一个.pkg软件包,我想知道如何在不使用第三方应用程序(如UninstallPKG)的情况下卸载整个软件包?

我想知道卸载.dmg文件是否也需要第三方应用程序或可以卸载它们在终端中输入命令?

+4

这个问题似乎是脱离主题,因为它不是关于编程。尝试http://apple.stackexchange.com – Droppy 2014-12-18 12:03:25

+1

具体来说,这是与http://superuser.com/questions/36567/how-do-i-uninstall-any-apple-pkg-package-file相同的问题。我建议我们关闭这个问题,因为它关闭了StackOverflow的主题。 – 2016-11-25 21:34:24

回答

5

PKG卸载的概念在OS X中不存在.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名称或软件包标识符。这是完成删除的一种方法。

DMG不是安装程序文件。它们是磁盘映像文件。它可以使用.apps,pkg,mpkgs,其他文件等。安装DMG内部的安装程序。必须安装DMG以读取内容并在完成时卸载。

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

这个链接给出了如何在终端安装一个DMG

9

使用此命令检查包的列表信息和卸载文件。

$ pkgutil --pkgs # list all installed packages 

一旦你卸载的文件,你可以删除收据:

$ 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 

要:

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

目测检查,你可以做类似的文件列表后小心这最后一步。由pkgutil --files输出的目录列表可以包含重要的共享目录,例如usr,其中您不想删除

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

here

+0

我试过上面的命令从软件包中删除文件,但没有奏效。 'rm -i'提示用户确认,但是由于xargs(http://man7.org/linux/man-pages/man1/xargs.1.html),stdin来自'/ dev/null',所以你无法确认任何事情。您只需获得一系列很多提示,并且不会删除任何文件。其他人有成功吗? – LarsH 2017-02-08 17:14:51

+0

如何卸载文件/你如何知道哪些目录与特定包相关的文件? – JedatKinports 2017-08-16 07:09:06

4

复制我修改@卡菲基恩的答案,这并没有为我工作。

在命令行上,使用以下方法来查找所需的软件包名称:

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

其中{}关键字是你希望在包的名字,看看一个字符串。

要找到包的位置(根目录下的所有文件列表会相对),使用

$ 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 

来源:pkgutil man pagethis post

+1

至少在pkg-info步骤中不需要'.pkg'扩展名。 – 2017-05-14 03:45:42

+0

假设信息步骤显示'location:Applications/xxx.app'和'--files'步骤在内容外没有显示任何内容/'我可以相当确信只要将应用程序拖到垃圾箱中就可以删除所有内容? – 2018-03-08 14:35:37