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: Bash (bash)
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 awaiting update.
Packages awaiting 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

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.

And finally, delete the outdated package files from the local APT cache.

sudo apt autocleanCode language: Bash (bash)

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 made 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, 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.

18 Comments

  1. Anonymous

    Thanks. Makes a lot more sense than trying to wade through the debian pages.
    Tried these steps in one VM so far and worked perfectly. One thing to note is that in the issues to be aware of document it does say /tmp becomes an in-memory tmpfs filesystem in Deb13 for those that do not have a dedicated /tmp filesystem entry in fstab but use a default of just having a directory tmp under /. I run my VMs with the minimum memory allocated to do the job so that is a painful change but that page also documents reverting back to using origional behaviour with “systemctl mask tmp.mount” and rebooting.
    May be worth a comment for anyone that may store large files in /tmp as the default is it can grow to use 50% of memory.

  2. Gérard

    The official Debian upgrade documentation also states


    If you have listed the proposed-updates section in your APT sources files, you should remove it before attempting to upgrade your system. This is a precaution to reduce the likelihood of conflicts.

    coming from
    https://www.debian.org/releases/trixie/release-notes/upgrading.en.html#the-proposed-updates-section

  3. John hill

    Debian 13 is awful. Clunky, slow and it operates within such tight parameters it’s like trying to eat wearing a suit of armour. How anyone can base an operating system on this is beyond belief. I installed it and removed it after a few hours when I couldn’t even do simple tasks without having to jump through interminable hoops.

    1. Eric

      I guess everyone’s experience is different because it works perfectly fine for me. Not slow at all. Seems just as responsive as before, shuts down a lot faster, and I’m getting way better battery life on my laptop.

  4. Stefano

    “Molte grazie dall’Italia, questo tutorial ha funzionato perfettamente, ottimo lavoro”
    Many thanks from Italy, this tutorial worked perfectly, great job guy

  5. bithalver

    Worked like a charm: thank you !

  6. Anonymous

    Thank you

  7. Keegan Ndashe

    Thanks worked perfectly.

  8. HECTOR AUGUSTO OSPINA ANGARITA

    Thankyou very much, your guide was very usefull for me.

  9. Anonymous

    Best document I have seen! Nice a simple guide without a lot of extra information to confuse a newbie like me. VERY well done and greatly appreciated.

    Jeff

  10. tjibbe

    Thanks a lot

  11. justin

    doesn’t work, debian 12 is bullseye, not bookworm

    1. justin

      sorry, duh, I misread the version of my existing server. sorry

  12. Gérard

    Dear sir,

    In this posted message
    https://www.debian.org/News/2025/20250809.en.html
    , in the “Upgrading Debian” section, it is written

    It is advisable to remove bookworm-backports entries from APT source-list files before the upgrade; after the upgrade consider adding trixie-backports.

    but there is no explanation for this.

  13. Thomas

    Works perfectly !
    Many thanks from Germany

  14. Jermy

    Flawless 🙂 Thanks a lot!

  15. h4X0R

    worked perfectly – thanks!!

  16. Hubert

    Works perfectly !
    Many thanks from France

Leave a Reply

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