Frage Welche Version von RHEL verwende ich?


Wie kann ich anhand der Shell und ohne Root-Rechte feststellen, welche Red Hat Enterprise Linux-Version ich verwende?

Idealerweise möchte ich sowohl die Hauptversion als auch die Nebenversion erhalten, z. B. RHEL 4.0 oder RHEL 5.1 usw.


142
2017-12-01 01:59


Ursprung




Antworten:


Du kannst den ... benutzen lsb_release Befehl auf verschiedenen Linux-Distributionen:

lsb_release -i -r 

Dies teilt Ihnen die Distribution und die Version mit und ist ein wenig genauer als der Zugriff auf Dateien, die möglicherweise vom Administrator oder einem Softwarepaket geändert wurden. Sowie über mehrere Distributionen arbeiten.

Für RHEL sollten Sie Folgendes verwenden:

cat /etc/redhat-release

144
2017-12-01 06:47



Befehl nicht auf meiner CentOS 5.4 Box gefunden :( - gbjbaanb
@gbjbaanb: Das ist seltsam, ich habe es auf einer frischen 5,4 minimalen Installation getestet und es hat gut funktioniert ... - Zypher
lsb_release -i -r -bash: lsb_release: Befehl nicht gefunden. Jedoch, cat /etc/redhat-release Red Hat Enterprise Linux Server Version 5.6 (Tikanga) - Tom
Nur für den Rekord: Funktioniert nicht auf RHEL 6.5 minimale Installation. Befehl lsb_release ist nirgendwo zu finden. - sborsky
lsb_release ist kein leichtgewichtiges Paket. Es zieht CUPS ein, um "/ usr / bin / lp" bereitzustellen, was einige PDF-Übersetzungs-Goops einbezieht, die einige Rendering-Bibliotheken einbinden ... - Jens Timmerman


Sie können den Inhalt von / etc / redhat-release betrachten, der ungefähr so ​​aussieht:

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

Die Inhalte sind für ein tatsächliches RHEL-System unterschiedlich. Diese Technik funktioniert bei allen RedHat-Derivaten, einschließlich CentOS, Fedora und anderen.


140
2017-12-01 02:13



Dies ist die am besten geeignete Antwort auf die Frage. - fsoppelsa
lsb_release ist das erste, was zu versuchen, aber da das möglicherweise nicht installiert wird Dateien zu betrachten ist ein guter Plan B. - chicks
@chicks Da die Frage nach einem Test für Redhat-Systeme fragt und lsb_release nicht standardmäßig auf redhat-Systemen installiert ist und / etc / redhat-release ist, ist lsb_release natürlich nicht das erste, was man ausprobieren sollte! - bye
@bye Es ist das erste, was ich versuche (zumindest meiner Meinung nach), du probierst immer die Dinge, die auf allen Distributionen üblich sein sollten, dann wechselst du nur zu verteilungsspezifischen Lösungen. - Dennis Nolte


Ich bevorzuge es, die Datei / etc / issue zu verwenden.

$ cat /etc/issue

Ich habe viele Situationen gesehen, in denen / etc / redhat-release geändert wurde, um die Software-Kompatibilitätsanforderungen zu erfüllen (z. B. Dell oder HP Management Agents).


24
2017-12-01 05:35



/etc/issue funktioniert auch auf anderen Betriebssystemen wie Debian und Ubuntu und arbeitet mit Linux-Betriebssystemen, die nicht der Linux-Standards-Basis entsprechen, und leichtgewichtigen Betriebssystemen, auf denen die lsb * -Dienstprogramme nicht installiert sind. - Stefan Lasiewski
Dies ist nicht zuverlässig. Offenbar /etc/issue soll von geparst werden agetty, die die Escape-Sequenzen durch geeignete Informationen ersetzt. Wenn du nur cat es kann das Ergebnis nicht berauschend sein. Auf Fedora bekommt man Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), die dir etwas aber auf RHEL7 sagt, bekommt man gerade \S Kernel \r on an \m. - David Tonhofer
Beachten Sie, dass /etc/issue kann durch den lokalen Administrator ersetzt werden und ist daher keine zuverlässige Informationsquelle. - larsks


Der zuverlässigste Weg wann  lsb_release  es ist nicht installiert ist:

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

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

Bei minimalen Installationen lsb_release wird vermisst.

Damit dies auch mit Red Hat Clones funktioniert (Gutschrift geht an Kommentare):

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

Oder als einzelner Befehl (statt zwei "rpm" wird ausgeführt):

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

Benutzen sed/cut und anderer Text, der UNIX-Werkzeuge manipuliert, um zu bekommen, was Sie wollen.


12
2018-06-05 11:15



Dies scheint allgemeiner zu funktionieren: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl ist für Scientific Linux; Wenn Sie den richtigen Namen für andere RHEL-Umbauten kennen, können Sie diesen unten kommentieren. Warnung - nicht ausführlich getestet. - Dan Pritts
Ja danke, eine Anmerkung: funktioniert nicht mit RHEL Worstation. - lzap
Eine Anmerkung - das läuft viel langsamer als das Parsen von / etc / foo-release. - Dan Pritts
oder rpm -qa | grep release ist noch einfacher - warren


Angenommen, es ist eine Red Hat-Version (nicht Centos):

rpm -q redhat-release

Oder lauf einfach:

uname -r

Und mappe die Ausgabe. 2.6.9 Kernel sind RHEL4, 2.6.18 Kernel sind RHEL5. Bei Bedarf können Sie die Vollversion den spezifischen Update-Versionen von Red Hat zuordnen (d. H. 2.6.9-89 ist RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release kommt einfach zurück package redhat-release is not installed für mich und uname -r erzählt mir einfach die Kernel-Version. - Mark Booth
Oh ! Und jetzt, wo diese Zeit vorbei ist, was wäre RHEL6? RHEL7? Hum ... Hier sind die Antworten: access.redhat.com/articles/3078#RHEL7 - mika


Ich mag es sehr, das zu benutzen /etc/os-release Datei, die in der Release-RPM ist:

# 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

Diese Datei kann in Skripts wie folgt bezogen werden:

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

1
2018-01-23 20:28



Interessant, nützlich. Leider ist RHEL6 momentan nicht von so geringem Wert. - Dan Pritts


Wenn Sie nur die Versionsnummern erhalten möchten, ist das Folgende so kurz und einfach, wie ich es bekommen kann.

Getestet auf Rhel 6.7, Rhel 7.2, Debian 8.3 und Ubuntu 14.04:

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

Für ein praktisches Beispiel, sagen Sie, wollen Sie für die Haupt- und Nebenversion der Distribution testen und darauf basierende Dinge tun:

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