我如何判断一个构建是否基于Debian?


9

我开始使用带有自定义(小型)Linux构建的包装盒。如何确定这是基于Debian还是基于Red Hat的版本?

到目前为止,这是我所知道的:

$ cat /proc/version
Linux version 2.6.31-2.5 (build@build-desktop) (gcc version 4.4.3 (Broadcom stbgcc-4.4.3-1.2) ) #7

$ apt-get
-sh: apt-get: command not found

$ yum
-sh: yum: command not found

为什么lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-?? 刚运行lsb_release -si

Answers:


2

运行uname -a应该为您提供有关系统的一些常规信息。另外,您可以运行apropos "package manager"或使用类似的关键字来希望找到有关程序包管理器的更多信息。寻找/etc一个文件,该文件应该在xyz-release哪里xyz运行发行版。


这是我在运行uname -a时得到的:$ uname -a Linux 10.0.1.46 2.6.31-2.5#7 Thu Dec 15 15:57:09 CST 2011 mips GNU / Linux
Sparky1'1

@ Sparky1然后,看来您已经获得了Linux-MIPS发行版。

7

为了测试Debian系统,可以检查是否/etc/debian_version存在:

if [ -f "/etc/debian_version" ]; then
   # do stuff
fi

它应该包括Debian以及基于它的系统(包括Ubuntu及其衍生版本),尽管有些可能没有它-在这种情况下,您可以检查/etc/*release文件:

if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
   # do stuff
fi

在哪里debian|buntu|mint可以找到发行版本名称列表(不区分大小写)-您可以从这里了解一些常见的衍生版本,尽管像Ubuntu 这样的 debian衍生版本也有自己的衍生版本


对于基于RedHat的系统,衍生产品使用更大范围的文件,并且可能未安装lsb-release-因此您可以应用以下方法:

  • 从获取版本名称

    lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
    
  • 检查文件中的DISTRIB-ID- lsb-release一种“ Fallback方法,在现代系统上可能是不必要的”,而且该文件在Fedora上显然丢失,并且在OpenSUSE上不包含DISTRIB_ID

  • 检查是否存在以下某些内容

    • /etc/fedora-release和/或/etc/redhat-releaseRedHat或Fedora
    • /etc/SuSE-release 对于SuSe
    • /etc/mandriva-release 对于曼陀罗
  • 使用与后一种debian类似的方法:

    if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
    ...
    

我从Google Chrome的更新计划中获得了前三点,因此您可以检查一下以了解更多信息(它还决定了程序包管理器)


对于更广泛的操作系统,阅读有关SO的文章应该会有所帮助。


2

检查以下内容的输出:

lsb_release -a

和:

cat /etc/issue

您还可以检查rpmRedHat和dpkgDebian的更多低杠杆软件包命令。


找不到$ dpkg命令$ rpm(显示rpm命令的选项)。看起来像是一个基于红色帽子的构建。谢谢您的帮助!
Sparky1 2012年

2
您还可以检查/ etc / debian_version文件,该文件存在于所有基于debian的Linux发行版中
Coren

apt-get install lsb-release如果尚未安装,请使用进行安装。
Massood Khaari '16

1

如果是嵌入式设备(例如,SoHo路由器),则可能不会是任何“桌面/服务器”发行版。我会尝试查看设备的手册,制造商的网站(应该有GPL许可代码的来源)以及整个Web。


0

uname -acat /proc/version只读超级用户),在我的真实想法,是唯一正确的答案,这个问题的休息-样lsb_release/etc/issuecat /proc/sys/kernel/version-不可/每个系统(甚至没有正式的Debian发行版)上无法使用。也不要打扰使用/etc/*releases/etc/*version因为可以更改它们。后者并非在所有Debian发行版中都可用。

其他选择可能是(不是我的建议):

  • 检查dash或验证是否sh链接到dash它(它应该是运行脚本的默认值)
  • 通过执行检查包管理器 >/dev/null 2>&1 dpkg --version && { ... }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.