生成包的脚本

生成包的脚本

我正在尝试编写一个 bash 函数来检查是否安装了软件包并在需要时安装它。现在无论如何它总是会安装。

install() {
    echo "checking if $1 is already installed"
    if [[ ! $(equery -q l $1 | grep -q "$1") ]]
    then
        emerge -v $1
    else
        echo "$1 is already installed"
    fi
}

install "oracle-jdk-bin"
  • 的输出equery -q l $1dev-java/oracle-jdk-bin-1.8.0.45
  • grep 应该找到 oracle-jdk-bin 并返回 1

答案1

使用emerge 的“noreplace”选项怎么样?

描述:“跳过在命令行上指定的已安装的软件包。如果没有此选项,您在命令行上指定的任何软件包原子或软件包集都会导致 Portage 重新合并该软件包,即使它已经安装了。请注意,默认情况下,Portage 不会重新合并依赖项,此选项可用于更新世界文件而不重建软件包。”,摘自。https://dev.gentoo.org/~zmedico/portage/doc/man/emerge.1.html

相关内容