找出我必须在Linux系统上安装的软件包

时间:2015-08-05 12:43:52

标签: bash command-line rpm deb

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

  1. x86.deb
  2. x86.rpm
  3. x86_64.deb
  4. x86_64.rpm
  5. 我知道何时手动安装Linux服务器上的哪个软件包,但我想“自动”(在我的bash脚本中)找到我必须安装的软件包。

    有没有命令要找出来? 我已经知道有一种方法可以通过“arch”命令找出架构(32位或64位),但我不知道如何找出我需要的软件包。

1 个答案:

答案 0 :(得分:0)

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

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

dpkg -S /bin/ls

将打印

coreutils: /bin/ls

在基于DEB的系统上。

rpm -q -f /bin/ls

将打印

coreutils-5.97-23.el5_6.4

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

关于"错误"系统中的每一个都会给出错误信息。

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

当然这一切只有在你知道该怎么办的情况下才有意义,我。即如果您知道哪个软件包系统要安装在哪个软件包系统上。