Posted on Fri 30 May 2025
Since you’re interested in not breaking things, you should be running Debian Stable.
Debian makes several kinds of package changes available:
security fixes
general bug fixes (including security fixes)
upgrades to a new major Stable (e.g. 12.x => 13.0)
backports from testing of selected packages
"volatile" updates to a few packages that some people want much faster, even if they break things
You control these by the wording of your
/etc/apt/sources.list
(or files in
/etc/apt/sources.list.d/
)
If you list repos with the name “stable”, they will be automatically changed over when a major Stable change occurs – 12.x => 13.0. But if you list them with the codename for stable (bookworm, currently) they will not.
If you don’t list a repo you won’t get updates from it.
The vast majority of people I know running Debian stable use the codename so that they can decide when they want to do the major upgrades. Most of them also avoid backports unless they have a specific need.
The package apticron
, if installed, will reload the list
of available packages from all repos in your
sources.list{,.d/}
nightly, and let you know via email if
anything is ready – but *not install them. That remains manual.
The package unattended-upgrades
, by contrast, does the
apticron thing and then automatically installs upgrades to packages that
you have previously installed, plus any required dependencies, which may
include new packages. You probably don’t want that.
There is also a complex system called “pinning” to allow preferences for individual package versions or repos, but most people who think this is a good idea are wrong. If you actually need it, I have a cheatsheet on the blog.