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

Linux Bash脚本-确定供应商并安装系统(apt-get、yum等),linux,bash,shell,installation,Linux,Bash,Shell,Installation,我正在编写一个用于各种linux平台的shell脚本。脚本的一部分安装了几个pachage。如何确定linux供应商和默认系统安装机制,例如Debian/Ubuntu有apt-get、Fedora-yum 提前感谢您实际上不需要检查供应商,因为他们可能会决定更改打包系统(不太可能,但从概念上讲,您必须确保对于您测试的每个发行版,您都尝试了正确的package manager命令)。您只需测试安装本身: YUM_CMD=$(which yum) APT_GET_CMD=$(which ap

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


提前感谢

您实际上不需要检查供应商,因为他们可能会决定更改打包系统(不太可能,但从概念上讲,您必须确保对于您测试的每个发行版,您都尝试了正确的package manager命令)。您只需测试安装本身:

  YUM_CMD=$(which yum)
  APT_GET_CMD=$(which apt-get)
  OTHER_CMD=$(which <other installer>)
YUM\u CMD=$(哪个YUM)
APT_GET_CMD=$(哪个APT GET)
其他_CMD=$(其中)
然后可能按照您的偏好顺序对其进行排序:

 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
if[[!-z$YUM_CMD]];然后
yum安装$yum\u程序包\u名称
elif[!-z$APT_GET_CMD];然后
apt获取$DEB\u包\u名称
elif[!-z$OTHER_CMD];然后
$OTHER_CMD
其他的
echo“错误:无法安装程序包$package”
出口1;
fi

如果您想要一个故障保护脚本,您可以看看gentoo(或类似于yocto或openembedded的框架)是如何提供方法来获取源代码(使用wget)并从头开始构建的。

您可以使用
/etc/lsb release
/etc/os release
找到linux发行版。不确定是否有办法找到包管理系统。您也许可以针对已知的发行版进行切换。@Vivek谢谢,我没有想到这一点,不过希望有一个现有的方法/命令来查找默认的安装程序。请注意,在RPM系统上有
apt get
(某种程度上是移植的etc版本)是可能的,DEB系统上的
yum
。如果我检查
apt-get
apt
是否存在差异?或者有两种情况我都应该检查,比如:
APT\u GET\u CMD=$(哪个APT GET)
APT\u CMD=$(哪个APT)
?在我提供答案时,只有APT GET。到今天为止,据我所知,如果apt可用,那么apt get也是如此,所以测试apt get是最普遍的。但这两种测试都没有坏处。