bash - 如何为 brew 配方实现安装或升级?

标签 bash homebrew

如果已经使用 bash 安装,我想安装一个 brew 配方或升级它。

仅当最后未安装配方时,该命令才应返回非零退出代码。

附言。如果 xxx 已经安装,应该注意 brew install xxx 返回错误代码。

最佳答案

背景:https://github.com/Homebrew/legacy-homebrew/issues/30939

我也刚好需要这个。这似乎有效。

#!/usr/bin/env bash

package=$1
pkg_installed=false
pkg_updated=false
verbose=true

# TODO: ensure valid input

brew update >/dev/null 2>&1
list_output=`brew list | grep $package`
outdated_output=`brew outdated | grep $package`

# now enable error checking
set -e

if [[ ! -z "$list_output" ]]; then
    pkg_installed=true
    $verbose && echo "package is installed"
    if [[ -z "$outdated_output" ]]; then
        pkg_updated=true
        $verbose && echo "package is updated"
    else
        $verbose && echo "package is not updated. updating..."
        brew upgrade $package
    fi
else
    $verbose && echo "package is not installed. installing..."
    brew install $package
fi

用法:

> brew outdated
jemalloc (4.3.0) < 4.3.1
terraform (0.7.9) < 0.7.10
> brew_install_or_upgrade.sh jemalloc; echo $?
package is installed
package is not updated. updating...
==> Upgrading 1 outdated package, with result:
jemalloc 4.3.1
==> Upgrading jemalloc
==> Downloading https://homebrew.bintray.com/bottles/jemalloc-4.3.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring jemalloc-4.3.1.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/jemalloc/4.3.1: 16 files, 1.4M
0
> brew_install_or_upgrade.sh jemalloc; echo $?
package is installed
package is updated
0
> 

关于bash - 如何为 brew 配方实现安装或升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39037601/

相关文章:

shell - brew install fbsimctl - SHA256 不匹配

macos - 如何为 Mac 安装 python3.4-dev?

linux - 如果在反引号中为变量分配命令表达式会发生什么

Bash:读取输入可用(是否按下任何键?)

linux - 如何在不键入 bash 的情况下运行 shell 脚本(bash 命令错误 :mapfile not found)

ansible - 如何使用 brew 在 mac os 上安装 ansible-galaxy?

bash - 如何避免在此 bash 函数中使用 "for"循环?

bash - 如何在 bash 中生成笛卡尔积?

macos - iconutil错误: "Unsupported image format"

python - 从 sudo rm -R/System/Library/Frameworks/Python.framework/Versions/2.7 恢复