Determining the versions of installed software is an essential troubleshooting skill for any IT pro or developer. With complex stacks across on-prem and cloud infrastructure, knowing exactly what versions are running provides invaluable insights.
In this epic guide, we’ll explore version checking for over 25+ popular applications, operating systems, databases, web servers, and more. Beyond just basic version commands, I’ll share troubleshooting tips, security recommendations, compatibility guidance, and interesting version history facts.
By the end, you’ll level up your version checking skills with the knowledge to pinpoint compatibility issues, plan updates, lock down security, and impress colleagues with version trivia! So let‘s dive in fellow technologist! This comprehensive reference has your back.
Why Software Versions Matter
Like a car, software has Year, Make, and Model. Versions provide the precise "coordinates" needed to troubleshoot, secure, and update our tech stacks.
Here are four key reasons version numbers are vital:
1. Prevent Compatibility Issues
Mixing incompatible versions can wreak havoc. For example, running the latest PostgreSQL with an outdated pgAdmin tool may cause connection failures. Version parity helps prevent these issues.
2. Update Efficiently
Planning updates requires knowing your starting point. And multi-step upgrades may need intermediate targets. Versions map the way.
3. Resolve Security Risks
Outdated software contains vulnerabilities. I once discovered remote servers running Apache 2.2 – released in 2005! Knowing versions allows addressing risks.
4. Troubleshoot Crashes
Mismatched or buggy versions are a common culprit of errors. Versions help pinpoint the problem child.
Think of versions like a map – they orient you, identify compatibilities, and guide your journey. Now let‘s master how to check them!
Linux/Unix Commands
For Linux and Unix-like systems, handy version-check commands can be utilized across multiple applications. Commit these to memory fellow Unix-head!
Nginx
The ubiquitous web server supports -v to print the version:
nginx -v
Sample output:
nginx version: nginx/1.18.0
Fun fact – early internal versions of Nginx were named for characters from Russian cartoons!
Apache HTTP Server
Apache‘s -v flag shows the version of the httpd binary:
httpd -v
Output:
Server version: Apache/2.4.43
Server built: Jul 27 2022 15:26:02
Version 2.0 was a major rewrite of Apache back in 2002.
PHP
PHP CLI‘s -v parameter prints the installed version:
php -v
Sample output:
PHP 8.0.25 (cli) (built: Jul 5 2022 16:45:38)
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies
with Zend OPcache v8.0.25, Copyright (c), by Zend Technologies
PHP 8 released in 2020 added JIT compilation and union types.
Python
Fetch Python‘s version with --version:
python --version
Example output:
Python 3.8.1
Python 3.0 released in 2008 was a major leap over Python 2.x.
Node.js
Node provides the --version flag:
node --version
Output:
v16.19.0
Node‘s version numbers match up with JavaScript engine releases.
Git
The source control system outputs its version from --version:
git --version
Sample output:
git version 2.36.1
Git was created by Linus Torvalds himself alongside Linux development!
yum
Red Hat‘s package manager includes a --version parameter:
yum --version
Output:
4.14.0
apt
Debian‘s apt tool supports -v to show the version:
apt -v
Example output:
apt 2.4.10 (amd64)
Ubuntu Distro
Ubuntu offers the lsb_release command to print version info:
lsb_release -a
Sample output:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
The jammy jellyfish is Ubuntu 22.04‘s playful codename.
CentOS/RHEL
Read the /etc/redhat-release file on Red Hat-based distros:
cat /etc/redhat-release
Output on CentOS:
CentOS Linux release 8.5.2111
CentOS streams now provide a rolling update model.
Debian
The /etc/debian_version file contains the installed Debian version:
cat /etc/debian_version
Sample output:
11.5
Fun fact – Debian versions are named after "Toy Story" characters!
Kernel
The kernel version is shown with uname -r:
uname -r
Output:
5.15.0-58-generic
New kernel versions aim for quarterly releases. Long-term support (LTS) kernels target enterprise users.
GCC
GCC‘s --version flag shows the compiler info:
gcc --version
Sample output:
gcc (Ubuntu 12.2.0-7ubuntu1) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Fun fact – GCC was originally named the "GNU C Compiler".
Docker
Get Docker‘s version with -v:
docker -v
Output:
Docker version 20.10.22, build 3a2c30b
Docker releases new major versions quarterly for the fast-moving container ecosystem.
Ansible
The automation tool provides --version:
ansible --version
Sample output:
ansible [core 2.14.1]
config file = /etc/ansible/ansible.cfg
configured module search path = [‘/home/user/.ansible/plugins/modules‘, ‘/usr/share/ansible/plugins/modules‘]
ansible python module location = /usr/local/lib/python3.9/dist-packages/ansible
ansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/local/bin/ansible
python version = 3.9.13 (main, Aug 25 2022, 18:29:29) [GCC 11.3.0]
jinja version = 3.1.2
libyaml = True
Ansible releases updates every ~3 months aligned with Python releases.
This covers the most common Linux/Unix version check commands. Tuck these under your belt and you‘ll unlock easy version identification across Linux environments. Now let‘s look at macOS and Windows.
macOS Tips
Apple‘s macOS offers both graphical and terminal ways to check versions.
macOS Version
Find the macOS version visually via:
Apple Menu > About This Mac
Or from Terminal:
sw_vers -productVersion
Output:
13.1
Fun fact – macOS version numbers are named after California landmarks like Ventura, Monterey, and Big Sur.
Xcode
Xcode is Apple‘s IDE for macOS and iOS development. Get its version with:
xcodebuild -version
Sample output:
Xcode 14.1
Build version 14B47b
New Xcode releases correspond with new iOS and macOS versions.
Homebrew
The popular macOS package manager supports -v:
brew -v
Output:
Homebrew 3.6.17
Homebrew/homebrew-core (git revision e6d25; last commit 2022-11-10)
Homebrew started life as a Ruby script and got its name from brewing software packages.
Windows Tips
Microsoft Windows offers robust version checking capabilities.
Windows Version
Find the release visually via:
Settings > System > About
Or from Command Prompt:
winver
Sample output:
Microsoft Windows [Version 10.0.22621.1105]
Fun fact – early Windows codenames were desert-themed like Whistler, Longhorn, and Mojave.
PowerShell
PowerShell‘s version is in $PSVersionTable:
$PSVersionTable
Output:
Name Value
---- -----
PSVersion 5.1.22621.1105
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.1105
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
PowerShell 7 was a major overhaul, bringing cross-platform support.
IIS
For IIS version:
%systemroot%\system32\inetsrv\appcmd.exe /apppool.show version
Output:
10.0.22621.1105
.NET Framework
Check .NET Framework version via the registry:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP" /v Version
Output:
Version REG_SZ 4.8.04414
.NET 6 merged .NET Framework and .NET Core lineages.
That covers the major Windows version checking tools. You‘re equipped to accurately pin down Windows versions for troubleshooting and audits fellow technologist! Let‘s level up and tackle databases.
Database Version Smarts
Databases each provide their own version interrogation mechanisms. Here are the key commands for version hunting production databases:
MySQL
MySQL supports -V to print the version:
mysql -V
Output:
mysql Ver 8.0.32-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
MySQL and MariaDB share version history up through version 10.x.
PostgreSQL
For the Postgres server version:
postgres --version
Output:
postgres (PostgreSQL) 14.7
And for the psql client:
psql --version
Sample output:
psql (PostgreSQL) 14.7
PostgreSQL 15 adds stored procedures and other enterprise features.
MongoDB
Print the mongod version:
mongod --version
Output:
db version v6.0.3
Build Info: {
"version": "6.0.3",
"gitVersion": "7b8150db51eaabbe4749dd55df4c91dd6c6deff6",
"modules": [],
"allocator": "system",
"environment": {
"distmod": "ubuntu2204",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
MongoDB allows running mixed-version replica sets for staged rollouts.
Redis
Use -v with redis-server:
redis-server -v
Output:
Redis server v=7.0.8 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=a4228c5b02813144
Redis 6 added new data structures like JSON documents and search indexes.
SQLite
The embedded database‘s version is output via:
sqlite3 --version
Sample output:
3.39.4 2022-12-19 15:38:44 9e4f04631fe7eeb605e5d8c1109cdcd33142036e1086921c87a27b2674536794
SQLite source code and documentation are in the public domain!
Oracle
Connect and query Oracle‘s v$version table:
SQL> select * from v$version;
Output:
BANNER
--------------------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
PRODUCT
--------------------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
VERSION
---------------------------------------------------------------------------
21.3.0.0.0
Major new features arrive in Oracle‘s first-digit releases.
You‘re now prepared to interrogate database versions like a pro! Let‘s round out our skills with web servers and programming languages.
Web Servers and Programming Languages
Finally, let‘s look at version techniques for web servers and programming frameworks.
Nginx
Already covered, but for reference:
nginx -v
Apache
Ditto:
httpd -v
Tomcat
Tomcat provides a version.sh script:
./version.sh
Output:
Server version name: Apache Tomcat/10.1.5
Server built: Apr 5 2022 17:45:59 UTC
Server version number: 10.1.5.0
OS Name: Linux
OS Version: 6.1
Architecture: amd64
JVM Version: 17.0.5+8-LTS
JVM Vendor: Eclipse Adoptium
Tomcat 10 aligned versions with Java platform releases.
Node.js
Also covered previously, but a quick refresher:
node -v
Python
Check Python version with:
python --version
Python 3.11 arrives in October 2022!
PHP
PHP versioning:
php -v
PHP 8 added JIT compilation and union types.
Ruby
Print Ruby version via:
ruby -v
Ruby 3.0 added an optional type system and parallel execution.
Java
Already covered, but Java version is:
java -v
Java‘s Long-Term Support (LTS) releases arrive every 3 years.
.NET
Preview the latest .NET version with:
dotnet --version
.NET 7 is right around the corner!
That wraps up our tour of version checking for all types of infrastructure, applications, databases and languages!
Conclusion
With over 25 examples for Linux, Windows, macOS, programming languages, databases, web servers, and popular DevOps tools – you‘re now equipped to precisely determine installed versions across stacks.
Commit these key takeaways:
-
Most CLI tools support
-vor--versionfor version info. -
Applications include version details in Help menus.
-
Core system components have dedicated commands.
-
Databases provide their own version tools.
-
Web servers and languages also include version flags.
-
Troubleshoot by comparing expected vs actual versions.
-
Know your starting point before planning updates.
-
Watch for EOL versions that lack security fixes.
-
Share fun version history facts to impress colleagues!
Software versions provide the map to navigate the twisting roadways of IT infrastructure. I hope this epic guide has leveled up your version-fu skills fellow technologist! Now go forth and confidently interrogate your software stacks. Your DevOps dashboard awaits!