Posts Tagged With 'canonical'
So, now all the world now knows that my suggested code name for Ubuntu 12.10,
Qwazy Quahog, was not chosen by Mark. Oh well, maybe I'll have more luck
with Racy Roadrunner.
In any case, Ubuntu 12.04 LTS is to be released any day now so it's time
for my semi-annual report on Python plans for Ubuntu. I seem to write about
this every cycle, so 12.10 is no exception. We've made some fantastic
progress, but now it's time to get serious.
For Ubuntu 12.10, we've made it a release goal to have Python 3 only on the
desktop CD images. The usual caveats apply: Python 2.7 isn't going away; it
will still probably always be available in the main archive. This release
goal also doesn't affect other installation CD images, such as server, or
other Ubuntu flavors. The relatively modest goal then only affects
packages for the standard desktop CD images, i.e. the alternative installation
CD and the live CD.
Update 2012-04-25: To be crystal clear, if you depend on Python 2.7, the
only thing that changes for you is that after a fresh install from the
desktop CD on a new machine, you'll have to explicitly apt-get install
*python2.7. After that, everything else will be the same.
This is ostensibly an effort to port a significant chunk of Ubuntu to Python
3, but it really is a much wider, Python-community driven effort. Ubuntu has
its priorities, but I personally want to see a world where Python 3 rules the
day, and we can finally start scoffing at Python 2 :).
Still, that leaves us with about 145 binary packages (and many fewer source
packages) to port. There are a few categories of packages to consider:
- Already ported and available.
- This is …
Continue reading »
Update 2016-11-28: I've updated this article with new instructions!
sbuild is an excellent tool for locally building Ubuntu and Debian packages.
It fits into roughly the same problem space as the more popular pbuilder, but
for many reasons, I prefer sbuild. It's based on schroot to create chroot
environments for any distribution and version you might want. For example, I
have chroots for Ubuntu Oneiric, Natty, Maverick, and Lucid, Debian Sid,
Wheezy, and Squeeze, for both i386 and amd64. It uses an overlay filesystem
so you can easily set up the primary snapshot with whatever packages or
prerequisites you want, and the individual builds will create a new session
with an overlaid temporary filesystem on top of that, so the build results
will not affect your primary snapshot. sbuild can also be configured to save
the session depending on the success or failure of your build, which is
fantastic for debugging build failures. I've been told that Launchpad's build
farm uses a customized version of sbuild, and in my experience, if you can get
a package to build locally with sbuild, it will build fine in the main archive
or a PPA.
Right out of the box, sbuild will work great for individual package builds,
with very little configuration or setup. The Ubuntu Security Team's wiki
page has some excellent instructions for getting started (you can stop
reading when you get to UMT :).
One thing that sbuild doesn't do very well though, is help you build a stack
of packages. By that I mean, when you have a new package that itself has new
dependencies, you need to build those dependencies first, and then build your
new package based on those dependencies. Here's an example.
I'm working on bug 832864 and I wanted to see if I could build the …
Continue reading »
TL;DR: Ubuntu 12.04 LTS will contain only Python 2.7 and 3.2, while Ubuntu
11.10 will contain Python 3.2, 2.7 and possibly 2.6, but possibly not.
Last week, I attended the Ubuntu Developer Summit in Budapest, Hungary.
These semi-annual events are open to everyone, and hundreds of people
participate both in person and remotely. Budapest's was called UDS-O, where
the 'O' stands for Oneiric Ocelot, the code name for Ubuntu 11.10, which
will be released in October 2011. This is where we did the majority of
planning for what changes, new features, and other developments you'll find in
the next version of Ubuntu. UDS-P will be held at the end of the year in
Orlando, Florida and will cover the as yet unnamed 12.04 release, which will
be a Long Term Support release.
LTS releases are special, because we make longer guarantees for official
support: 3 years on the desktop and 5 years on the server. Because of this,
we're making decisions now to ensure that 12.04 LTS is a stable, confident
platform for years to come.
I attended many sessions, and there is a lot of exciting stuff coming, but I
want to talk in some detail about one area that I'm deeply involved in.
What's going to happen with Python for Oneiric and 12.04 LTS?
First, a brief summary of where we are today. Natty Narwhal is the code
name for Ubuntu 11.04, which was released back in April and is the most recent
stable release. It is not an LTS though; the last LTS was Ubuntu 10.04 Lucid
Lynx, release back in October 2010. In Lucid, the default Python
(i.e. /usr/bin/python) is 2.6 and Python 2.7 is not officially …
Continue reading »
My friends and family often ask me what I do at my job. It's easy to
understand when my one brother says he's a tax accountant, but not so easy
to explain the complex world of open source software development I live in.
Sometimes I say something to the effect: well, you know what Windows is, and
you know what the Mac is right? We're building a third alternative called
Ubuntu that is free, Linux-based and in most cases, much better. Mention
that you won't get viruses and it can easily breathe new life into that old
slow PC you shudder to turn on, and people at least nod their heads
enthusiastically, even if they don't fully get it.
I've been incredibly fortunate in my professional career, to have been able to
share the software I write with the world for almost 30 years. I started
working for a very cool research lab with the US Federal government while
still in high school. We had a UUCP connection and were on the early
Arpanet, and because we were funded by the US taxpayer, our software was not
subject to copyright. This meant that we could share our code with other
people on Usenet and elsewhere, collaborate with them, accept their
suggestions and improvements, and hopefully make their lives a little better,
just as others around the world did for us. It was free and open source
software before such terms were coined.
I've never had a "real job" in the sense of slaving away in a windowless cube
writing solely proprietary software that would never see the light of day.
Even the closed source shops I've worked at have been invested somehow in
free software, and with varying degrees of persuasion, have both benefited
from and contributed to the …
Continue reading »
I'm doing some work these days on trying to get Python 2.7 as the default
Python in the next version of Ubuntu, Maverick Meerkat (10.10). This work
will occasionally require me to break my machine by installing experimental
packages. That's a good and useful thing because I want to test various
potentially disruptive changes before I think about unleashing them on the
world. This is where virtual machines really shine!
To be efficient, I need a really fast turnaround from known good state, to
broken state, back to known good state. In the past, I've used VMware Fusion
on my Mac to create a VM, then take a live snapshot of the disk before making
my changes. It was really easy then to revert to the last known good
snapshot, try something else and iterate.
But lately Fusion has sprouted a nasty habit of freezing the host OS, such
that a hard reboot is necessary. This will inevitably cause havoc on the
host, by losing settings, trashing mail, corrupting VMs, etc. VMware can't
reproduce the problem but it happens every time to me, and it hurts, so I'm
not doing that any more :).
Back to my Lucid host and libvirt/kvm and the sanctuary of FLOSS. It's
really easy to create new VMs, and there are several ways of doing it, from
virt-manager to vmbuilder to straight up kvm (thanks Colin for some
recipes). The problem is that none of these are exactly fast to go from
bare metal to working Maverick VM with all the known good extras I need (like
openssh-server and bzr, plus my comfortable development environment).
I didn't find a really good fit for vmbuilder or the kvm commands, and I'm not
smart enough to use the libvirt command line tools, but I think …
Continue reading »
My friend Tim is working on a very cool Bazaar-backed wiki project and he
asked me to package it up for Ubuntu. I'm getting pretty good at packaging
Python projects, but I always like the practice because each time it gets a
little smoother. This one I managed to package in about 10 minutes so I
thought I'd outline the very easy process.
First of all, you want to have a good setup.py, and if you like to cargo
cult, you can start with this one. I highly recommend using
Distribute instead of setuptools, and in fact the former is what Ubuntu gives
you by default. I really like adding the distribute_setup.py which gives
you nice features like being able to do python setup.py test and many other
things. See lines 18 and 19 in the above referenced setup.py file.
The next thing you'll want is Andrew Straw's fine stdeb package, which you
can get on Ubuntu with sudo apt-get install python-stdeb. This package is
going to bootstrap your debian/ directory from your setup.py file.
It's not perfectly suited to the task (yet, Andrew assures me :), but we can
make it work!
These days, I host all of my packages in Bazaar on Launchpad, which is going
to make some of the following steps really easy. If you use a different
hosting site or a different version control system, you will have to build
your Ubuntu package using more traditional means. That's okay, once you have
your debian/ directory, it'll be fairly easy (but not as easy as described
here). If you do use Bazaar, you'll just want to make sure you have the
bzr-builddeb plugin. Just do sudo apt-get install bzr-builddeb on
Ubuntu and you should get everything you need.
Okay, so now you …
Continue reading »
Today I finally swapped my last Gentoo server for an Ubuntu 10.04 LTS
server. Gentoo has served me well over these many years, but with my emerge
updates growing to several pages (meaning, I was waaaay behind on updates with
almost no hope of catching up) it was long past time to switch. I'd moved my
internal server over to Ubuntu during the Karmic cycle, but that was a much
easier switch. This one was tougher because I had several interdependent
externally facing services: web, mail, sftp, and Mailman.
The real trick to making this go smoothly was to set up a virtual machine
in which to install, configure and progressively deploy the new services. My
primary desktop machine is a honkin' big i7-920 quad-core Dell with 12GB of
RAM, so it's perfectly suited for running lots of VMs. In fact, I have
several Ubuntu, Debian and even Windows VMs that I use during my normal
development of Ubuntu and Python. However, once I had the new server ready to
go, I wanted to be able to quickly swap it into the real hardware. So I
purchased a 160GB IDE drive (since the h/w it was going into was too old to
support SATA, but still perfectly good for a simple Linux server!) and a USB
drive enclosure. I dropped the new disk into the enclosure, mounted it on the
Ubuntu desktop and created a virtual machine using the USB drive as its virtio
It was then a pretty simple matter of installing Ubuntu 10.04 on this USB
drive-backed VM, giving the VM an IP address on my local network, and
installing all the services I wanted. I could even register the VM with
Landscape to easily keep it up-to-date as I took my sweet time …
Continue reading »