找出我必须在 Linux 系统上安装哪个包

Find out which package I have to install on a Linux system

我制作了一个bash脚本来在Linux系统上安装一个软件包。 我可以使用 4 个软件包来安装软件:

  1. x86.deb
  2. x86.rpm
  3. x86_64.deb
  4. x86_64.rpm

我知道什么时候在哪个 Linux 服务器上手动安装哪个软件包,但我想知道 "automatically"(在我的 bash 脚本中)我必须安装哪个.

有什么命令可以查到吗? 我已经知道有一种方法可以通过 "arch" 命令找出架构(32 位或 64 位),但我不知道如何找出我需要的包。

uname -march 为您提供架构(x86_64 或类似)。

您可能可以通过询问安装了哪个软件包的两个变体来确定您的系统是基于 RPM 还是 DEB(例如 Ubuntu 是基于 DEB)/bin/ls:

dpkg -S /bin/ls

将打印

coreutils: /bin/ls

在基于 DEB 的系统上。

rpm -q -f /bin/ls

将打印

coreutils-5.97-23.el5_6.4

基于 RPM 的系统(可能具有不同的版本号)。

在 "wrong" 系统上,每一个都会给出一条错误消息。

if dpkg -S /bin/ls >/dev/null 2>&1
then
  case "$(arch)" in
    x86_64)
      sudo dpkg -i x86_64.deb;;
    i368)
      sudo dpkg -i x86.deb;;
    *)
      echo "Don't know how to handle $(arch)"
      exit 1
      ;;
  esac
elif rpm -q -f /bin/ls >/dev/null 2>&1
then
  case "$(arch)" in
    x86_64)
      sudo rpm -i x86_64.rpm;;
    i368)
      sudo rpm -i x86.rpm;;
    *)
      echo "Don't know how to handle $(arch)"
      exit 1
      ;;
  esac
else
  echo "Don't know this package system (neither RPM nor DEB)."
  exit 1
fi

当然,所有这些只有在你知道该怎么做的情况下才有意义,我。 e.如果您知道要在哪个包系统上安装哪个包系统和哪个体系结构。