我开始使用一个带有自定义(小型)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
Run Code Online (Sandbox Code Playgroud)
对于 Debian 系统的测试,您可以检查是否/etc/debian_version
存在:
if [ -f "/etc/debian_version" ]; then
# do stuff
fi
Run Code Online (Sandbox Code Playgroud)
它应该包含在 Debian 和基于它的系统(包括 Ubuntu 及其衍生产品)中,尽管有些可能没有 - 在这种情况下,您可以检查/etc/*release
文件:
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
# do stuff
fi
Run Code Online (Sandbox Code Playgroud)
debian|buntu|mint
要查找的发行版名称列表在哪里(不区分大小写) - 您可以从这里了解一些常见的衍生产品,尽管像 Ubuntu这样的debian 衍生产品有它们自己的衍生产品。
对于基于 RedHat 的系统,衍生版本使用更大范围的文件,并且可能没有安装 lsb-release - 因此您可以应用以下方法:
从
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
Run Code Online (Sandbox Code Playgroud)检查文件中的 DISTRIB-ID lsb-release
- 一种“现代系统上可能不需要的后备方法”,该文件在 Fedora 上显然丢失,并且在 OpenSUSE 上不包含 DISTRIB_ID
检查是否存在以下某些内容
/etc/fedora-release
和/或/etc/redhat-release
RedHat 或 Fedora/etc/SuSE-release
为SuSe/etc/mandriva-release
对于曼德里瓦/玛吉亚使用与后一种 debian 类似的方法:
if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
...
Run Code Online (Sandbox Code Playgroud)我从 Google Chrome 的更新 cron 中获取的前 3 点,因此您可以检查以了解更多信息(它也决定了包管理器)
对于更广泛的操作系统,阅读这篇关于 SO 的文章应该会有所帮助。
小智 3
运行uname -a
应该会为您提供一些有关系统的一般信息。此外,您可以apropos "package manager"
使用类似的关键字运行 或 ,以期找到有关包管理器的更多信息。查找名为where/etc
的文件,该文件应该是正在运行的任何发行版。xyz-release
xyz
归档时间: |
|
查看次数: |
16618 次 |
最近记录: |