我在我的Mac上安装了一个.pkg软件包,想知道如何卸载整个软件包,而不使用第三方应用程序,如UninstallPKG。
我想知道是否卸载.dmg文件也需要第三方应用程序,或者是否可以通过输入终端中的命令来卸载它们?
在终端中使用此命令以检查软件包列表并卸载您的文件。
$ 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
rm -i
会提示用户进行确认,但由于 xargs(http://man7.org/linux/man-pages/man1/xargs.1.html)的 stdin 来自 /dev/null
,因此您无法确认任何内容。您只会得到一系列的提示,而没有文件被删除。有其他人成功了吗? - LarsHxargs -n 1 -0 sudo rm -if
。这可能需要一些时间。 - Jorge Orpinel Pérezsudo rmdir
命令呢?这样它只会删除空目录。 - Victor Zamanian我正在修改@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
来源: pkgutil man page 和 这篇文章.
.pkg
扩展名不是必需的,至少在pkg-info步骤中不需要。 - Jon L.pkgutil --unlink <package-id>
,虽然没有记录。 - ՕլՁՅԿrm
上使用-i
比在xargs
上使用-p
更好? - LarsHhttp://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等)中进行搜索。这是一种进行完全删除的方法。http://osxdaily.com/2011/12/17/mount-a-dmg-from-the-command-line-in-mac-os-x/
此链接提供了如何挂载DMG的信息
如果你正在使用Brew,请列出所有已安装的软件包
brew list
brew ls -lt
(这个命令可以获取时间和日期)
brew uninstall <the-package-name> ( This will uninstall your package)
如果你想要包括 brew 命令以外的所有包,请使用以下命令
pkgutil --pkgs
在视觉检查文件列表后,您可以执行以下操作:
pkgutil --pkg-info the-package-name.pkg
(检查位置)
cd /(假设包根位于/...)
此命令将删除您的文件包 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
.pkg
文件。 - Quentin