递归卸载 Homebrew 软件包以及依赖于它的所有内容(又名卸载依赖项;卸载 rdepends;级联删除)

问题描述 投票:0回答:1

对于 CI 任务,我需要在不存在某些 Homebrew 软件包的环境中运行命令(在我的例子中,

[email protected]
openssl@3
readline
)。这些软件包预安装在我使用的 Github CI 运行程序中,许多其他预安装的软件包都依赖于它们。

虽然我可以使用

brew uninstall --ignore-dependencies
,但这会破坏所有依赖包,如果碰巧涉及其中任何一个,这将破坏我的 CI 工作。虽然我也可以追踪它,但这并不是面向未来的。

因此,我宁愿递归地卸载上述软件包以及依赖于它们的所有内容(实际上,与卸载/删除 Homebrew 软件包(包括其所有依赖项)相反)。

似乎没有内置的

brew

 子命令。因为我可能不是第一个执行此任务的人 - 也许有一个 Homebrew 插件命令?我没找到。

homebrew package-management dependency-tree
1个回答
0
投票
我编写了以下脚本,称之为“

brew-uninstall-cascade.sh

”:

#!/bin/bash declare -a packages rdepends packages=("$@") # have to try one by one, otherwise `brew uses` would only print # packages that require them all rather than any of them for package in "${packages[@]}"; do rdepends+=($(brew uses --installed --include-build --include-test --include-optional --recursive "$package")) done brew uninstall "${packages[@]}" "${rdepends[@]}"
    
© www.soinside.com 2019 - 2024. All rights reserved.