Debian Bookworm Enters LTS Soon

Debian Bookworm Enters LTS Soon

Debian 12 Bookworm is about to transition to long-term security support. A practical look at the LTS schedule and how to approach upgrading your LXC containers in Proxmox.

English: Trixen, pearl lugger built in 1904, displayed in WA Maritime Museum, May 2019

Fig. 1. Trixen B47, WA Maritime Museum, May 2019
Source: Adapted from [1]

Debian 12 Bookworm is about to be moved over to the long term security support team. Now might be a good time to make plans to upgrade.

StatusReleaseArchitecturesSupport Period
Previous LTSDebian 6 “Squeeze”i386, amd64June 2, 2014 – February 29, 2016
Previous LTSDebian 7 “Wheezy”i386, amd64, armel, armhfApril 26, 2016 – May 31, 2018
Previous LTSDebian 8 “Jessie”i386, amd64, armel, armhfJune 17, 2018 – June 30, 2020
Previous LTSDebian 9 “Stretch”i386, amd64, armel, armhf, arm64July 6, 2020 – June 30, 2022
Previous LTSDebian 10 “Buster”i386, amd64, armhf, arm64August 1, 2022 – June 30, 2024
Current LTSDebian 11 “Bullseye”i386, amd64, armhf, arm64August 15, 2024 – August 31, 2026
Future LTSDebian 12 “Bookworm”TBDJune 11, 2026 – June 30, 2028
Future LTSDebian 13 “Trixie”TBDAugust 9, 2028 – June 30, 2030

You can view the schedule page below:

Debian Long Term Support (LTS) — wiki.debian.org 🔗

Upgrading

I had about 29 containers still running in my own environment that needed upgrading. Many of these are daily drivers for various services I rely on. I considered wrapping the upgrade process into an Ansible Playbook but opted to do the patching manually this time due to Python 3 complications. The most notable breaking changes I’ve encountered are due to the new venv environments sometimes being required. Not an unexpected barrier, but it’s something to keep in mind if your service depends on it.

Here’s the full upgrade guide if you want to look it over.

Upgrading from Debian 12 (bookworm) — debian.org 🔗

Quick Upgrade LXC Containers

Since I had quite a few to do and I have perpetual backups of the most important data in the environment with a reasonable RTO (Recovery Time Objective), I have chosen to just depend on Proxmox snapshots as a fallback if things go very wrong.

I’ve included the process I settled into below:


First, check the currently installed version if you’re unsure. Always upgrade Debian in order of release. If you see version 11 (Bullseye), don’t skip straight to Trixie. Upgrade to 12 (Bookworm) first, and then to 13 (Trixie).

Terminal window
cat /etc/debian_version

Create a snapshot from the CLI on your Proxmox host.

Note: replace 100 with your LXC ID to target the proper LXC.

Terminal window
pct snapshot 100 "pre_trixie_upgrade" --description "Manual upgrade to Debian 13"

Now let’s be sure we have the latest packages installed for version 12.

Terminal window
sudo apt update && sudo apt upgrade -y

Now is also a good time to purge any packages that aren’t in use.

Terminal window
sudo apt autoremove --purge -y

Check for any packages you may have held in place prior with apt, as you may want to handle that differently through the upgrade or take note of it.

Terminal window
sudo apt-mark showhold

Now make a backup of the apt sources.

Terminal window
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

We can use sed to find and replace “bookworm” with “trixie” in the main Debian sources file. Note that there is a new apt sources format. If you’re a stickler for keeping your configs canonical, it’s worth looking into the new format, but it’s not necessary at this time.

Terminal window
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

Now do the same thing for any additional sources created in sources.list.d.

Terminal window
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list

Now we’re ready to check what packages differ between versions. Don’t rush this by tacking on && sudo apt upgrade. We want to make sure none of our sources have a problem with the changes made above. For example, one of my repos didn’t respond well to the “trixie” flag and instead required “all” since that repo covers all modern Debian releases.

Terminal window
sudo apt update

Once you’ve investigated any source errors and apt update completed successfully, we can move on to the first batch upgrade without pulling in any new packages.

Terminal window
sudo apt upgrade --without-new-pkgs -y

You may get a few prompts during this process. Upgrades will typically ask whether you want to replace configuration files with the maintainer’s new version, or sometimes you’ll get a whiptail prompt asking what type of connection a web server should use. My recommendation during the upgrade process is to always keep the existing configuration unless you have a specific reason not to.

Now reboot the LXC. We want to smooth out any services that need to be restarted after that dramatic event.

Once it comes back to life and things look good, let’s upgrade all the remaining packages we held back earlier.

Terminal window
sudo apt full-upgrade -y

Post Install Checks

Check for any failed services.

Terminal window
sudo systemctl list-units --state=failed

Check that the intended service is working as expected and clean up any leftovers.

Terminal window
sudo apt autoremove --purge -y && sudo apt clean

References

[1] Michielverbeek, "Trixen B47, WA Maritime Museum, May 2019," *Wikimedia Commons* 2019. [Online]. Available: https://commons.wikimedia.org/wiki/File:Trixen_B47,_WA_Maritime_Museum,_May_2019.jpg Accessed: Apr. 28, 2026.

[2] D. L. Team, "Debian Long Term Support (LTS)," *Debian Wiki* 2026. [Online]. Available: https://wiki.debian.org/LTS Accessed: Apr. 28, 2026.

[3] D. R. Team, "Upgrading from Debian 12 (bookworm)," *Debian.org* 2026. [Online]. Available: https://www.debian.org/releases/stable/release-notes/upgrading.html Accessed: Apr. 28, 2026.