如何在 Mac 上安全/彻底地卸载试用版软件?

如何在 Mac 上安全/彻底地卸载试用版软件?

安装试用版软件时,有什么方法可以保护你的硬盘吗?

我想确保删除每个已安装的文件,可以吗?

答案1

根据应用程序的不同,您只需转到Applications,右键单击文件,然后单击Move to Trash,即可删除该应用程序及其所有支持文件。

情况并非总是如此,因为某些应用程序会添加配置文件或其他实际上不是应用程序一部分的包(单击“显示包内容”时不会出现)。

处理这些问题的最佳方法是使用其他程序。有些程序专门用于查找应用程序的支持文件并将其从您的计算机中删除,例如AppCleaner

答案2

AppCleaner会帮你完成这些。将应用程序拖到应用程序上,它会找到所有支持文件并建议将它们与应用程序本身一起删除。它是免费的。

答案3

对于 pkg 安装程序,你可以使用类似以下命令查看它们将安装哪些文件lsbom -s ~/Desktop/Install\ USB\ Overdrive.pkg/Contents/Archive.bom

/var/db/receipts包含先前安装的包和从 App Store 安装的应用程序的 bom 文件。

答案4

tl;dr:这个答案有 1,000 多个字,非常长,非常详细,非常复杂。简短版本:(1) 使用文件系统搜索实用程序(例如fd)仔细检查磁盘上要删除的相关文件和目录,这可能在很多情况下就足够了。(2) 使用 Homebrew 之类的包管理器也有帮助。(3) 更可靠的方法是在虚拟机内进行安装,并比较前后文件系统的差异,但这当然需要做更多的工作。


免责声明:我是一名软件工程师。此答案涉及的终端使用量超出了普通用户的承受范围。

一、引言

安装试用版软件时,有什么方法可以保护你的硬盘吗?

我想确保删除每个已安装的文件,可以吗?

一般来说,不是的平凡地有可能,因为没有灵丹妙药用于完全卸载 macOS 上的任意应用程序。

原因是:没有一个系统可以跟踪应用程序安装前后文件系统级别的每个变化。如果我们有这个系统,那么我们可以简单地查看差异,忽略不相关的部分,并删除添加的文件。

更麻烦的是,如果安装修改了文件,您就需要跟踪这些相关修改文件的内容,以便将其内容恢复到安装前的状态。

您可以使用其他人提到的 GUI 卸载工具之一,但它们存在一些问题:(1)它们大多是付费软件,(2)它们可能不会确切告诉您它们要删除哪些文件,(3)它们实际上可能无法提供完整的删除功能。


II. 使用 Homebrew 之类的软件包管理器(brew)进行更干净的安装(卸载)

A包管理器是一种自动安装、升级和删除(卸载)软件的工具。

注意:Mac App Store (MAS) 也支持有些就像一个包管理器,但与大多数其他包管理器不同的是,它是闭源的,所以细节是一个黑盒子。

如果你可以通过 Homebrew 获得应用程序,那么最好通过 MAS 获得,因为你可以在公式中看到哪些文件将被删除(“zapped”)(只有当你明确告诉 brew 这样做时)。

例如,看一下Sublime Text 公式页面或其公式代码/配置本身。


III. 彻底卸载的一般方法

从更务实的角度来看,这里有一些步骤你可以自己免费完成,不需要任何 GUI 工具,而且它们将提供更加完整移动:

1. 使用某种系统范围的文件搜索工具。

  • 我建议fd,但你也可以使用ripgrep或其他。
  • 请注意,Finder.app 中的内置搜索功能对于此任务来说远远不够。要验证这一点,只需将其显示的结果与上述工具进行比较即可。

2. 在系统范围内搜索您要删除的公司名称和应用程序的名称。

  • 例如,我试图完全卸载(GUI Git 客户端),它没有提供合适的卸载程序,并且磁盘上到处都是文件,却没有说明用户如何清理它们。在软件世界中,这是不道德的行为。

3.删除相关文件。

  • 你需要非常小心rm在终端中运行是永久的且不可逆转的。如果您不习惯,请在 Finder ( open <dir>) 中打开目录并将项目拖到那里的废纸篓。

[这种方法基本上就是付费 GUI 应用程序所做的事情,它们的“秘密武器”是应用程序 A(版本 V)创建文件/目录 X, Y, Z。正如您所想象的,确切的文件集会随着时间而改变。

改进:使用虚拟机增强隔离

您还可以尝试其他一些方法,例如在安装前和安装后使用 SHA 创建文件系统的完整索引(https://apple.stackexchange.com/q/40794/1788)。然而,在实际的文件系统中,这种方法会包含大量噪音/许多不相关的误报。

您可以使用一种技术来进一步减少这种情况,即在虚拟机 (VM) 中进行隔离安装。如果您有 Apple Silicon Mac,则可以通过 Apple 的虚拟化框架 (例子对于 Intel Mac,您可以通过 VirtualBox 执行此操作(例子)。

这种方法的另一个好处是,软件可以使用不包含公司或应用程序名称的文件名来植入文件。

IV. 一个例子:塔

Tower 制造商的名称是 Four Nova,所以我最初的搜索是:four novafournovatower。对于多词名称,您可能需要尝试常见的变体,例如用下划线或连字符连接单词。

在这种情况下,第一次搜索没有返回任何内容,第二次搜索返回了数十个文件和目录,第三次搜索返回了系统上的数百个文件,但有许多不相关的误报。所以,让我们先从第二个开始:

$ cd /
$ fd fournova
Users/taylor/Library/Caches/com.plausiblelabs.crashreporter.data/com.fournova.Tower3/
Users/taylor/Library/Caches/com.plausiblelabs.crashreporter.data/com.fournova.Tower2/
Users/taylor/Library/Caches/com.fournova.Tower2/
Users/taylor/Library/Caches/com.fournova.Tower3/
Users/taylor/Library/HTTPStorages/com.fournova.Tower2/
Users/taylor/Library/HTTPStorages/com.fournova.Tower3/
Users/taylor/Library/Preferences/com.fournova.Tower2.plist.A3m3T1k
Users/taylor/Library/Preferences/com.fournova.Tower3.plist
Users/taylor/Library/Preferences/com.fournova.Tower2.plist
Users/taylor/Library/Saved Application State/com.fournova.Tower2.savedState/
Users/taylor/Library/Saved Application State/com.fournova.Tower3.savedState/
Users/taylor/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.fournova.tower2.sfl2
Users/taylor/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.fournova.tower3.sfl2
Users/taylor/Library/Application Support/com.fournova.Tower2/
Users/taylor/Library/Application Support/com.fournova.Tower3/
private/var/folders/gk/_y2ck2qx0zddmy542ftyxj180000gn/C/com.fournova.Tower2/
private/var/folders/gk/_y2ck2qx0zddmy542ftyxj180000gn/C/com.fournova.Tower3/
System/Volumes/Data/Users/taylor/Library/Caches/com.plausiblelabs.crashreporter.data/com.fournova.Tower2/
System/Volumes/Data/Users/taylor/Library/Caches/com.plausiblelabs.crashreporter.data/com.fournova.Tower3/
System/Volumes/Data/Users/taylor/Library/Caches/com.fournova.Tower2/
System/Volumes/Data/Users/taylor/Library/Caches/com.fournova.Tower3/
System/Volumes/Data/Users/taylor/Library/HTTPStorages/com.fournova.Tower3/
System/Volumes/Data/Users/taylor/Library/HTTPStorages/com.fournova.Tower2/
System/Volumes/Data/Users/taylor/Library/Preferences/com.fournova.Tower2.plist
System/Volumes/Data/Users/taylor/Library/Preferences/com.fournova.Tower3.plist
System/Volumes/Data/Users/taylor/Library/Preferences/com.fournova.Tower2.plist.A3m3T1k
System/Volumes/Data/Users/taylor/Library/Saved Application State/com.fournova.Tower2.savedState/
System/Volumes/Data/Users/taylor/Library/Saved Application State/com.fournova.Tower3.savedState/
System/Volumes/Data/Users/taylor/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.fournova.tower3.sfl2
System/Volumes/Data/Users/taylor/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.fournova.tower2.sfl2
System/Volumes/Data/Users/taylor/Library/Application Support/com.fournova.Tower2/
System/Volumes/Data/Users/taylor/Library/Application Support/com.fournova.Tower3/
System/Volumes/Data/private/var/folders/gk/_y2ck2qx0zddmy542ftyxj180000gn/C/com.fournova.Tower2/
System/Volumes/Data/private/var/folders/gk/_y2ck2qx0zddmy542ftyxj180000gn/C/com.fournova.Tower3/

您可以看到这些路径分为几组:

  • ~/Library/...

    • Application Support/
      • com.apple.sharedfilelist/...- 我猜这些是你最近为该应用程序打开的文件
      • com.fournova.Tower3/...- 应用程序的 repo 元数据数据库等
    • Caches/...- 应用程序在缓存中的子目录可以安全删除
    • HTTPStorages/com.fournova.Tower3/- 在我的系统上,这是一个空的 SQLite 数据库...我找不到关于这个的官方参考
    • Preferences/...- 应用程序的偏好文件可以安全删除
    • Saved Application State/com.fournova.Tower3.savedState/- 似乎存储了应用程序启动过程中打开的窗口的信息
  • /private/var/folders/...- 可以安全删除的每个用户的临时文件和缓存(参考文献 1参考文献 2

  • /System/Volumes/Data/...- 我相信所有这些都可以安全地忽略,因为 firmlinks 回到主磁盘(参考文献 1

您可能注意到,我安装了多个版本的 Tower。我相信“Tower 2”是 2018 年左右的 v2.x,“Tower 3”是当前版本(根据https://www.git-tower.com/release-notes/mac)。为了使这个答案集中起来,我只打算描述如何移除“Tower 3”。

事实证明3号塔公式对于 Homebrew,除了应用程序之外,卸载时还会删除以下文件:

"~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.fournova.tower*.sfl2"
"~/Library/Application Support/com.fournova.Tower*"
"~/Library/Caches/com.fournova.Tower*"
"~/Library/Preferences/com.fournova.Tower*.plist"

如您所见,我们通过使用 独立发现了所有这些文件以及更多文件fd。因此,在这种情况下,简单的方法brew uninstall tower不足以执行全面清理。

无论如何,我想从那里开始,看看是否足以将 Tower 应用程序重置为全新状态。(事实并非如此。)

接下来,我尝试了 zap 卸载:brew uninstall --zap tower。(默认情况下,Tower 不会删除要 zap 的文件;添加标志--zap则会删除。)

在我的系统上,这曾是足以将 Tower 重置为全新状态。

也就是说,如果您想继续彻底删除,请继续rm -rf <path>对上述每个路径运行,其中<path>是您要删除的路径。您可能需要在命令前面加上sudo某些目录,或者sudo !!在命令失败后运行以自动重复上一个命令并添加 sudo。

免责声明:如果您不确定某个路径是什么,请研究它并查看其他人是否记录了它。只有在您了解它们是什么后才可以删除路径。如果您不确定,请尝试重命名它,例如_old在末尾添加后缀,这样您就可以在需要时将其撤消。

相关内容