Time to Upgrade!

Well perhaps it isn’t time to upgrade my main system yet but having installed debian wheezy on a virtual machine I thought I’d try upgrading to see what the differences were between wheezy and jessie.

If you are already running debian wheezy on a physical machine then the process of upgrading from wheezy to jessie will be the same, however I’m starting with a minimal system and plan on installing a graphical desktop environment later. If you already have GNONE, XFCE, LXDE or similar installed you may encounter some issues migrating your desktop settings to a newer version that I won’t have seen yet. (I know I encountered some minor issues when I tried upgrading from MATE 1.6 to MATE 1.8 a few months ago).

Getting Started

To begin you need to log in as root. Make a mote of the version of the kernel when the system starts, if you follow this process you shouldn’t need to do anything other than just accept the defaults, but you might need to select the new kernel version later, so you may as well make a note of the current version now.

Reconfigure APT

To upgrade the existing system you need to modify the package sources so that they point to the repositories for the new release.

# vi /etc/apt/sources.list

You then need to replace every occurrence of the current release with the new release in the list of package sources.

deb ftp://ftp.uk.debian.org/debian/ jessie main
#deb-src ftp://ftp.uk.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
#deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb ftp://ftp.uk.debian.org/debian/ jessie-updates main
#deb-src ftp://ftp.uk.debian.org/debian/ jessie-updates main

When you have done that save the new file and re-synchronize the package index files from the new sources.

# apt-get update
Fetched 11.1 MB in 25s (440 kB/s)
Reading package lists... Done

Start the upgrade

Then download and install the latest versions of the installed packages, using 'dist-upgrade' rather then 'upgrade' so that the existing versions are replaced, if you use 'upgrade' then some existing packages that would have been replaced will be held back and not upgraded. (I also prefer not to install the recommended packages by default). Be warned that this is going to take a while, and some of the new packages will require you to confirm the installation options, so if you do leave the upgrade running while you grab a pizza, don't forget to check on how it is progressing every now and then...

# apt-get dist-upgrade --no-install-recommends
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  dh-python gcc-4.9-base init-system-helpers iproute2 libaudit-common 
  libaudit1 libboost-iostreams1.54.0 libcap2 libdb5.3 libee0 libestr0
  libffi6 libgmp10 libgnutls-openssl27 libgnutls28 libhogweed2 libjson-c2
  liblogging-stdlog0 liblognorm0 libmpdec2 libnettle4 libpcre3 libpng12-0
  libprocps3 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  libpython3-stdlib libpython3.3-minimal libpython3.3-stdlib libtasn1-6
  libudev1 libxtables10 linux-image-3.13-1-686-pae openssh-sftp-server perl
  perl-modules python3 python3-minimal python3.3 python3.3-minimal startpar
The following packages will be upgraded:
  acpi acpi-support-base acpid apt apt-utils aptitude aptitude-common
  base-files base-passwd bash bsdmainutils bsdutils busybox console-setup
  console-setup-linux coreutils cpio dash debconf debconf-i18n debianutils
  dictionaries-common diffutils discover-data dmidecode dmsetup dpkg
  e2fslibs e2fsprogs eject findutils gcc-4.7-base gettext-base gnupg gpgv
  grep groff-base grub-common gzip hostname ifupdown info initramfs-tools
  initscripts install-info installation-report iproute iptables
  iputils-ping isc-dhcp-client isc-dhcp-common kbd keyboard-configuration
  klibc-utils kmod libacl1 libapt-inst1.5 libapt-pkg4.12 libasprintf0c2
  libattr1 libblkid1 libbsd0 libbz2-1.0 libc-bin libc6 libc6-i686
  libcomerr2 libcwidget3 libdb5.1 libdevmapper1.02.1 libedit2
  libept1.4.12 libexpat1 libfreetype6 libfuse2 libgcc1 libgcrypt11
  libgdbm3 libgnutls26 libgpg-error0 libgssapi-krb5-2 libidn11
  libk5crypto3 libkeyutils1 libklibc libkmod2 libkrb5-3 libkrb5support0
  liblocale-gettext-perl libmount1 libncurses5 libncursesw5 libnewt0.52
  libnfnetlink0 libp11-kit0 libpam-modules libpam-modules-bin
  libpam-runtime libpam0g libpci3 libpipeline1 libpopt0 libreadline6
  libselinux1 libsemanage-common libsemanage1 libsepol1 libsigc++-2.0-0c2a
  libslang2  libsqlite3-0 libss2 libssl1.0.0 libstdc++6
  libtext-charwidth-perl libtext-iconv-perl libtinfo5 libusb-0.1-4
  libusb-1.0-0 libuuid-perl libuuid1 libwrap0 libxapian22
  linux-image-686-pae localepurge locales login logrotate lsb-base man-db
  manpages mime-support module-init-tools mount multiarch-support nano
  ncurses-base ncurses-bin net-tools netbase ntpdate openssh-client
  openssh-server passwd pciutils perl-base procps python python-minimal
  python2.7 python2.7-minimal readline-common rsyslog sed sensible-utils
  sysv-rc sysvinit sysvinit-utils tar task-english tasksel tasksel-data
  traceroute tzdata ucf udev ufw usbutils util-linux util-linux-locales
  vim-common vim-tiny wget whiptail xkb-data zlib1g
175 upgraded, 43 newly installed, 0 to remove and 0 not upgraded.
Need to get 107 MB of archives.
After this operation, 173 MB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 ... jessie/main base-files i386 7.3 [80.9 kB]
Get:2 ... jessie/main debconf all 1.5.53 [168 kB]
Get:3 ... jessie/main libcap2 i386 1:2.22-1.2 [14.0 kB] 

Select you keyboard layout when prompted.
Then you need to decide it you are going to continue allow the root user to authenticate using a password when connecting via ssh. Unless you know that you do NOT want to be able to use a password to login as root using ssh I'd select 'No'. You can reconfigure ssh using 'dpkg-reconfigure openssh-server' if you change your mind later.
Then you will need to select which locales to install - since I'm in the UK I select ONLY the two locales shown, and deselect any others.

Setting up libc6:i386 (2.18-5) ...
Checking for services that may need to be restarted...
Checking init scripts...

When asked to confirm that you want to restart any services without being prompted every time select 'Yes'.

Restarting services possibly affected by the upgrade:
  cron: restarting...done.

Services restarted successfully.

Finally you can expect to get a message telling you that the new release has added support for some additional locales.

Some new locales have appeared on your system:

de@hebrew en@arabic en@cyrillic en@greek en@hebrew en@piglatin 

They will not be touched until you reconfigure localepurge
with the following command:

    dpkg-reconfigure localepurge

localepurge: Disk space freed in /usr/share/locale: 55812 KiB
localepurge: Disk space freed in /usr/share/man: 3872 KiB

Total disk space freed by localepurge: 59684 KiB


You need to reconfigure localepurge to update your locale settings (even though we only just set them at the beginning of the upgrade). Then rerun localepurge to remove any new locale files.

# dpkg-reconfigure localepurge


Replacing config file /etc/locale.nopurge with new version
# localepurge
localepurge: Disk space freed in /usr/share/locale: 840 KiB
localepurge: Disk space freed in /usr/share/man: 0 KiB

Total disk space freed by localepurge: 840 KiB

Upgrade the kernel

At this point the system is still using the old kernel, so we need to reboot and select the new kernel.

# reboot

Check that the new kernel is selected when the system reboots.
qemu-jessie-upgrade-13To finish off the upgrade we need to log in as root and remove the old kernel and any packages that are no longer required.
Note - You may want to leave this step until you have had a chance to check that everything is working properly, as upgrading the kernel can cause problems with some devices, particularly wireless network cards.

# apt-get purge linux-image-3.2.0-4-686-pae
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no
longer required:
  python python-minimal python2.7 python2.7-minimal
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 82.1 MB disk space will be freed.
Do you want to continue? [Y/n] 
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-3.14-1-686-pae
Updating /boot/grub/menu.lst ... done
The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
You may need to re-run your boot loader
The link /initrd.img.old is a damaged link
Removing symbolic link initrd.img.old 
You may need to re-run your boot loader
Purging configuration files for linux-image-3.2.0-4-686-pae (3.2.51-1) ...
Examining /etc/kernel/postrm.d .
# apt-get autoremove --purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  python* python-minimal* python2.7* python2.7-minimal*
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 4,409 kB disk space will be freed.
Do you want to continue? [Y/n] 

Since I started out with a minimal system, I plan to install the latest versions of XFCE, LXDE and MATE to see what they are like.

This entry was posted in Debian, Linux. Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s