如何实现brew软件包的安装或升级?

3
我想使用bash安装brew配方或升级已经安装的brew配方。
该命令只有在最后未安装配方时才返回非零退出代码。
PS. 需要注意的是,如果xxx已经安装,则brew install xxx会返回错误代码。

相关内容:https://dev59.com/2mIi5IYBdhLWcg3w8AFy - sobolevn
1个回答

1
背景: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
> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接