How to Upgrade to Debian 13 (Trixie) from 12 (Bookworm)

A tried-and-true step-by-step guide for a hassle-free upgrade to Debian 13 (Trixie) from Debian 12 (Bookworm).

After more than two years in the making, Debian 13 (Trixie) has finally arrived—packed with a bunch of new features and improvements. It’s no surprise that many Debian 12 users are already itching to make the jump to this latest stable release.

If that’s you, I have some good news for you – you’re in the right place. While the upgrade process is pretty straightforward, it’s always best to do it the safe way—following the right steps, in the right order, with the right guidance. And that’s exactly the purpose of this article.

I’ll walk you through the process of upgrading to Debian 13 (Trixie) from Debian 12 (Bookworm), covering all key points to navigate this major version transition successfully.

Naturally, the time it takes to finish the task will depend on how many packages you’ve got installed and how powerful your hardware is. But for most cases, the whole process usually wraps up in about 30 to 60 minutes.

Needless to say, everything you’ll see below has been tested and proven to work in our lab. And as always, the goal is simple—making your upgrade to Trixie as smooth and hassle-free as possible. So, let’s do it together.

Step 1: Take System Backup

First, let’s ensure all your important data is safe. Before doing anything else, I strongly recommend fully backing up your Bookworm installation using one of the system snapshot tools you’re familiar with. If you’re not sure which one to go with, check out my recommendations on the topic.

Thus, if something goes wrong, you can restore it to its previous state with all the vital data.

However, if you do not feel like taking the above approach, you can instead use a command like the one shown below, which will archive all of the more critical directories and their contents in a tar.gz archive.

sudo tar czf /bookworm.tar.gz \
     --exclude=/bookworm.tar.gz \
     --exclude=/dev \
     --exclude=/run \
     --exclude=/mnt \
     --exclude=/proc \
     --exclude=/sys \
     --exclude=/tmp \
     --exclude=/media \
     --exclude=/lost+found \
     /Code language: Bash (bash)

Feel free to add more “–exclude=” parameters if needed. Finally, the command creates a backup of all files in the “bookworm.tar.gz” file located on the root partition (/), which you should ideally transfer to another computer or drive, for example, using the SCP command.

Step 2: Update All Software

Ensure you have a fully updated Debian 12 system. Run the three commands below to ensure no packages are waiting to be updated. If there are, apply them before moving on.

sudo apt update
sudo apt upgrade
sudo apt full-upgradeCode language: Bash (bash)

Next, I recommend cleaning off any leftover packages and rebooting the system.

sudo apt --purge autoremove
sudo rebootCode language: Bash (bash)

By the end, you’ll need to end up with the fully updated latest minor release of Debian 12 series — which, at the time of writing, is version 12.11. You can quickly check this by running the command below.

cat /etc/debian_versionCode language: Bash (bash)
Ensure you have a fully updated Debian 12 system.
Ensure you have a fully updated Debian 12 system.

Below is our current fully-updated Debian 12 (Bookworm) system before we upgrade to Debian 13 (Trixie).

Debian 12 before starting the upgrade to Debian 13.
Debian 12 before starting the upgrade to Debian 13.

Step 3: Check for Installed Non-Debian Packages

Before proceeding with the upgrade to Trixie, following best practices, we will check if any additional packages currently installed on our system are from outside the official Debian 12 repositories.

We do this because, over time, we might have installed extra server or client software on our Debian 12 system that didn’t come from the official Debian repositories—things like Google Chrome, VirtualBox, and so on.

In that case, this may cause complications when upgrading to Debian 13, as these external repositories may not yet be set up to work with the Trixie release.

sudo apt list '?narrow(?installed, ?not(?origin(Debian)))'Code language: PHP (php)
Check for installed packages from non-Debian repositories.
Check for installed packages from non-Debian repositories.

As you can see, the check showed that we have a Docker and Google Chrome installation that is from non-Debian repositories. So what do we do in such a situation?

My best and recommended advice is, if the installed software is not critical to your needs, to uninstall it and reinstall it after successfully upgrading to Debian 13 to avoid issues.

However, in this case, with Docker and Google Chrome, since the software is from proven companies that immediately made their software compatible with Debian 13, we will continue upgrading to Trixie without removing it.

In addition, check for packages that, for some reason, you have specified not to be updated. You can do this by running:

sudo apt-mark showholdCode language: Bash (bash)

If the command returns an empty output, it is okay to move on. However, if you get a list of package names, you must allow them to be updated, as for each manually executed:

sudo apt-mark unhold package_nameCode language: Bash (bash)

Finally, if you use the Debian backports repositories, the packages from bookworm-backports have lower version numbers than those in Trixie, so they should upgrade just like regular Bookworm packages during the distribution upgrade.

Step 4: Modify Software Sources Files

The Debian software repositories are defined in the “/etc/apt/sources.list” file and the “/etc/apt/sources.list.d/” directory. Before upgrading, you must update them to point to the Debian 13 (Trixie) repositories.

Before you do so, however, it is a good practice to back up the current software repositories’ configuration files. We’re doing this just in case something goes wrong with the commands below, so we can easily restore the original files if needed.

mkdir ~/apt
cp /etc/apt/sources.list ~/apt
cp -r /etc/apt/sources.list.d/ ~/aptCode language: Bash (bash)

Now, let’s update the current Debian 12 (Bookworm) repositories to those of Debian 13 (Trixie).

sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*Code language: Bash (bash)

The above commands will replace the “bookworm” keyword with “trixie” in software repository files. After the changes, the final version of your “/etc/apt/sources.list” file should look something like this:

deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian/ trixie-updates main contrib non-free non-free-firmwareCode language: JavaScript (javascript)
Debian 13’s sources.list file.
Debian 13’s sources.list file.

Step 5: Perform an Initial Minimal Upgrade

At this point, your Debian 12 system is ready to be upgraded to Debian 13. The first step is to update the repository to let the system recognize the newly added repo URLs.

sudo apt updateCode language: Bash (bash)
Packages waiting for an update.
Packages waiting for an update.

Once the command finishes running, you’ll notice that quite a lot of packages—over 1,300 in this case—are ready for an update. That’s perfectly fine—we can move on.

According to the official Debian documentation, the recommended way to handle the upgrade is to break it into two separate steps.

  1. Minimal system upgrade
  2. Full system upgrade

So, let’s proceed with the first step, which tells APT to upgrade all currently installed packages to their latest available versions — but without installing any brand-new packages that aren’t already on your system. This option is handy for a safer, more minimal update.

sudo apt upgrade --without-new-pkgsCode language: Bash (bash)
Debian 13 minimal upgrade.
Debian 13 minimal upgrade.

Just hit “Enter” and keep an eye on the screen – it will show you important information about some upgraded packages. Press “q” after reading to exit the pager and continue the upgrade.

Important information about any of the updated packages.
Important information about any of the updated packages.

In addition, the upgrade process will prompt for permission to restart services without asking. Choose “Yes” and hit “Enter.”

Accept services to be auto-restarted.
Accept services to be auto-restarted.

Be patient. During the process, you may also be asked what you want to do with a specific configuration file whose content you’ve changed so it no longer matches what’s expected in the updated package. If you’re unsure what to do, go with defaults by pressing the “Enter” key to continue with the upgrade.

Step 6: Upgrade to Debian 13 (Trixie) from Debian 12 (Bookworm)

Once the minimal system upgrade completes, run the following command to begin the full upgrade.

sudo apt full-upgradeCode language: Bash (bash)

You’ll see a long list of packages that are about to be updated. Hit “Enter” and again, keep an eye on the screen, read the notifications, and perform the necessary actions required for the upgrading process to proceed.

Performing a full upgrade to Debian 13.
Performing a full upgrade to Debian 13.

The command will upgrade all packages, install new dependencies, and remove packages if necessary to complete the upgrade. So, hang tight — it’s going to take just a little longer. Once everything is complete, reboot the system.

sudo rebootCode language: Bash (bash)
Once the update’s done, go ahead and reboot your system.
Once the update’s done, go ahead and reboot your system.

And that’s all. Your system has been successfully upgraded to version 13 (Trixie) from 12 (Bookworm). Log in, and enjoy your newly upgraded Debian system.

The system was successfully upgraded to Debian 13 (Trixie) from Debian 12 (Bookworm).
The system was successfully upgraded to Debian 13 (Trixie) from Debian 12 (Bookworm).

Post-Installation Steps

Finally, one last step – it’s time to clean up the leftover Debian 12 packages since we don’t need them anymore. You’ll be asked to confirm the removal—just type “y” to proceed.

sudo apt --purge autoremoveCode language: Bash (bash)
Removing obsolete packages.
Removing obsolete packages.

Conclusion

As you can see, upgrading from Debian 12 (Bookworm) to Debian 13 (Trixie) is straightforward when you follow the right steps. Once the upgrade is complete, verify that all services are running correctly and that your applications are functioning as expected.

I tried to make this guide as simple as possible. Thanks for taking the time to read it and for using it. As always, your comments are most welcome.

For additional help, I highly recommend you check the official Debian upgrade documentation.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Leave a Reply

Your email address will not be published. Required fields are marked *