I finally bit the bullet and figured out how to run a mixed-release system using Apt.
That means I can mostly stick with a stable release; in this case, that’s Ubuntu Linux, using the latest official release: Edgy Eft, which came out in October. But I can’t have the very latest version of a few manually-selected packages running; in this case that’s WordPress.
The Ubuntu folks create a release and then don’t change anything in that release except for security updates. Unfortunately WordPress is not a supported package in Ubuntu-land. It’s part of the Universe component of the Ubuntu software repository, which means it’s not a core package that the Ubuntu team obsesses over, but rather a community-contributed package. It’s up to the community at large to update the WordPress package and upload it, so that the so-called Masters of the Universe can publish it to the Ubuntu-loving masses. That also means that security updates to WordPress aren’t backported to Edgy.
The latest WordPress packages appear in the bleeding-edge Feisty Fawn release which is being assembled and will be officially released in April 2007. What to do between now and then, when there’s security fixes (WordPress 2.0.5 and 2.0.6) to be had?
Easy. Well, actually, not easy at all, it’s complicated as hell to understand, but quick to accomplish. Part of the problem is that the APT HOWTO uses Debian terminology that doesn’t apply to Ubuntu. The other part of the problem is that Apt-Pinning for Beginners is overcomplicated and is also Debian-specific.
Here’s what I did: I told Apt to use Edgy by default, but to also be aware of some Universe packages from the Feisty release. That allowed me to ask it to please install the Feisty version of WordPress. Here’s the techie details:
1) Add this to /etc/apt/apt.conf (I had to create this file on one of my servers):
1 |
APT::Default-Release "edgy"; |
That makes it prefer the Edgy Eft release, as opposed to just choosing the latest package available. So even when it can see the newer Feisty Fawn packages, it won’t suggest that you upgrade to them. You’ll have to ask explicitly for them.
2) Make a copy of this line:
1 |
deb http://us.archive.ubuntu.com/ubuntu/ edgy universe multiverse |
And change the “edgy” to “feisty”, and you get this:
1 |
deb http://us.archive.ubuntu.com/ubuntu/ feisty universe multiverse |
Now Apt will see all those newer packages, but because of step 1, it won’t do anything differently.
3) Tell Apt to install a package and specify a “target release” that you want it to use when looking in its sources for the version to install.
1 |
apt-get -t feisty install wordpress |
That says to override the Edgy default release and look in Feisty for WordPress.
As it turns out this is documented in the APT HOWTO under
how to keep a mixed system but the key bits I was missing were that you can just say edgy
instead of stable
and that’s all it takes to make it work on Ubuntu.
The other thing I hadn’t realized is that I could wait forever and WordPress 2.0.5+ would never be backported to Edgy because they’re in the Universe, so I have no choice but to work with the Feisty release of the Universe section if I want those security updates. Since the Edgy release of the Universe is no more or less supported than the Feisty release of the Universe, there’s really nothing lost there; nobody is promising that the Edgy Universe is super stable and tested. So, really, it might be safe to just undo step 1 and let Apt find all the Feisty Universe packages and suggest that it update them now. But I feel like being conservative about my servers so I keep them at the latest stable release + security updates, which is what I’ve got now.
Related: wordpress: new upstream: 2.0.6