之前我就在 V2EX 就分享过用 brew uninstall --zap
来清理软件残留,有 39 个人给我点了感谢(地址)。
我是觉得 Homebrew 里这个社区维护的软件残留列表(或者说清理规则)是非常有价值的,比如我们随便找一个软件,它的 cask 文件 是这样的:
$ brew cat bitbar
cask "bitbar" do
version "1.10.1"
sha256 "8a7013dca92715ba80cccef98b84dd1bc8d0b4c4b603f732e006eb204bab43fa"
url "https://github.com/matryer/bitbar/releases/download/v#{version}/BitBar.app.zip"
name "BitBar"
desc "Utility to display the output from any script or program in the menu bar"
homepage "https://github.com/matryer/bitbar/"
app "BitBar.app"
zap trash: [
"~/Library/BitBar Plugins",
"~/Library/Caches/com.matryer.BitBar",
"~/Library/Preferences/com.matryer.BitBar.plist",
]
end
其中 zap
部分就是需要清理的遗留文件。
于是我做了一个插件可以一键扫描 Homebrew Cask 中所有软件(目前支持其中约 3400 个)的 cask 文件中的路径,找出已卸载软件的遗留文件:
项目的源代码在 https://github.com/jysperm/homebrew-leftover-scanner
安装:
brew tap jysperm/leftover-scanner
开始扫描:
brew scan-leftovers
这个插件本身并不会删除任何文件,而是会打印出列表并引导你使用 brew uninstall
来删除,所以不必担心误删。
1
steveshi 2023-02-21 08:08:23 +08:00
666 这个确实很强,不过会莫名其妙扫出来我安装的 mpv 和 pycharm
|
2
Yuusha 2023-02-21 08:26:05 +08:00 via iPhone
这个很需要
|
3
artee 2023-02-21 08:28:51 +08:00
```
❯ brew scan-leftovers ==> 0 casks to scan ... ==> Installed from cask: ==> Installed from other ways: ``` 这是和 `homebrew` 使用 json 来更新包有关系? |
4
hcsu 2023-02-21 08:30:13 +08:00
谢谢
|
6
artee 2023-02-21 08:41:22 +08:00 1
```
❯ brew list --cask alacritty font-lxgw-wenkai omniplan android-studio font-ubuntu-mono-nerd-font openmtp anki font-ubuntu-nerd-font raycast bartender fork shottr calibre google-chrome sloth chatgpt handbrake squirrel clashx-pro iina stretchly dash insomnia telegram drawio intellij-idea temurin firefox iterm2 topnotch fluor keka typora font-dejavu-sans-mono-nerd-font microsoft-office visual-studio-code font-fira-code-nerd-font microsoft-remote-desktop wireshark font-fira-mono-nerd-font obsidian zerotier-one font-jetbrains-mono-nerd-font omnigraffle zoom ``` 并不是,https://brew.sh/2023/02/16/homebrew-4.0.0/ 开始就可以不要下载 cask 的 git repo 了 @jybox |
7
jybox OP 好吧,原来 4.0.0 是上周才发布的,看来需要适配一下
|
8
Ritter 2023-02-21 09:25:17 +08:00
Error: Unable to remove some files. Please enable Full Disk Access for your terminal under System Preferences → Security & Privacy → Privacy → Full Disk Access.
Error: exit 要打开完全访问么 应该选择哪个应用程序 |
10
Achieve7 2023-02-21 10:22:17 +08:00
上周 Homebrew 更新了 4.0.x, 貌似需要适配一下
|
11
guanguans 2023-02-21 10:29:57 +08:00
这个很有用,已 star 。
|
12
Abirdcfly 2023-02-21 10:30:52 +08:00 1
感谢感谢,大部分情况下是很有用的。
很小部分情况下似乎有点问题,比如 jetbrains 系列都出现了,但是这些都是通过 https://www.jetbrains.com/toolbox-app/ 正常安装正在使用的。 |
13
SimonOne 2023-02-21 11:05:04 +08:00
OP ,卸载的软件信息留存在哪的?
有些软件我在 brew 卸载了,然后单独安装了,也出现了,我想去 brew 了去掉卸载的信息,不然每次扫出来挺难看的。 |
14
hackpro 2023-02-21 11:59:08 +08:00
>>> brew tap jysperm/leftover-scanner
==> Tapping jysperm/leftover-scanner Cloning into '/usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner'... remote: Enumerating objects: 28, done. remote: Counting objects: 100% (28/28), done. remote: Compressing objects: 100% (20/20), done. remote: Total 28 (delta 3), reused 28 (delta 3), pack-reused 0 Receiving objects: 100% (28/28), 409.01 KiB | 1.36 MiB/s, done. Resolving deltas: 100% (3/3), done. Tapped 1 command (14 files, 852.5KB). >>> brew scan-leftovers Error: uninitialized constant CaskUnreadableError /usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner/cmd/brew-scan-leftovers.rb:22:in `rescue in block in get_all_casks' /usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner/cmd/brew-scan-leftovers.rb:21:in `block in get_all_casks' /usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner/cmd/brew-scan-leftovers.rb:20:in `map' /usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner/cmd/brew-scan-leftovers.rb:20:in `get_all_casks' /usr/local/Homebrew/Library/Taps/jysperm/homebrew-leftover-scanner/cmd/brew-scan-leftovers.rb:77:in `<top (required)>' /usr/local/Homebrew/Library/Homebrew/utils.rb:93:in `require' /usr/local/Homebrew/Library/Homebrew/utils.rb:93:in `require?' /usr/local/Homebrew/Library/Homebrew/brew.rb:95:in `<main>' 大佬可以帮忙看看是啥问题吗 |
15
SilencerL 2023-02-21 12:24:23 +08:00 via iPhone 1
看到 OP 遥想当年的 RPHOST……那时候我才初中吧好像,转眼我都快 30 了 mmp ,不过 OP 应该也快 30 了
|
16
zhangxu1621 2023-02-21 13:15:21 +08:00
brew autoremove 不是也可以删除残留的依赖文件的吗
|
17
pota 2023-02-21 14:10:46 +08:00
卧槽。不扫不知道。之前一直用 appcleaner 还有这么多残留
|
18
ljsh093 2023-02-21 15:28:17 +08:00 1
报个问题,如果终端分辨率不够宽的话,brew 后面的命令输出不全,出现如 brew unin 的情况
|
19
norcm 2023-02-21 17:14:28 +08:00
🐂🍺,有用,感谢 OP !
|
20
zuisong 2023-02-21 17:36:23 +08:00
谢谢, 很有用
|
21
jybox OP |
22
GoRoad 2023-02-22 10:16:22 +08:00 1
确实会出现命令打印不全的情况,比如 `brew uninstall --cask dbeaver-enterprise` ,只打印到了 `brew uninstall -f --zap dbeaver-enterpr`,而且这种情况挺常见
|
23
Yuusha 2023-02-23 23:25:36 +08:00 1
确实,经常有出现 brew uni 、brew uninsta 这种情况,希望大佬修复一下
|
24
SimonOne 2023-02-24 11:16:15 +08:00
@jybox #21 有一个 bug ,我的 clashx pro ( brew 的是 clashx ,不同名)的文件被扫出来是 clashx 的残留,但其实我没装 clashx 。bartender 3 被扫出来有残留,但 bartender 3 是我安装包手动安装的。
这两个情况在我全新安装系统的 mac mini 也复现了,所以应该不是我先通过 brew 安装软件再卸载再自行安装包安装导致的。 |
25
Comyn 2023-02-26 01:33:41 +08:00 1
很赞,但确实也遇到了命令打印不全的问题,以及已经按提示卸载但还是扫描出来的问题
|