Distribution Upgrades and Version Control

I have been alternating between 2 partitions for installations, to always keep one working system while overwriting the outdated one with the newest release. It might be worth a thought to explicitly encourage / support this approach.

This time it took a month until I actually made the switch, going from Ubuntu 9.10 to 10.04. A pile of custom settings and manually build software made me reluctant.

A journal of configuration changes could help a bit, but would be more interesting for system administration in general.

If I remember correctly, there’s already the option to import emails and settings for Evolution and at least bookmarks for Firefox during installation. That’s nice, but not enough. Handling this on an application-specific basis will likely always mean that this stays incomplete. It’s also not exactly reliable, as I found out once, where I would have wanted to use the settings of the installation to be replaced with the new one. Yeah, I know what and how to backup, but just imagine you would have to explain all that to a not so technical minded user …

There should be backup my settings and matching import features. In the case of an email client like Evolution, it would help if emails were stored as separate files, so they could be backed up and restored with other data, easily.

What if installing a distribution release would be like creating a (shallow) clone of a repository? You could commit your edits to configuration files and thus have a log of the changes. You could generate a change-set, do an upgrade and apply it and have all your customizations restored, as far as possible. With a list of the changes that can’t be applied anymore, so you know what you have to investigate or simply live with.

About thorwil
I'm a designer from Germany. My main interests are visual and interaction design, free/open-source software and (electronic) music.

6 Responses to Distribution Upgrades and Version Control

  1. chris says:

    That’s exactly one of the features that will hopefully come with btrfs.

  2. someone says:

    hrm it’s not the same thing but linux mint can save a list of installed packages that can later be loaded and automatically installed – that combined with keeping a home partition or backing up the user dir is a start.

    The only reason I use mint actually.

  3. Dieter@be says:

    +1 for btrfs snapshots. It’s a better approach then using multiple partitions for this.
    Also, you might want to have a look at etckeeper.

    Dieter

  4. peregil says:

    I usually keep my settings, mail, an other stuff in a separate partition or HD mounted at /home. It is simple and remains safe in case of data corruption on /.

    Another approach is to automate the backup of your precious data with a backup tool, and restore from the backup every time you make your upgrading experiments.

  5. Christian says:

    I have a similar approach but I use separate hard drives that I switch between depending on my use. This is made easy with my Addonics hard drive array with power buttons to power up the drive I want to boot.

    (example http://www.amazon.com/Disk-Array-Black-Bezel-Drive/dp/B000E57DW4/ref=sr_1_30?ie=UTF8&s=electronics&qid=1275922347&sr=8-30)

    As for synchronizing configurations, I have started to copy my configuration folder to Ubuntu One and create a link to them in my home directory. This allows me to have identical configurations between machines.

    Steps:
    1. In your home dir locate the folder that contains the settings you want to sync.
    2. you might have to enable “show hidden files” in Nautilus
    3. Move the folder to the Ubuntu One folder
    4. right click the folder that was moved and select “create link”
    5. move the link back to your home directory
    6. rename the link to be the same name as what was copied
    7. test if your application works properly
    8. follow steps 4 through 7 on another computer once Ubuntu One has synced

  6. The final paragraph seems to describe Conary pretty well.

%d bloggers like this: