Upgrade Debian 8 Jessie to Debian 9 Stretch

Debian 9 Stretch comes with a significant amount of new and updated packages as well as a score of packages had been marked obsolete. According to Debian release notes, the new release has a lot more software than its predecessor Jessie. The distribution includes a total of over 51687 packages, of which over 15346 are new packages. The majority of the software in Stretch has been updated: over 29859 software packages that are around 57% of all packages in Jessie. There are 6739 packages which are removed from Stretch due to various reasons.

In this tutorial, I will explain the process to upgrade Debian 8 Jessie to Debian 9 Stretch in a few simple steps.

Backup the data and configuration files

Before you start with the actual upgrade, first make sure that you back up all critical data and configurations. This especially includes configuration data in /etc directory and the user data in /home. If you are running a database server like MySQL or PostgreSQL on Debian 8, consider creating a backup of all your databases. The easiest way to backup everything is to create a server snapshot. For AWS EC2 or Digital Ocean droplet, you can create a snapshot from your server settings. If anything goes wrong during the upgrade, you will be able to revert back to the old setup by restoring a snapshot.

Update Debian 8 packages

Before upgrading to Stretch, we will first install all available Jessie updates. To avoid an unwanted early upgrade to Stretch, you should first check the sources.list file to ensure that it only contains jessie sources and no stable sources. Run the following command to open the sources.list file on a command-line editor:

$ nano /etc/apt/sources.list

Make sure your sources.list contains the following:

deb http://httpredir.debian.org/debian jessie main contrib non-free
deb http://httpredir.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org jessie/updates main contrib non-free

Now run the following commands to install and upgrade all the pending and current Jessie packages. It will make sure that your system is update-to-date for the upgrade to Stretch.

$ apt update
$ apt upgrade
$ apt dist-upgrade

Before we proceed with the Stretch upgrade, check the package state to ensure that there are no packages on hold or in the half-installed state with the following commands:

$ dpkg --audit
$ dpkg --get-selections | grep hold

If both commands return nothing, then proceed with the next step.

Upgrade to Debian 9 Stretch

First of all, edit sources.list file again and replaces its content with the following lines:

$ nano /etc/apt/sources.list
deb http://httpredir.debian.org/debian stretch main contrib non-free
deb http://httpredir.debian.org/debian stretch-updates main contrib non-free
deb http://security.debian.org stretch/updates main contrib non-free

Save the file and then run the following commands to update and upgrade packages to Stretch:

$ apt update
$ apt upgrade
$ apt dist-upgrade

The last command will do the distribution upgrade to Debian 9 Stretch. If everything goes well, your server will be upgraded to Debian 9 Stretch. A reboot is required to finish the upgrade and to load the new kernel. Run the following command in your terminal to reboot:

$ reboot

That's all. If you want to check which Debian version you are currently running, execute the following command to take a look at the file /etc/os-release.

$ cat /etc/os-release

✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.

You might also like...

Digital Ocean

The simplest cloud platform for developers & teams. Start with a $200 free credit.

Buy me a coffee ☕

If you enjoy reading my articles and want to help me out paying bills, please consider buying me a coffee ($5) or two ($10). I will be highly grateful to you ✌️

Enter the number of coffees below:

✨ Learn to build modern web applications using JavaScript and Spring Boot

I started this blog as a place to share everything I have learned in the last decade. I write about modern JavaScript, Node.js, Spring Boot, core Java, RESTful APIs, and all things web development.

The newsletter is sent every week and includes early access to clear, concise, and easy-to-follow tutorials, and other stuff I think you'd enjoy! No spam ever, unsubscribe at any time.