检测是否安装了自制软件包

时间:2013-12-27 14:24:10

标签: bash shell homebrew

我即将编写一个shell脚本来检测系统中是否安装了几个自制软件包。有没有办法使用brew命令来实现它?

我尝试使用brew install <formula> --dry-run的退出代码。但是如果它丢失了,那就构建了这个包。

4 个答案:

答案 0 :(得分:131)

您可以使用

brew ls --versions myformula

输出相应公式的已安装版本。如果未安装公式,则输出将为空。

当使用最新版本的自制软件时,你可以使用brew update获得,你可以运行它(感谢Slaven):

if brew ls --versions myformula > /dev/null; then
  # The package is installed
else
  # The package is not installed
fi

也就是说,检查工具的存在可能是一个好主意,而不仅仅是检查相应的自制软件包(例如通过在$PATH中搜索可执行文件)。人们倾向于在实践中以相当多的方式安装工具,而自制软件只是其中之一。

答案 1 :(得分:6)

怎么样?

for pkg in macvim ngrep other needed packages; do
    if brew list -1 | grep -q "^${pkg}\$"; then
        echo "Package '$pkg' is installed"
    else
        echo "Package '$pkg' is not installed"
    fi
done

答案 2 :(得分:1)

# install if we haven't installed any version
brew ls --versions $lib || brew install $lib
# install if we haven't installed latest version
brew outdated $lib || brew install $lib

答案 3 :(得分:1)

最简单的两线: 第一步,确保已安装

$ realpath . || brew install coreutils

这将打印出当前目录的真实路径,如果没有,则将其安装。 即使没有找到真实路径,它也不会失败。

第二步,在您的实际代码中调用它:

$ realpath ${someDir}
相关问题