You are here

Gentoo and Python 2.6

Gentoo has switched over to Python 2.6 from 2.5. This is good - I develop on 2.6, but have been deploying to 2.5. I migrated a huge commercial app from 2.4 to 2.6 earlier this year. I like 2.6.

But I didn't noticed that Gentoo had pushed out the update to become the default before merrily answering 'y' to 'emerge -avu world'. Oops.

It took down my Django based website for some time, maybe an hour in total; many hundreds of error 500 emails were received. The site usually receives anything from 5000-8000 hits on a Sunday. Oops.

It doesn't seem possible to avoid downtime with Django when doing a Gentoo portage-based Python upgrade. Perhaps now is the time to cluster the site over a couple of servers. That is, after all, part of what I do for my day job - clustering Django based apps and webapps.

Why is downtime unavoidable? Or at least, from my immediate knowledge?

First you do 'emerge world' - this brings in the new python, and maybe some new python modules.

If you use those modules (it's a live server, everything on there is used) then they will be removed from 2.5 and installed for 2.6 - your 2.5 apps loose access to them. Boom. Solution - pay attention, don't emerge world and emerge only python, so the packages are installed in a controlled way.

Afterwards, you need to run python-update. So even if you manage to emerge python 2.6 okay, you'll still get the remove/reinstall cycles here as python-update reinstalls each package for python 2.6. Boom.

This is far from being a disaster, but got a little exciting as I waited for pygtk to compile on a 256MB Slicehost - it needs a fair bit of memory at one point of the compilation, so I shut down Apache and everything else to reduce swap usage to a mere ~256MB. My word did that get slow.