我有一个Homebrew公式,我希望卸载/删除它的所有依赖项,跳过其他包依赖的包(也称为包管理器术语中的Cascading package removal )。
例如,卸载依赖于软件包b
和c
的package a
,其中package d
也依赖于package c
。结果应该会卸载a
和b
,跳过c
。
我该怎么做呢?
必须有一种方法来卸载一个包,而不会留下不必要的垃圾。
发布于 2011-09-07 19:44:06
编辑:
看起来像是the issue is now solved using an external command called brew rmdeps
or brew rmtree
。
要安装和使用,请发出以下命令:
$ brew tap beeftornado/rmtree
$ brew rmtree <package>
有关更多信息和讨论,请参阅上面的链接。
编辑请参阅https://stackoverflow.com/a/66719581/160968中的新命令brew autoremove
原始答案:
目前看来,还没有简单的方法来实现这一点。
然而,我filed an issue on Homebrew's GitHub page,有人建议了一个临时的解决方案,直到他们添加一个独占的命令来解决这个问题。
有一个名为brew leaves
的external command,它打印所有不依赖于其他包的包。
如果对brew leaves
和brew deps <package>
的输出执行逻辑和,可能只会得到孤立依赖包的列表,之后可以手动卸载这些依赖包。把它和xargs
结合起来,我想你会得到你需要的东西(未经测试,不要指望这个)。
编辑:有人刚刚提出了一个非常类似的解决方案,用join
代替xargs
brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))
有关更多信息,请参阅comment on the issue mentioned above。
发布于 2021-03-20 16:26:17
到2020年底,Homebrew团队添加了一个简单的命令 brew autoremove
来删除所有未使用的依赖项。
首先,卸载包:
brew uninstall <package>
然后,删除所有未使用的依赖项:
brew autoremove
发布于 2017-05-16 21:59:23
brew rmtree
doesn't work at all.从这个问题的链接中,我找到了rmrec,它实际上是有效的。天知道为什么brew
没有本机命令。
brew tap ggpeti/rmrec
brew rmrec pkgname
https://stackoverflow.com/questions/7323261
复制相似问题