Debian

如何判斷建構是否基於 Debian?

  • March 22, 2020

我開始使用一個在其上建構了自定義(小型)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

執行uname -a應該會給你一些關於系統的一般資訊。此外,您可以執行apropos "package manager"或使用類似的關鍵字,希望能找到有關包管理器的更多資訊。查找/etc名為xyz-releasewherexyz應該是正在執行的任何發行版的文件。

對於 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-
  • 檢查lsb-release文件中的 DISTRIB-ID -“現代系統上可能不需要的備份方法”,Fedora 上顯然缺少該文件,並且在 OpenSUSE 上不包含 DISTRIB_ID

  • 檢查是否存在以下某些內容

    • /etc/fedora-release和/或/etc/redhat-releaseRedHat 或 Fedora
    • /etc/SuSE-release對於蘇硒
    • /etc/mandriva-release用於 mandriva / mageia
  • 使用與後一種 debian 類似的方法:

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

前 3 點來自 Google Chrome 的更新 cron,因此您可以檢查以了解更多資訊(它還確定包管理器)


對於更廣泛的作業系統,閱讀關於 SO 的這篇文章應該會有所幫助。

引用自:https://unix.stackexchange.com/questions/29981