Bash 脚本 - 确定供应商并安装系统(apt-get、yum 等)



我正在编写一个用于各种Linux平台的shell脚本。脚本的一部分会安装几个包。我如何确定 Linux 供应商和默认系统安装机制,例如 Debian/Ubuntu 有 apt-get/apt,Fedora 有 yum 等等......

提前致谢

你真的不需要检查供应商,因为他们可能会决定改变打包系统(不太可能,但从概念上讲,你必须确保对于你测试的每个发行版,你尝试正确的包管理器命令)。您所要做的就是测试安装本身:

  YUM_CMD=$(which yum)
  APT_GET_CMD=$(which apt-get)
  OTHER_CMD=$(which <other installer>)

然后可能按照您的偏好顺序对它们进行排序:

 if [[ ! -z $YUM_CMD ]]; then
    yum install $YUM_PACKAGE_NAME
 elif [[ ! -z $APT_GET_CMD ]]; then
    apt-get $DEB_PACKAGE_NAME
 elif [[ ! -z $OTHER_CMD ]]; then
    $OTHER_CMD <proper arguments>
 else
    echo "error can't install package $PACKAGE"
    exit 1;
 fi

如果你想要一个故障安全脚本,你可以看看Gentoo(或类似于Yocto或OpenEmbedded的框架)如何提供甚至获取源代码(使用wget)和从头开始构建的方法。

#!/bin/bash
set -ex
OS=$(uname -s | tr A-Z a-z)
case $OS in
  linux)
    source /etc/os-release
    case $ID in
      debian|ubuntu|mint)
        apt update
        ;;
      fedora|rhel|centos)
        yum update
        ;;
      *)
        echo -n "unsupported linux distro"
        ;;
    esac
  ;;
  darwin)
    brew update
  ;;
  *)
    echo -n "unsupported OS"
    ;;
esac

最新更新