web-dev-qa-db-ja.com

OEL LinuxボックスのOSバージョンを確認しますか?

OSのバージョンを確認する通常の方法は表示されているようです

/etc/*-release file 

*ここに、OSの特定のバージョンが属するファミリがあります。しかし、OELシステムでは、次のファイルが存在し、それらすべてが有効なリリースバージョンを返しているようです。このような状況では、OSリリースバージョンの詳細を決定する明確な方法があります。

 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、エンタープライズ、マンドラケ、redhat、UnitedLinux、Suse、SuSE

エンタープライズが最初に表示されるため、上記のシナリオの出現順序に応じて/ etc/enterprise-releaseファイルが照会され、OSのバージョンが検索されます。

これは実行可能な解決策ではないようです。そのため、OSのバージョンを決定するためのより明確な方法を模索しています。

3
bhavs
lsb_release -a

Linux Standard Baseドキュメントを参照してください

あなたの質問によれば、あなたは上記がうまくいかない場合の代替としてこれを言及します。これは標準なので、最初にlsb_releaseを使用する必要があります。

また、enterprise-releaseコマンドよりも多くの情報、具体的にはLSBバージョン行(たとえば、lsb_release -v)を返す必要があります。

7
Ian Macintosh

Mandrake、AsianUX、およびUnitedLinuxは、まだ新しいソフトウェアとの互換性を証明するのに十分ですか?

提案を必ず確認してください: 使用しているRHELのバージョンは?

ただし、このソフトウェアの展開先のシステムをある程度制御している場合は、 facter を参照してください。これが出荷され、管理していないシステムで実行されるソフトウェアである場合は、OS検出を処理する必要がある可能性があります。それがである場合会社/環境の場合、facterが最もクリーンな方法です。

RHELとその派生物を扱う場合、ディストリビューションのライフサイクルがマイナーリリース間の互換性を維持するよう努めていることを理解することが重要です。したがって、ソフトウェアは、たとえば* EL5.4、5.8、および5.10で実行できる必要があります。ただし、OSの「ファミリ」のみを気にするので、ここではそれはあなたの問題ではないと思います。

次の3つのシステムからの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が使用するOS検出ルーチンを見てみましょう... https://github.com/puppetlabs/facter/blob/master/lib/facter/operatingsystem/linux.rb

snip

      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

snip

  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と同じ方法です。

5
ewwhite

すべての主要なディストリビューションで機能する確定的/標準的な方法はありません。 (各ディストリビューションがどのようにこの情報を利用可能にするかを理解する方法に基づいて)知識を最大限に活用するには、追加のコードを使用する必要があります。

これがインストールスクリプトの場合は、ユーザーが手動で指定するオプションを提供します。あなたがスーパーニースになりたい場合は、それを自分で理解して、確認を求めてください。

これが物事をチェックする(したがって、それらを見つけるために別の場所を調べる必要がある)プログラムの場合は、構成ファイルのオプションまたはコマンドラインオプションを指定して、使用するディストリビューションを指定します。

提供される他のソリューションは素晴らしいですが、どこでも利用できるわけではないコード/パッケージ(特に、環境に関する情報を収集するための最も完全なツールであるfacter)に依存します。

3
uname -a 

(すべての情報を印刷)

uname -r 

(カーネル名を出力)

cat /etc/issue
cat /etc/redhat-release
lsb_release –a
tail /etc/redhat-releas
0
Vitalie Bancu