【问题标题】:Bash script - determine vendor and install system (apt-get, yum etc)Bash 脚本 - 确定供应商并安装系统(apt-get、yum 等)
【发布时间】:2013-10-20 13:06:24
【问题描述】:

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

提前致谢

【问题讨论】:

  • 您可以使用/etc/lsb-release/etc/os-release 找到Linux 发行版。不确定是否有办法找到包管理系统。您也许可以针对已知发行版使用 switch 案例。
  • @Vivek 谢谢,我没有想到这一点,但希望有一个现有的方法/命令可以找到默认安装程序。

标签: linux bash shell installation


【解决方案1】:

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

  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)并从头开始构建的方法。

【讨论】:

  • 请注意,在 RPM 系统上可能有(在某种程度上使用移植的 etc 版本)apt-get,在 DEB 系统上可能有yum
  • 如果我检查apt-getapt 有区别吗?或者在某些情况下我应该同时检查两者,例如:APT_GET_CMD=$(which apt-get)APT_CMD=$(which apt)
  • 在我提供那个答案的时候,只有 apt-get。到目前为止,据我所知,如果 apt 可用,那么 apt-get 也是如此,因此对 apt-get 的测试是最普遍的。不过,测试两者并没有什么坏处。
猜你喜欢
  • 2014-02-20
  • 2017-01-07
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2011-04-23
相关资源
最近更新 更多