我有一个Homebrew公式,我希望卸载/删除及其所有依赖项,跳过其他包所依赖的包(在包管理器中称为级联包删除)。
例如,卸载依赖于包b和c的包a,其中包d也依赖于包c。结果应该卸载a和b,跳过c。
我该怎么做呢?
必须有一种方法来卸载一个包而不留下不必要的垃圾。
我有一个Homebrew公式,我希望卸载/删除及其所有依赖项,跳过其他包所依赖的包(在包管理器中称为级联包删除)。
例如,卸载依赖于包b和c的包a,其中包d也依赖于包c。结果应该卸载a和b,跳过c。
我该怎么做呢?
必须有一种方法来卸载一个包而不留下不必要的垃圾。
当前回答
@jfmercer的答案必须稍微修改一下才能使用当前的brew,因为缺少brew的输出已经改变:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install
其他回答
这里的目标是删除给定的包及其依赖关系,而不破坏另一个包的依赖关系。我使用这个命令:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | xargs brew install
注:经过编辑以反映@alphadogg的有用评论。
为此,您可以使用UNIX管道
brew deps [FORMULA] | xargs brew rm
基于@jfmercer的回答(更正需要的不仅仅是评论)。
删除包的依赖项(不删除包):
brew deps [FORMULA] | xargs brew remove --ignore-dependencies
删除包:
brew remove [FORMULA]
重新安装丢失的库:
brew missing | cut -d: -f2 | sort | uniq | xargs brew install
在发现MeldMerge发布后测试卸载meld。
到2020年底,Homebrew团队添加了一个简单的命令酿造自动删除功能,以删除所有未使用的依赖项。
首先,卸载包:
酿造卸载<包>
然后,删除所有未使用的依赖项:
酿造autoremove
@jfmercer的答案必须稍微修改一下才能使用当前的brew,因为缺少brew的输出已经改变:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install