Hangi RHEL sürümünü kullanıyorum?


151

Kabuktan ve kök yetkileri olmadan, hangi Red Hat Enterprise Linux sürümünü kullandığımı nasıl belirleyebilirim?

İdeal olarak, hem büyük hem de küçük sürüm sürümlerini edinmek istiyorum, örneğin RHEL 4.0 veya RHEL 5.1, vb.

Yanıtlar:


154

Sen kullanabilirsiniz lsb_releaseçeşitli Linux dağıtımlarında komutu:

lsb_release -i -r 

Bu size Dağıtım ve Versiyonu söyleyecektir ve yönetici veya bir yazılım paketi tarafından değiştirilmiş veya değiştirilmemiş dosyalara erişimden biraz daha doğrudur. Birden fazla dağıtımda çalışmanın yanı sıra.

RHEL için kullanmanız gerekenler:

cat /etc/redhat-release

5
CentOS 5.4 kutumda komut bulunamadı :(
gbjbaanb

@gbjbaanb: Garip, yeni bir minimum 5.4 kurulumda test ettim ve gayet iyi çalıştı ...
Zypher

26
lsb_release -i -r-bash: lsb_release: komut bulunamadı. Ancak, cat /etc/redhat-releaseRed Hat Enterprise Linux Sunucusu 5.6'yı yayımladı (Tikanga)
Tom

7
Sadece kayıt için: RHEL 6.5 minimum kurulumda çalışmaz. Komut lsb_release bulunamadı.
sborsky

4
lsb_release hafif bir paket değildir, bazı render kitaplıklarına çeken bazı pdf çeviri topluluğunu çeken '/ usr / bin / lp' sağlamak için CUPS çeker ...
Jens Timmerman

142

Bunun gibi görünecek olan / etc / redhat-release içeriğine bakabilirsiniz:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

İçerik, gerçek bir RHEL sistemi için farklıdır. Bu teknik, CentOS, Fedora ve diğerleri dahil olmak üzere tüm RedHat türevlerinde çalışır.


14
Bu soruya en uygun cevap.
fsoppelsa

lsb_releasedenemek için ilk şey, ancak bu dosyalara bakarak yüklenmemiş olabilir çünkü iyi bir Plan B
civciv

1
@chicks Sorunun Redhat sistemleri için bir test istediği ve lsb_release'in redhat sistemlerine varsayılan olarak yüklenmediği ve / etc / redhat-release seçeneğinin bulunmadığı göz önüne alındığında, kesinlikle denenecek ilk şey lsb_release değildir!
güle güle

@bye Denemek için ilk şey (en azından benim görüşüme göre), her zaman önce tüm dağıtımlarda ortak olması gereken şeyleri denersiniz, sonra sadece dağıtıma özgü çözümlere geçersiniz.
Dennis Nolte,

25

/ Etc / issue dosyasını kullanmayı tercih ederim.

$ cat /etc/issue

/ Etc / redhat-release yazılımının yazılım uyumluluk gereksinimlerini karşılayacak şekilde değiştirildiği birçok durum gördüm (örneğin, Dell veya HP'nin yönetim aracıları).


1
/etc/issueayrıca Debian ve Ubuntu gibi diğer işletim sistemlerinde de çalışır ve Linux Standartları Tablosuna uymayan Linux işletim sistemlerinde ve lsb * hizmet programlarına sahip olmayan hafif işletim sistemlerinde çalışır.
Stefan Lasiewski

5
Bu güvenilir değil. Görünüşe göre kaçış dizilerini uygun bilgilerle değiştiren agetty/etc/issue tarafından ayrıştırılmak isteniyor . Sadece sen , sonuç underwhelming olabilir. Fedora'da, biri size bir şey söyler ama RHEL7'de bir tane olur . catFedora release 20 (Heisenbug) Kernel \r on an \m (\l)\S Kernel \r on an \m
David Tonhofer

Not /etc/issuedolayısıyla yerel yönetici tarafından değiştirilebilir ve edilebilen güvenilir bir bilgi kaynağı değildir.
larsks

13

En güvenilir yolu yüklü değil ise: lsb_release

# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server

# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6

Minimum kurulumlarda, lsb_releaseeksik.

Bunun Red Hat klonları ile de çalışmasını sağlamak (kredi yorumlara gidiyor):

# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')

Veya, tek bir komut olarak (iki "rpm" çalıştırılıyor yerine):

# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'

İstediğinizi elde etmek için sed/ cutve UNIX araçlarını işleyen diğer metinleri kullanın .


2
Bu daha genel olarak işe yarıyor gibi görünüyor: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)' sl, Scientific Linux içindir; Diğer RHEL inşaatları için doğru adı biliyorsanız, belki aşağıda yorum yapabilirsiniz. Uyarı - kapsamlı bir şekilde test edilmedi.
Dan Pritts,

1
Evet, bir not: RHEL Worstation ile çalışmaz.
Şubat'ta

Bir not - bu / etc / foo-release ayrıştırma işleminden çok daha yavaş çalışır.
Dan Pritts

1
ya rpm -qa | grep releaseda daha kolay
warren

6

Gerçekten bir Red Hat sürümüdür (Centos değil).

rpm -q redhat-release

Ya da sadece koş:

uname -r

Ve çıktıyı eşleyin. 2.6.9 çekirdekler RHEL4, 2.6.18 çekirdekler RHEL5'tir. Gerekirse, tam sürümü Red Hat'ten gelen belirli güncelleme sürümleriyle eşleyebilirsiniz (ör. 2.6.9-89, RHEL5 U4'tür).


1
rpm -q redhat-releasesadece package redhat-release is not installedbenim için geri döndü ve bana uname -rsadece çekirdek salımını söylüyor.
Mark Booth,

Ah! Ve şimdi o zaman geçti, RHEL6 ne olurdu? RHEL7? Hum ... İşte cevaplar: access.redhat.com/articles/3078#RHEL7
mika

3

Ben tercih ederim hostnamectl:

$ hostnamectl
   Static hostname: xxxxxx.xxx.xxx
         Icon name: computer-server
           Chassis: server
        Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
           Boot ID: 958452e0088b4191a4ea676ebc90403b
  Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 3.10.0-862.3.3.el7.x86_64
      Architecture: x86-64

2

/etc/os-releaseRPM sürümündeki dosyayı kullanmayı çok seviyorum :

# yum whatprovides /etc/os-release 
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: dl.za.jsdaav.net
 * extras: dl.za.jsdaav.net
 * updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : base
Matched from:
Filename    : /etc/os-release

centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : @anaconda
Matched from:
Filename    : /etc/os-release

Bu dosya aşağıdaki gibi betiklerden kaynaklanabilir:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)

İlginç, faydalı. Ne yazık ki, şu anda sınırlı değerde RHEL6'da mevcut değil.
Dan Pritts

1

Sadece sürüm numaralarını almak istiyorsanız, aşağıdakiler bulabildiğim kadar kısa ve basit.

6.7, 7.7, Debian 8.3 ve Ubuntu 14.04'te test edilmiştir:

lsb_release -s -r | cut -d '.' -f 1

Pratik bir örnek olarak, dağıtımın ana ve küçük versiyonlarını test etmek istediğinizi ve buna göre bir şeyler yaptığınızı söyleyin:

#!/bin/bash

major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)

if (( "$major" >= 7 ))
then
  echo "Do stuff, OS major version is $major"
  echo "OS minor version is $minor"
else
  echo "Do other things"
  echo "Your version is $major.$minor"
fi

1

Buna geç varış, ancak birkaç uzak düğümdeki RHEL versiyonunu bulmaya çalışırken çok eğlendim. Yani, aynı şifreyi kullanan bir sunucu grubunuz varsa (biliyorum, biliyorum ...) RedHat sürümünü kontrol etmek için hızlı ve kirli:

Beklenti betiği oluşturun

vim server-version.sh

Birden fazla uzak ana bilgisayardaki ana RedHat sürümünü kontrol etmek için komut dosyası bekleyin

#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"

Tüm düğümleriniz için betiği çalıştırın

[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;

Çıktı

server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#

server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#

...

Bir çok makinede uzak şeyler yapacaksanız, elle basılmış bash scriptleri yerine Ansible kullanmanızı şiddetle tavsiye ederim.
Neil Mayhew,

Ayrıca ssh üzerinden root girişi
Neil Mayhew
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.