Linux

確定 OEL linux 機器的作業系統版本?

  • October 13, 2017

確定作業系統版本的常用方法似乎正在查看

/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操作。

引用自:https://serverfault.com/questions/625621