Debian
如何判斷建構是否基於 Debian?
我開始使用一個在其上建構了自定義(小型)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-release
wherexyz
應該是正在執行的任何發行版的文件。
對於 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-release
RedHat 或 Fedora/etc/SuSE-release
對於蘇硒/etc/mandriva-release
用於 mandriva / mageia使用與後一種 debian 類似的方法:
if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then ...
前 3 點來自 Google Chrome 的更新 cron,因此您可以檢查以了解更多資訊(它還確定包管理器)
對於更廣泛的作業系統,閱讀關於 SO 的這篇文章應該會有所幫助。