我用 Homebrew Cask 中社区维护的规则写了一个软件残留文件清理插件

2023-02-21 07:22:26 +08:00
 jybox

之前我就在 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 来删除,所以不必担心误删。

3944 次点击
所在节点    分享创造
26 条回复
steveshi
2023-02-21 08:08:23 +08:00
666 这个确实很强,不过会莫名其妙扫出来我安装的 mpv 和 pycharm
Yuusha
2023-02-21 08:26:05 +08:00
这个很需要
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 来更新包有关系?
hcsu
2023-02-21 08:30:13 +08:00
谢谢
jybox
2023-02-21 08:30:51 +08:00
@artee 看起来可能是你没有使用过 Homebrew Cask ?所以本地没有 Cask 的数据库(它叫 Tap )。
artee
2023-02-21 08:41:22 +08:00
```
❯ 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
jybox
2023-02-21 08:45:25 +08:00
好吧,原来 4.0.0 是上周才发布的,看来需要适配一下
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
要打开完全访问么 应该选择哪个应用程序
jybox
2023-02-21 10:20:06 +08:00
@Ritter 开给你你的 Terminal
Achieve7
2023-02-21 10:22:17 +08:00
上周 Homebrew 更新了 4.0.x, 貌似需要适配一下
guanguans
2023-02-21 10:29:57 +08:00
这个很有用,已 star 。
Abirdcfly
2023-02-21 10:30:52 +08:00
感谢感谢,大部分情况下是很有用的。

很小部分情况下似乎有点问题,比如 jetbrains 系列都出现了,但是这些都是通过 https://www.jetbrains.com/toolbox-app/ 正常安装正在使用的。
SimonOne
2023-02-21 11:05:04 +08:00
OP ,卸载的软件信息留存在哪的?
有些软件我在 brew 卸载了,然后单独安装了,也出现了,我想去 brew 了去掉卸载的信息,不然每次扫出来挺难看的。
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>'

大佬可以帮忙看看是啥问题吗
SilencerL
2023-02-21 12:24:23 +08:00
看到 OP 遥想当年的 RPHOST……那时候我才初中吧好像,转眼我都快 30 了 mmp ,不过 OP 应该也快 30 了
zhangxu1621
2023-02-21 13:15:21 +08:00
brew autoremove 不是也可以删除残留的依赖文件的吗
pota
2023-02-21 14:10:46 +08:00
卧槽。不扫不知道。之前一直用 appcleaner 还有这么多残留
ljsh093
2023-02-21 15:28:17 +08:00
报个问题,如果终端分辨率不够宽的话,brew 后面的命令输出不全,出现如 brew unin 的情况
norcm
2023-02-21 17:14:28 +08:00
🐂🍺,有用,感谢 OP !
zuisong
2023-02-21 17:36:23 +08:00
谢谢, 很有用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX