I’ve recently decided to move away from Linux Mint to Debian. This blog post (and one or two more) will detail how I went about installing and configuring it.

This will probably be quite long and possibly quite technical, but hopefully should be understandable if you have some basic Linux knowledge.

If you’re not interested in reading the blurb that led me to switch to Debian, scroll down to the Initial Setup section.

Why Debian?

A few reasons:

  1. I haven’t liked the direction Ubuntu has been taking for the last few years
  2. I plan to make more use of Debian for personal and work servers (versus Ubuntu)
  3. I’ve got a new laptop and wanted a fresh start

Although point 1 isn’t a major deciding factor for my move (more so because I am using Linux Mint versus vanilla Ubuntu), I am keen to avoid software that seems very Ubuntu-centric (Upstart, for example) and instead use more widely used alternatives such as systemd.

In terms using Debian for servers: I haven’t really had any issues using Ubuntu LTS, but I don’t feel comfortable performing dist-upgrades for those (some will insist on performing complete re-installs, which I’m inclined to agree with). Debian’s method of upgrading from oldstable to the new stable seems easier and more reliable. I haven’t put this into practice yet, but it’s something to consider for non-essential servers.

I also had some objectives with this installation:

  1. Replicate as closely as possible the Cinnamon desktop environment, with XFCE4
  2. Make use of newer packages without compromising day-to-day stability too much
  3. Keep the system as “clean” as possible (avoiding gratuitous use of 3rd-party repos)

I’ve been drawn to Cinnamon since I first used Linux Mint a few years ago, after switching from Ubuntu around the time that Unity was introduced. Unfortunately, at the time of writing, Cinnamon doesn’t seem to work properly on Debian Wheezy (when tested in a virtual machine), so I’ve decided to use XFCE4 after having tried and compared it against GNOME 3.

In the next post I will outline the changes I’ve made to XFCE4 to bring it more in-line with what I like and am used to; hopefully you might find some of these changes useful too.

Regarding point 2: I’m of the camp that prefers a stable desktop to one that’s constantly in flux, such as Arch. I should make it clear that I like and admire Arch, and have tried it myself (and have it running on a Raspberry Pi currently), but Debian is what I’m used to, know my way around, and what I want to focus my personal and professional life on for the near future.

Initially while testing, I used Debian Stable in a virtual machine but noticed that XFCE4 was a version behind and the current version included some features that I would require in my quest to replicate Cinnamon, hence the decision to run on the testing source with unstable as an additional (optional) source.

Finally, point 3: In the past I have had the habit of using PPAs and 3rd party repositories for various software. After a while, these start to become outdated, unsupported or just plain removed. My intention this time around is to stay with the official Debian repositories as much as possible, albeit with some exceptions for things like Google Chrome.

So, to the actual content now that the preliminaries are covered…

Initial Setup

First, I perform a standard install - I do not select any desktop environment at this stage, as I prefer to do this manually.

After rebooting into my new Debian system, I changed my APT sources to use the Debian HTTP mirror redirector instead of ftp.uk.debian.org which was selected during installation. Note that you should not change the security.debian.org lines to use this.

Next, I update, upgrade, and dist-upgrade with apt-get - I wanted to make sure everything was up to date before switching my sources to testing.

It’s suggested to install apt-listbugs and apt-listchanges when using testing/unstable, so I apt-get install those.

Now’s the time to change to testing and unstable - to do this, I changed all references to wheezy in /etc/apt/sources.list to testing and removed the wheezy-updates lines. I also appended contrib non-free to each line, to enable the other repositories.

I then added the unstable sources to the file so that I’m able to install packages from there if the testing version is broken or otherwise unsuitable.

Here’s my /etc/apt/sources.list file for comparison:

deb http://http.debian.net/debian/ testing main contrib non-free
deb-src http://http.debian.net/debian/ testing main contrib non-free

deb http://http.debian.net/debian/ unstable main contrib non-free
deb-src http://http.debian.net/debian/ unstable main contrib non-free

deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free

Now I need to tell Debian that I prefer the testing over unstable when installing packages. To do this, create /etc/apt/apt.conf.d/00local and add the following:

APT::Default-Release "testing";

Once done, proceed to update, upgrade and dist-upgrade with apt-get to upgrade your system to testing.

During the upgrade you may see a prompt to install/upgrade package - this is apt-listbugs doing its thing and showing bugs that could potentially cause problems. It’s a good idea to copy this text somewhere in case you need to reference it if the worst does happen. Similarly, you may see a list of changelog entries after continuing. These are worth reading.

Once the upgrade process has completed, I installed XFCE4 and LightDM with apt-get install lightdm xfce4 xfce4-goodies, then ran an apt-get autoclean to remove any old packages and then rebooted the system.

At this point, I installed some bits and pieces I prefer, such as postfix, sudo and vim-nox.

The next blog post will detail the XFCE4 changes I made.