卸载/移除 Homebrew 软件包及其所有依赖项
卸载/移除 Homebrew 软件包及其所有依赖项
我有一个Homebrew的公式,我希望卸载/删除它以及所有依赖项,跳过其他软件包依赖的软件包(在软件包管理器的术语中称为级联软件包卸载)。
例如:卸载依赖于软件包 b
和 c
的软件包 a
,而软件包 d
也依赖于软件包 c
。 结果应该卸载 a
和 b
,跳过 c
。
我该怎么办?
必须有一种方法可以卸载软件包而不留下多余的垃圾。
admin 更改状态以发布 2023年5月23日
编辑:
看起来使用称为brew rmdeps
或brew rmtree
的外部命令现在解决了这个问题。
要安装和使用,请执行以下命令:
$ brew tap beeftornado/rmtree $ brew rmtree
有关更多信息和讨论,请参见上面的链接。
[编辑]在https://stackoverflow.com/a/66719581/160968中查看新命令brew autoremove
原始答案:
目前似乎没有轻松的方法可以实现此目标。
然而,我在Homebrew的GitHub页面上提出了问题,有人建议一个临时解决方案,直到他们添加一个专用命令来解决此问题。
有一个称为brew leaves
的外部命令,可以打印出所有不是其他程序包的依赖项的程序包。
如果你对brew leaves
和brew deps
的输出进行逻辑与操作,你可能会得到一个孤立的依赖项程序包的列表,之后可以手动卸载。结合xargs
使用,您可能会得到所需的结果(未经测试,请勿依赖此结果)。
编辑:有人刚刚提出了一个非常类似的解决方案,使用join
代替xargs
:
brew rm FORMULA brew rm $(join <(brew leaves) <(brew deps FORMULA))
更多信息请参见上述问题的评论。