2014-09-19 226 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