卸载/移除 Homebrew 软件包及其所有依赖项

15 浏览
0 Comments

卸载/移除 Homebrew 软件包及其所有依赖项

我有一个Homebrew的公式,我希望卸载/删除它以及所有依赖项,跳过其他软件包依赖的软件包(在软件包管理器的术语中称为级联软件包卸载)。

例如:卸载依赖于软件包 bc 的软件包 a,而软件包 d 也依赖于软件包 c。 结果应该卸载 ab,跳过 c

我该怎么办?

必须有一种方法可以卸载软件包而不留下多余的垃圾。

admin 更改状态以发布 2023年5月23日
0
0 Comments

到2020年底,Homebrew团队添加了一个简单的命令brew autoremove,用于删除所有未使用的依赖项。

首先,卸载软件包:

brew uninstall

然后,删除所有未使用的依赖项:

brew autoremove

0
0 Comments

编辑:

看起来使用称为brew rmdepsbrew rmtree的外部命令现在解决了这个问题。

要安装和使用,请执行以下命令:

$ brew tap beeftornado/rmtree
$ brew rmtree 

有关更多信息和讨论,请参见上面的链接。


[编辑]在https://stackoverflow.com/a/66719581/160968中查看新命令brew autoremove


原始答案:

目前似乎没有轻松的方法可以实现此目标。

然而,我在Homebrew的GitHub页面上提出了问题,有人建议一个临时解决方案,直到他们添加一个专用命令来解决此问题。

有一个称为brew leaves外部命令,可以打印出所有不是其他程序包的依赖项的程序包。

如果你对brew leavesbrew deps 的输出进行逻辑操作,你可能会得到一个孤立的依赖项程序包的列表,之后可以手动卸载。结合xargs使用,您可能会得到所需的结果(未经测试,请勿依赖此结果)。


编辑:有人刚刚提出了一个非常类似的解决方案,使用join代替xargs

brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))

更多信息请参见上述问题的评论。

0