首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出我必须安装在Linux系统上的软件包。

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

Stack Overflow用户
提问于 2015-08-05 12:43:51
回答 1查看 658关注 0票数 3

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

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

我知道何时手动安装哪个Linux服务器包,但我想找出“自动”(在bash脚本中)我必须安装哪个包。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 13:42:15

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

通过询问安装了/bin/ls的两个包,您可能会发现您的系统是基于RPM还是基于DEB (例如Ubuntu是基于DEB的)。

代码语言:javascript
复制
dpkg -S /bin/ls

将打印

代码语言:javascript
复制
coreutils: /bin/ls

基于DEB的系统。

代码语言:javascript
复制
rpm -q -f /bin/ls

将打印

代码语言:javascript
复制
coreutils-5.97-23.el5_6.4

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

在“错误”系统中,每一个都会给出一个错误消息。

代码语言:javascript
复制
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

当然,所有这些只有在你知道该怎么做的情况下才有意义,也就是说,如果你知道要在哪个软件包系统上安装哪个体系结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31832909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档