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).
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.
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 sysvinit-core 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...
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.
Check that the new kernel is selected when the system reboots.
To 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: linux-image-3.2.0-4-686-pae* 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.