Saturday, October 13, 2018

Migrating from ElementaryOS 0.4 to Ubuntu 16.04 without reinstalling

The Good

ElementaryOS is one handsome Linux distribution. It is elegant in the execution and I would recommend it to any Apple refugees who're not tied to any exclusively MacOS applications, along with any newcomer to Linux in general.

It had been my distribution of choice on a netbook at home for a while to my great satisfaction. So when it came time to replace my development workstation I thought, "Why not give Elementary a go in the work environment?"

The Bad

The Elementary team deservedly pride themselves in delivering a coherent experience. The project has its own UI and UX guidelines, its own toolkit, its own libraries, its own utilities and applications like the desktop and terminal app to name just two. This is understandable, because it helps give the user a consistent interface and experience.

But the applications I use in my work environment make assumptions about the environment they are running on, and try to integrate with that environment. For example: at my job we use Subversion as our revision control solution. We also use C# as the main development language. So RabbitVCS and MonoDevelop are an important part of my everyday workflow. But RabbitVCS integrates with Gnome's Files (nautilus) but not with Elementary's Files (pantheon-files). Similarly MonoDevelop fails to launch a console application for debugging if Gnome's Terminal application (gnome-terminal) is not installed, thereby completely ignoring the availability of Elementary's Terminal application (pantheon-terminal).

I also needed to run DBeaver, Thunderbird and Virtual Machine Manager, to name a few of the other applications that are outside of the Elementary ecosystem. Granted, it is easy enough to install these applications. But having them living on my desktop destroyed the aesthetic harmony that was the main reason to run this distribution in the first place.

So after some internal deliberation I decided that I might just as well migrate my machine to Ubuntu, as that would be more in line to what the applications I use expect to be running on.

And The Ugly

Being that Elementary is based on Ubuntu I wanted to perform the migration without requiring a reinstall. But what packages would I need to install and uninstall to leave my machine running as if I had installed Ubuntu on it in the first place?

I decided to fire up a VM on my laptop to investigate. I first installed ElementaryOS 0.4.1 Loki (the current stable, and the one I run on my workstation) on it. Then I went about installing the ubuntu-desktop meta packages, which pulled in and installed all the dependencies:
$ sudo apt install sudo apt install ubuntu-desktop
Next I removed every package that I could find that was obviously related to ElementaryOS and the pantheon distribution:
$ sudo apt --purge autoremove elementary-desktop elementary-standard \
  elementary-minimal plymouth-theme-elementary* \
  elementary-icon-theme elementary-theme libgranite-common \
  pantheon-terminal libwingpanel-2.0-0 elementary-dpms-helper \
  libreoffice-style-elementary libswitchboard-2.0-0 
Lastly I disabled the ElementaryOS specific repositories under Software-Updates:
After a reboot, I had me an Ubuntu 16.04 with Unity 7 that looked like it was what I had installed in the first place.

Now it probably is not completely like a fresh Ubuntu 16.04 install, as I suspect a few of the Ubuntu packages that were patched by the Elementary project still linger on. At some time in the future I might dive in and weed these out. The responsible thing would be to do this sooner rather than later, since by disabling the repositories these packages came from I also blocked off the route to security updates on them. But that might be the subject of a future blogpost.

No comments:

Post a Comment