Soru RHEL'in hangi sürümünü kullanıyorum?


Kabuktan ve root ayrıcalıkları olmadan, çalıştığım Red Hat Enterprise Linux sürümünü nasıl belirleyebilirim?

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


142
2017-12-01 01:59


Menşei




Cevaplar:


Kullanabilirsiniz lsb_release çeşitli Linux dağıtımlarında komut:

lsb_release -i -r 

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

RHEL için şunları kullanmalısınız:

cat /etc/redhat-release

144
2017-12-01 06:47



komut benim CentOS 5.4 kutusunda bulunamadı :( - gbjbaanb
@gbjbaanb: Bu garip taze 5.4 minimum kurulumda test ettim ve gayet iyi çalıştı ... - Zypher
lsb_release -i -r -bash: lsb_release: komut bulunamadı. Ancak, cat /etc/redhat-release Red Hat Enterprise Linux Server sürüm 5.6 (Tikanga) - Tom
Sadece kayıt için: RHEL 6.5 minimum kurulumda çalışmaz. Komut lsb_release bulunamadı. - sborsky
lsb_release hafif bir paket değildir, bazı render kütüphanelerinde çekilen bazı pdf çeviri goop'larını çeken ‘/ usr / bin / lp’ sağlamak için CUPS içinde çeker ... - Jens Timmerman


Böyle bir şeye benzeyen / etc / redhat-release'in içeriğine bakabilirsiniz:

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

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


140
2017-12-01 02:13



Bu, sorunun en uygun cevabıdır. - fsoppelsa
lsb_release denenecek ilk şey, ama bu dosyalara bakmaktan kurtulamadığı için iyi bir plan B. - chicks
@chicks Sorunun Redhat sistemleri için bir test istediği ve lsb_release'ın redhat sistemlerinde ve / etc / redhat-release'inde varsayılan olarak kurulmadığı göz önüne alındığında, lsb_release kesinlikle denenecek ilk şey değildir! - bye
Bye denenecek ilk şey (en azından benim fikrimce), her zaman önce tüm dağıtımlarda ortak olması gereken şeyleri deniyorsunuz, sonra da sadece dağıtıma özel çözümlere geçiyorsunuz. - Dennis Nolte


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

$ cat /etc/issue

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


24
2017-12-01 05:35



/etc/issue Ayrıca Debian ve Ubuntu gibi diğer işletim sistemlerinde de çalışır ve Linux Standartları Tabanı'na uymayan Linux İşletim Sistemlerinde ve lsb * yardımcı programlarının yüklü olmadığı hafif işletim sistemlerinde çalışır. - Stefan Lasiewski
Bu güvenilir değil. Görünüşe göre /etc/issue tarafından ayrıştırılmak üzere agettykaçış dizilerini uygun bilgilerle değiştirir. Eğer sadece cat Bu, sonuç bunaltıcı olabilir. Fedora'da biri Fedora release 20 (Heisenbug) Kernel \r on an \m (\l)RHEL7'de bir şey anlatıyor, sadece bir tane alıyor \S Kernel \r on an \m. - David Tonhofer
Bunu not et /etc/issue yerel yönetici tarafından değiştirilebilir ve bu nedenle güvenilir bir bilgi kaynağı değildir. - larsks


En güvenilir yolu ne zaman  lsb_release  yüklü değil geçerli:

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

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

Minimum yüklemelerde, lsb_release kayıp.

Bunu Red Hat klonlarıyla da çalışmak için (kredi yorumlara gider):

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

Ya da tek bir komut olarak (ikiden fazla "rpm" yerine)

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

kullanım sed/cut ve ne istersen almak için UNIX araçlarını manipüle eden diğer metin.


12
2018-06-05 11:15



Bu daha genel olarak çalışır gibi görünüyor: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl, Bilimsel Linux içindir; Diğer RHEL yeniden yapılandırmaları için doğru adı biliyorsanız, belki aşağıda yorum yapabilirsiniz. Uyarı - kapsamlı olarak test edilmemiştir. - Dan Pritts
Evet teşekkürler, bir not: RHEL Worstation ile çalışmıyor. - lzap
Bir not - bu ayrıştırma / etc / foo-release'den çok daha yavaş çalışır. - Dan Pritts
veya rpm -qa | grep release daha da kolay - warren


Gerçekten bir Red Hat sürümü olduğunu varsayarsak (Centos değil):

rpm -q redhat-release

Ya da koşun:

uname -r

Ve çıktıyı eşleştirin. 2.6.9 kernel RHEL4, 2.6.18 kernel RHEL5'dir. Gerekirse, tam sürümü Red Hat'tan belirli güncelleme sürümleriyle eşleştirebilirsiniz (örn. 2.6.9-89 RHEL5 U4'tür).


5
2017-12-01 13:36



rpm -q redhat-release sadece döner package redhat-release is not installed benim için uname -r sadece çekirdek sürümünü anlatır. - Mark Booth
Ah! Ve şimdi bu zaman geçti, RHEL6 ne olurdu? RHEL7? Hum ... İşte cevaplar: access.redhat.com/articles/3078#RHEL7 - mika


Oldukça kullanmaktan hoşlanıyorum /etc/os-release RPM'de bulunan dosya:

# 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 komut dosyalarından elde edilebilir:

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

1
2018-01-23 20:28



İlginç, yararlı. Ne yazık ki, şu anda RHEL6 üzerinde mevcut değil, sınırlı bir değer. - Dan Pritts


Eğer sürüm numaralarını almak istiyorsanız, aşağıdaki gibi kısa ve basit bir şekilde.

Rhel 6.7, rhel 7.2, debian 8.3 ve ubuntu 14.04 üzerinde test edilmiştir:

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

Pratik bir örnek için, dağıtımın büyük ve küçük sürümlerini test etmek ve bunlara dayanarak bir şeyler yapmak istediğinizi varsayalım:

#!/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

0
2018-04-06 00:44





Geç bir varış, ancak birkaç uzak düğümde RHEL sürümünü anlamaya çalışırken eğlendim. Yani, aynı parolayı kullanan bir sunucu kümeniz varsa (Biliyorum, biliyorum ...) burada RedHat sürümünü kontrol etmek hızlı ve kirlidir:

Beklenen bir komut dosyası oluşturun

vim server-version.sh

Birden çok uzak ana bilgisayarda büyük RedHat sürümünü kontrol etmek için komut dosyası bekleniyor

#!/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 komut dosyasını ç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 ~]#

...

0
2017-10-05 12:31



Çok sayıda makinede uzak şeyler yapacaksanız, elle haddelenmiş bash komut dosyaları yerine Ansible'ı kullanmanızı kesinlikle öneririz. - Neil Mayhew
Ayrıca ssh üzerinden root girişini etkinleştirmemenizi öneririz. - Neil Mayhew