How to Check the Version in Linux: OS, Kernel, and Software

Knowing exactly what version of Linux you're running — whether that's the distribution, the kernel, or a specific application — is one of the most practical skills you can develop as a Linux user. It affects everything from troubleshooting errors to installing compatible software packages.

Here's a clear breakdown of how version checking works in Linux, what each method tells you, and why the results vary depending on your setup.

Why Linux Versioning Has Multiple Layers

Unlike Windows or macOS, Linux isn't a single operating system — it's a combination of components. That means version checking isn't a single command. You'll typically want to know:

  • The distribution version (e.g., Ubuntu 22.04, Fedora 38, Debian 12)
  • The kernel version (the core that manages hardware)
  • The version of specific software (e.g., Python, Git, Apache)

Each has its own command and serves a different purpose.

How to Check Your Linux Distribution Version

Your distribution (distro) is what most people mean when they say "Linux version." There are several reliable ways to find it.

Using /etc/os-release

This is the most universally compatible method across modern Linux distros:

cat /etc/os-release 

This outputs structured information including the distro name, version number, and codename. Example output on Ubuntu:

NAME="Ubuntu" VERSION="22.04.3 LTS (Jammy Jellyfish)" ID=ubuntu VERSION_ID="22.04" 

Using lsb_release

lsb_release -a 

This command returns the distributor ID, description, release number, and codename. It's widely available but not always installed by default on minimal systems.

Checking /etc/issue

cat /etc/issue 

A simpler, older method that prints the distro name and version. Useful for quick lookups but provides less detail than os-release.

How to Check the Linux Kernel Version 🐧

The kernel is the core of Linux itself, separate from the distro. Kernel versions affect hardware driver support, security patches, and system features.

Using uname

uname -r 

This returns a string like 5.15.0-91-generic, which breaks down as:

PartMeaning
5Major version
15Minor version
0Patch level
91-genericDistro-specific build identifier

For more complete system information including architecture and hostname:

uname -a 

Using /proc/version

cat /proc/version 

This shows the kernel version along with compiler information used to build it — useful when diagnosing deeper compatibility issues.

How to Check the Version of Specific Software

For individual programs and tools, the approach depends on the application.

The --version Flag

Most command-line tools support:

programname --version 

Examples:

python3 --version git --version nginx -v java -version 

Output format varies by program — some print to stdout, others to stderr, and version string formatting differs widely.

Using the Package Manager

If a program was installed through your distro's package manager, you can query it directly:

Debian/Ubuntu (apt):

apt list --installed | grep packagename dpkg -l packagename 

Red Hat/Fedora/CentOS (rpm/dnf):

rpm -q packagename dnf info packagename 

Arch Linux (pacman):

pacman -Qi packagename 

Package managers often show the version as packaged by the distro, which may differ slightly from the upstream software version — this distinction matters when comparing software versions across different Linux systems.

Variables That Affect What You'll Find

Linux version information isn't uniform across all systems, and a few key factors shape what you'll encounter:

Distribution family: Debian-based, Red Hat-based, and Arch-based systems each have different tooling and file structures. A command that works reliably on Ubuntu may not exist by default on Alpine or Gentoo.

Installation type: Minimal server installs often omit tools like lsb_release. Containers and embedded Linux environments may strip out even more. A desktop install typically has everything available out of the box.

Kernel type: Standard distro kernels, LTS (long-term support) kernels, and custom-compiled kernels all report differently. Some distros backport security patches to older kernel versions, which can make kernel version numbers misleading when assessing security posture.

Software source: Whether a package was installed via the distro's repository, compiled from source, installed via Snap/Flatpak, or pulled through a language-specific package manager (pip, npm, gem) affects how you query its version — and sometimes what version you actually get.

When Version Checking Actually Matters ⚙️

Understanding your versions becomes critical in specific scenarios:

  • Troubleshooting: Error messages in forums and documentation are often version-specific. Knowing your exact distro and kernel version narrows the search immediately.
  • Software compatibility: Many applications specify minimum kernel versions or distro releases. Mismatches are a common source of installation failures.
  • Security auditing: Kernel and package versions determine which CVEs (known vulnerabilities) apply to your system.
  • Support cycles: Distros like Ubuntu publish clear end-of-life dates for each release. Knowing your version tells you whether you're still receiving security updates.

The Spectrum of Linux Setups

A home user running Ubuntu Desktop on a standard laptop will find version checking straightforward — graphical system information tools exist alongside the terminal commands. A developer managing multiple servers may rely on scripted version checks across machines. A sysadmin working with containers or embedded devices may need to query versions in environments where standard tools aren't installed at all.

The commands are consistent, but what they reveal — and what you do with that information — shifts considerably depending on what's running on your system and why you need to know. 🖥️