確定 OEL linux 機器的作業系統版本?
確定作業系統版本的常用方法似乎正在查看
/etc/*-release file
*這裡將是特定版本的作業系統所屬的系列。但是在 OEL 系統上,存在以下文件並且它們似乎都返回了有效的發布版本,在這種情況下是否有確定作業系統發布版本詳細資訊的明確方法:
cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.8 (Tikanga) cat /etc/enterprise-release Enterprise Linux Enterprise Linux Server release 5.8 (Carthage) cat /etc/oracle-release Oracle Linux Server release 5.8 cat /etc/*release* Enterprise Linux Enterprise Linux Server release 5.8 (Carthage) Oracle Linux Server release 5.8 Red Hat Enterprise Linux Server release 5.8 (Tikanga)
僅在上述文件不返回有效值的情況下使用下面提到的替代方法:
lsb_release -a returns the same output as returned by enterprise-release
更新 1:執行上下文
/etc/-release 文件作為程式解決方案的一部分進行檢查, 的值由可以具有以下值的虛擬文件提供:
asianux,企業,mandrake,redhat,UnitedLinux,Suse,SuSE
取決於上述場景中出現的順序,因為企業首先出現,所以查詢 /etc/enterprise-release 文件以查找作業系統版本如果順序是其他情況,redhat 出現在企業 /etc/redhat-release 之前。
這似乎不是一個可行的解決方案,因此尋求其他更明確的方法來確定作業系統的版本。
lsb_release -a
請參閱Linux 標準基礎文件
根據您的問題,您提到這是一種替代方法,以防上述方法不起作用。您應該
lsb_release
首先使用它,因為它是標準。它還應該返回比
enterprise-release
命令更多的資訊,特別是 LSB 版本行(例如,lsb_release -v
)
(Mandrake、AsianUX 和 UnitedLinux 是否仍然足以證明新軟體的兼容性?)
一定要查看以下建議:我使用的是什麼版本的 RHEL?
但除此之外,如果您對將部署此軟體的系統有一些控制權,請查看事實。如果這是將在您不管理的系統上傳遞和執行的軟體,那麼您可能必須處理作業系統檢測。如果是您的公司/環境,
facter
是最乾淨的方法。在處理 RHEL 及其衍生產品時,重要的是要知道分發生命週期努力保持次要版本之間的兼容性。例如,軟體應該能夠在 *EL5.4、5.8 和 5.10 上執行。不過,我認為這不是您的問題,因為您可能只關心作業系統“家族”。
查看
facter
以下三個系統的輸出。# facter operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily operatingsystem => RedHat operatingsystemmajrelease => 5 operatingsystemrelease => 5.8 osfamily => RedHat
和
# facter operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily operatingsystem => CentOS operatingsystemmajrelease => 5 operatingsystemrelease => 5.9 osfamily => RedHat
和
# facter operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily operatingsystem => CentOS operatingsystemmajrelease => 6 operatingsystemrelease => 6.5 osfamily => RedHat
它們是 CentOS 和 RHEL,版本 5.8、5.9 和 6.5。但我認為您可能只關心它們是 RedHat 的衍生產品。我會使用的
osfamily
,也許是operatingsystemmajrelease
事實。看看使用的作業系統檢測常式
facter
…… https://github.com/puppetlabs/facter/blob/master/lib/facter/operatingsystem/linux.rb剪斷
if FileTest.exists?("/etc/enterprise-release") if FileTest.exists?("/etc/ovs-release") operatingsystem = "OVS" else operatingsystem = "OEL" end elsif FileTest.exists?("/etc/redhat-release") operatingsystem = get_redhat_operatingsystem_name
剪斷
def get_redhat_operatingsystem_name txt = File.read("/etc/redhat-release") matches = { "CentOS" => "centos", "Scientific" => "Scientific", "CloudLinux" => "^cloudlinux", "PSBM" => "^Parallels Server Bare Metal", "Ascendos" => "Ascendos", "XenServer" => "^XenServer", "XCP" => "XCP" }
簡而言之,Oracle Enterprise Linux 檢測完全取決於
/etc/enterprise-release
.[root@xt ~]# facter osfamily RedHat [root@xt ~]# facter operatingsystem CentOS [root@xt ~]# touch /etc/enterprise-release [root@xt ~]# facter operatingsystem OEL
因此,您以正確的方式執行此操作,或者至少以相同的方式執行此
facter
操作。