homebrew - 升级或安装 Homebrew 公式

标签 homebrew

在我的 CI 设置中,我想确保安装给定公式的最新版本,无论它是否已安装。

我目前正在使用类似的东西:

brew update
brew install FORMULA || (brew upgrade FORMULA && brew cleanup FORMULA)

这种方法有哪些缺陷?是否有更好的方法来解决该问题(例如,首先查询 FORMULA 是否已安装,而不是依赖 brew install 仅在 FORMULA 安装时失败)?

最佳答案

我想安装一个 Homebrew 软件包(如果它尚不存在),否则升级它,最好的解决方案是使用 Homebrew Bundle它是 Homebrew 家族的正式成员。如果这对您不起作用,并且您想推出自己的解决方案,您应该引用下面的建议。

除了已经安装的软件包之外,还有其他情况导致 brew install 可能失败。我不确定,但看起来 brew install 命令在失败时不会发出 1 以外的退出状态,因此您有两个选择:

  1. stderr 中搜索“未安装”并进行检查
  2. 使用不同的方法

我见过用于此目的的最常见方法是使用命令 brew ls --versions 检查软件包是否已安装:

function install_or_upgrade {
    if brew ls --versions "$1" >/dev/null; then
        HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade "$1"
    else
        HOMEBREW_NO_AUTO_UPDATE=1 brew install "$1"
    fi
}

如果您要安装多个软件包,则需要使用 HOMEBREW_NO_AUTO_UPDATE=1,这样 Homebrew 就不会在每次安装/升级之间尝试更新。

关于homebrew - 升级或安装 Homebrew 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619480/

相关文章:

node.js - 如何在 Mac 上修复 "node: command not found"? Node 是使用 homebrew 中的 nvm 安装的

macos - 酒窖的 Homebrew 大小

ruby - Lion OSX : How to install libfreetype. 6.dylib?

python - 通过 Homebrew 使用 python2 和 python3 的 virtualenv

macos - 错误:桶/桶已移动。点击自酿/ cask 代替

homebrew - 当我尝试 brew cleanup 时如何修复 "Error: Permission denied @ unlink_internal - .."

java - 使用 HomeBrew 安装 Java OpenJDK : why there are same versions of java on different locations?

linux - 我可以在 Ubuntu 上使用 Homebrew 吗?

osx-mountain-lion - 查看通过 Homebrew 安装的内容

mysql.server 重新启动给出错误消息