Frequently Asked Question
What does semantic versioning mean for Linux packages?
Semantic versioning (SemVer) is the convention MAJOR.MINOR.PATCH: bump the patch
number for backward-compatible bug fixes, the minor for backward-compatible new
features, and the major for breaking changes. Many upstream projects follow it, and
Linux package managers respect those numbers when ordering versions and resolving
"needs at least 1.4.0" constraints.
Distributions, however, layer their own scheme on top. A Debian version looks like
1.22.0-1ubuntu2.3: upstream version 1.22.0, Debian revision 1, Ubuntu fork
revision ubuntu2, security update .3. An RPM version uses name-version-release.arch
with release carrying the distribution's patches. The package manager has explicit
rules (dpkg --compare-versions, rpm -q --qf) for ordering these strings correctly,
which is harder than it looks once epochs, tildes for pre-releases, and ~ for
"always less than" are involved. SemVer is the upstream story; the distribution
revision part is the packager's.