How To Find Rhel Version

How To Find Rhel Version

Reading time1 min
#Linux#SysAdmin#RHEL#RedHat#VersionDetection

Mastering RHEL Version Detection

Routine patching stalls when you don’t know what you’re patching. RHEL version detection isn’t optional—it underpins compliance, automation, and security. Here’s a fast-track guide for pragmatic engineers.


On the Ground: Why Version Accuracy Matters

  • Application compatibility failures due to mismatched glibc or kernel ABI.
  • CVEs that only affect particular point releases (“RHEL 7.9 unaffected, 7.8 vulnerable”).
  • Audit scripts requiring OS fingerprinting.
  • Red Hat’s support asks: “What version exactly?”

If the release is ambiguous, troubleshooting takes longer—and errors slip in.


/etc/redhat-release: Still the Fastest Lookup

When present, /etc/redhat-release tells you more than enough. One line, human-readable, upstream maintained:

cat /etc/redhat-release

Example:

Red Hat Enterprise Linux Server release 8.6 (Ootpa)

But, not always present—minimal containers or third-party appliances may delete or rewrite it. Don’t assume.


hostnamectl: For Modern — and Automated — Environments

hostnamectl isn’t just for hostname changes; its output includes distribution metadata. More structured than /etc/redhat-release:

hostnamectl | grep 'Operating System'

Example:

 Operating System: Red Hat Enterprise Linux 8.6 (Ootpa)

Often used by config management tools (cfengine, Ansible) to fingerprint nodes.


RPM Query: When Release Files Are Untrustworthy

Manipulated redhat-release file? Trust RPM metadata instead:

rpm -q redhat-release

or, for server flavors:

rpm -q redhat-release-server

Output:

redhat-release-server-8.6-1.el8.x86_64

Key point: -q returns the package versioning, matching what was installed, not what’s claimed by a file.


/etc/os-release: Machine-Readable & Scripting Friendly

RHEL 7+ always ships with /etc/os-release. This file is script-consumable (Bash, Python, Go, etc.):

cat /etc/os-release

Excerpt:

NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
VERSION_ID="8.6"

If scripting:

. /etc/os-release
echo "$VERSION_ID"

Note: Do not parse the human-readable /etc/redhat-release in scripts; it's prone to format changes.


lsb_release Utility: If You (Still) Install It

Not installed by default—Red Hat has minimized usage. But if present:

lsb_release -d
# Output:
Description:    Red Hat Enterprise Linux release 8.6 (Ootpa)

Install with:

sudo dnf install redhat-lsb-core   # RHEL 8/9
sudo yum install redhat-lsb-core   # RHEL 7

Downside: Adds non-essential packages.


Practical Scripting: Minimal, Reliable

Automating detection? The following pattern is typical in CI jobs or Puppet manifests:

awk -F= '/^VERSION_ID=/{gsub(/"/,"",$2); print $2}' /etc/os-release

Yields, for example:

8.6

Gotcha: Be aware that /etc/os-release will report “7.9” even for systems with backported components. Always cross-check for bespoke/updated packages if security context matters.


Summary Table

MethodCommandTypical OutputWhen to Use
/etc/redhat-releasecat /etc/redhat-releaseRed Hat Enterprise Linux Server release 8.6 ...Legacy/quick, not foolproof
hostnamectl`hostnamectlgrep 'Operating System'`Operating System: Red Hat Enterprise Linux 8.6...
RPM queryrpm -q redhat-release-serverredhat-release-server-8.6-1.el8.x86_64Verifying actual package state
/etc/os-releaseawk -F= ... /etc/os-release8.6 (from VERSION_ID)Script-friendly, most robust
lsb_releaselsb_release -dDescription: Red Hat Enterprise Linux release 8.6Only if lsb is present

Field Notes

  • Some container images lack all but /etc/os-release—design your scripts for fallback.
  • RHEL derivatives (e.g., CentOS, AlmaLinux, Rocky) will appear similar, but watch ID or ID_LIKE in /etc/os-release for forking.
  • Upgrades in place? “VERSION_ID” might lag behind layered package updates, causing subtle issues during audits.

No tool covers every edge case, but layering these methods closes most operational gaps. If you hit ambiguity, verify kernel, glibc, and rpm -qa | grep redhat output. That’s where the real answers hide.

Further reading: See Red Hat KB article 12173—“How to determine the version of Red Hat Enterprise Linux” for legacy nuances.


Keep it fast. Keep it reproducible.