Debian & Ubuntu — Stability-First

Comparative Linux Distributions

Chapter 2 · Debian & Ubuntu — Stability-First

The first of this course's own four families, and the one whose stated goal is, quite literally, to be unexciting. Debian's release process, Ubuntu's own relationship to it, and the dpkg/apt tool pairing all serve one consistent underlying value — reliability, chosen deliberately over freshness.

Debian's Three Tiers — a Real Pipeline, Not Just Labels

New and updated packages enter Unstable (nicknamed "Sid") first. A package that survives there for a set minimum period with no new critical bugs migrates automatically into Testing. When Testing is judged mature enough, a snapshot of it is frozen and eventually released as the next Stable — after which Stable receives only security patches and critical fixes, nothing else, for the rest of its multi-year lifetime.

TierWhat it actually isWho it's for
Unstable (Sid)Where new packages land first, genuinely can breakDebian developers, the truly adventurous
TestingPackages that have survived Unstable long enough with no critical bugsThose wanting newer software with somewhat more confidence
StableA frozen snapshot, security-patched only for yearsServers, production systems, anyone valuing predictability above all

"Boring" as an Explicit, Stated Value

Debian's own community has long described its goal, without irony, as being "boring" — a Stable release roughly every two years, package versions frozen at release time regardless of how much newer upstream software becomes during that release's own multi-year support window. This isn't neglect; it's the deliberate trade-off this whole chapter's own title names — stability chosen consciously over having the latest version of everything.

Debian Stable's package versions will look "old," on purpose
Someone installing Debian Stable expecting the newest release of a language runtime or application will often find something noticeably behind what's available elsewhere — this is the frozen-at-release-time trade-off working exactly as intended, not a sign of neglect. Real workarounds exist for genuinely needing something newer without abandoning Stable entirely: the official backports repository, or app-sandboxing formats like Flatpak, both covered further in Chapter 6.

Ubuntu — Built From Debian, Released on Its Own Terms

Ubuntu takes packages directly from Debian's own Unstable/Testing pool, applies its own patches and branding, then releases on a schedule entirely its own: an interim release every six months (9 months of support), and a Long Term Support (LTS) release every two years, supported for five years by default — extendable further through Ubuntu's own Extended Security Maintenance.

CadenceSupport window
Debian Stable~Every 2 yearsRoughly 3 years full support, then Long Term Support extensions via the community
Ubuntu interimEvery 6 months9 months
Ubuntu LTSEvery 2 years5 years (extendable via ESM)

dpkg vs. apt — Low-Level Tool, High-Level Wrapper

dpkg is the low-level tool that actually installs a single .deb file — it has no concept of fetching a package from anywhere, and no automatic dependency resolution; handing it a package whose dependencies aren't already present simply fails. apt is the high-level tool built on top of it — it resolves dependencies, fetches packages (and their dependencies) from configured repositories, and calls dpkg underneath to actually perform the install.

# dpkg: installs a single local .deb file, no dependency resolution sudo dpkg -i ./somepackage.deb # apt: resolves dependencies, fetches from repositories, calls dpkg for you sudo apt install somepackage
Confirming which tier and codename you're actually on
cat /etc/os-release — the same command introduced in Chapter 1 — reports the exact Debian or Ubuntu codename and version directly, useful before assuming which tier's own behavior (Stable's frozen packages vs. Testing's more frequent updates) actually applies to a given machine.

Hands-On Exercises

Exercise 1

A user installs Debian Stable expecting the newest version of a popular application and finds an older one instead. Using this chapter's own warn-box, explain why this isn't a bug, and what two real options exist without abandoning Stable entirely.

📄 View solution
Exercise 2

A .deb file downloaded directly from a vendor's website fails to install via dpkg with a dependency error, but installs successfully via apt using the same file. Explain why, using this chapter's own tool comparison.

📄 View solution
Exercise 3

Explain why Ubuntu's own interim releases and LTS releases represent a genuinely different trade-off from each other, not just a shorter and longer version of the same thing.

📄 View solution

Chapter 2 Quick Reference

  • Debian's pipeline: Unstable (Sid) → Testing → Stable, with only security patches once Stable is frozen
  • "Boring" is Debian's own stated, deliberate value — stability chosen consciously over freshness
  • Ubuntu: built from Debian's own packages, released on its own interim (6-month) and LTS (2-year, 5-year support) cadence
  • dpkg installs a single package with no dependency resolution; apt wraps it with dependency resolution and repository fetching
  • Debian Stable's "old" package versions are the frozen-at-release trade-off working as intended, not neglect
  • Next chapter: Fedora & RHEL — A Fast-But-Tested Middle Ground