Debian 10 (Buster), is the successor to Debian 9 (Stretch). It was released on July 6, 2019. In this tutorial, we will be upgrading an existing Debian 9 installation to Debian 10.
- Root access to an existing server running Debian 9.
- Basic knowledge of the Linux command line.
All commands in this tutorial should be run as root. If you are using a standard user, (your prompt doesn’t end with
#), you will need to prepend
sudo to all commands. Alternatively, you can type
sudo -i to switch to the root user.
Step 1: Preparation
Before upgrading, you should backup your server. Although Debian releases are generally stable, there is always a risk of something going wrong or an unexpected incompatibility. You can use tools like borg or tar if you wish to store backups yourself.
Another important step is to check for broken packages. This can be done with
dpkg --audit. If it fails, you can try to correct the issue with
apt -f install or
dpkg --configure -a. In the case of broken dependencies which cannot be resolved,
aptitude -f install may be able to fix it (aptitude uses a more comprehensive dependency resolution method).
You will want to make sure you are aware of any changes made to packages, including configuration files, as you may need to reapply them later. Modified files belonging to packages can be found with
In addition, make sure you have a kernel metapackage like
linux-image-amd64 installed. If you only have a package like
linux-image-4.9.0-9-amd64 installed, your kernel may not be updated properly. You can ensure it is installed by running
apt install linux-image-amd64.
If you use any third-party software, especially applications from third-party repositories, you need to ensure they are compatible with Debian 10 before upgrading.
Finally, if you have an unreliable network connection, you should perform the upgrade inside a
tmux session so the upgrade process can continue even if you lose connection.
Step 2: Updating all current packages
To minimize possible issues, all installed packages should be at the latest version prior to the release upgrade.
apt update apt upgrade apt autoremove --purge reboot
If you notice any errors during the process, correct them before proceeding.
Step 3: Modifying package lists
Next, all package lists need to be updated from Stretch to Buster. You can do this manually with the following.
nano /etc/apt/sources.list /etc/apt/sources.list.d/*
Alternatively, you can do this automatically with
sed -i "s:stretch:buster:g" /etc/apt/sources.list /etc/apt/sources.list.d/*
Step 4: Upgrading to Debian 10
Now, it is time to upgrade to Debian 10. First, update your package lists:
Next, upgrade the packages:
apt upgrade apt dist-upgrade
During the upgrade, you may be asked if you would like to restart services. You can safely say no to this, as you will be rebooting later.
You may also be told there is a conflict between configuration files. If you are certain there are no breaking changes between versions, you can choose to
keep the local version currently installed. If you are uncertain, you should
show the differences between versions.
Finally, reboot into Debian 10.
Step 5: Cleanup
Ensure your server has been upgraded by running
lsb_release -a. The output should look like the following.
No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster
You can remove any leftover dependencies with
apt autoremove --purge.
If you have dependency problems which
apt cannot resolve, using
aptitude may help.
In the case that your system will not boot after the upgrade, you can use single-user mode to debug it. If this doesn’t work, you can attach a live ISO to your virtual machine and
chroot into your system to debug it.