|
|
Subscribe / Log in / New account

Getting multiarch dpkg into Debian

By Jonathan Corbet
March 6, 2012
"Multiarch" is Debian's name for its approach to supporting multiple architecture ABIs on a single system; LWN recently covered the multiarch work in some detail. Multiarch support is one of the goals for the upcoming "wheezy" release; since that release is getting closer to its freeze time, Debian developers naturally want to have all the necessary code merged into the distribution and ready for testing. A disagreement over the uploading of one of the crucial pieces of the multiarch puzzle recently threatened that goal and provided an interesting view of the higher levels of the Debian project's governance mechanisms in action.

Clearly, a functioning multiarch implementation will require extensive support from the packaging mechanism. To that end, a number of developers have been working on extending the dpkg utility for some time; patch sets adding multiarch support to dpkg were posted as early as 2009. Much of this work has been supported by Canonical and Linaro, so it is not entirely surprising that it shipped first with the Ubuntu distribution; the 11.04 release included basic multiarch support. Until very recently, though, the necessary dpkg changes had not found their way into Debian - not even into the experimental repository.

A number of attempts have been made over time to push the dpkg changes into experimental. The holdup each time appears to have been the same: dpkg maintainer Guillem Jover blocked the push until he could do a full review of the relevant code. The problem, it seems, is that this review never happened; Guillem is a busy developer and has not been able to find the time to do that work. So the multiarch-compatible dpkg remained out of the repository; only those willing to build it from source were able to test the multiarch changes. Playing with fundamental packaging system changes is scary enough without having to build the tools, so this situation can only have led to less testing of multiarch support in Debian as a whole.

In October, 2011, Philipp Kern, representing the release team, expressed concern about the delay, saying:

If we want to carry on with multiarch in wheezy it really should enter the archive now. The freeze deadline is approaching fast and we must be able to shake out all the bugs in the time that's left. Deprecating ia32-libs in a single cycle seems to be quite a bit of work, too.

Currently nobody can test multiarch with in-archive software. The multi arch patches did not even land in experimental, despite some pokes from fellow project members.

Philipp requested that the new dpkg find its way into experimental immediately, with a move to unstable two weeks later. But things did not happen that way; instead, Guillem blocked another attempt to upload the work into experimental. Debian project leader Stefano Zacchiroli responded with some concerns of his own:

What worries me is that there is multi-arch work in dpkg, work that has its origins in Debian. That work is ready enough to be deployed in popular Debian derivatives such as Ubuntu, but is not in Debian proper yet. That is bad for Debian morale and should be avoided. Moreover, that work is also considered ready enough by other dpkg co-maintainers, by the Release Team, and by various porters, which have all asked multiple times to have that work in the Debian archive.

Guillem did not respond to this message until March 3, 2012 - over four months after it was sent. Meanwhile, the dpkg work languished outside of the Debian repositories. In January, 2012, Cyril Brulebois pushed the new dpkg using the Debian non-maintainer update (NMU) process. An NMU can be a way to route around an unresponsive or distracted maintainer, but the process has its limits; in this case, Guillem simply reverted the NMU, leaving the situation as it was before.

At the beginning of February, Stefano apparently decided that the situation had gone on for too long. The powers of the project leader are famously limited, though; there was nothing Stefano could do on his own to force a solution to the problem. The Debian Technical Committee, however, is a different story; it is empowered by the Debian Constitution as the final decision maker in the case of otherwise unresolvable technical disputes. So Stefano referred the problem to the committee, asking that it decide whether one of the dpkg maintainers can block progress indefinitely in such a situation.

The committee did not need long to reach a decision; it concluded unanimously that Guillem's blocking of the dpkg upload should be overridden. Guillem was given a set of deadlines by which to get the code into experimental (then unstable); if those deadlines were not met, one of the other dpkg maintainers (Raphaƫl Hertzog) was given the power to do the upload instead. As it happens, Guillem met the deadline and Debian now has a multiarch-capable package manager. This move has spawned another massive email thread - but this is Debian we're talking about, so it's really just business as usual at this point. Multiarch in wheezy is back on track.

While the Technical Committee resolved this particular conflict, it did not (and probably could not hope to) resolve the larger question. Debian, like many free software projects, tries to make its decisions by consensus whenever possible. But the project also gives developers something close to absolute power over the packages that they maintain. Occasionally, those two principles will come into conflict, as was the case here. Resolving such conflicts will never be easy.

In this case, everybody was working toward the same goals. Even those who were most critical of Guillem's behavior stopped far short of suggesting that he was deliberately trying to delay the multiarch work. He was simply trying to ensure the highest level of technical excellence for a package he maintains - a package that is critical to the functioning of the distribution as a whole. The problem is that he ran afoul of a project that has been trying - with significant success - to bring a bit more predictability to the release process in recent years. Overriding him was probably necessary if the release goals were to be met, but it must still feel harsh to a developer who has put a lot of time into improving the project's core infrastructure.

A large project like Debian, in the end, will have occasional conflicts involving developers who, for whatever reason, are seen as holding up important changes. So there needs to be some sort of mechanism for avoiding and dealing with such blockages. Debian's approach, which includes having teams of developers (instead of a single person) working on important packages and the Technical Committee as a court of last resort appears to work pretty well. The benevolent dictator model used by a number of other projects can also be effective, depending on the quality of the dictator. In the end, our community does not often have serious problems in this area; we are able to manage the interactions of thousands of dispersed developers with surprisingly little friction. But it's good to know that these conflicts can be resolved when they do arise.


to post comments

Getting multiarch dpkg into Debian

Posted Mar 6, 2012 21:24 UTC (Tue) by alvieboy (guest, #51617) [Link] (4 responses)

Sounds indeed like Democracy to me.

I'm glad this finally moves on.

However, I can understand Guillem. I also develop and maintain a packaging system myself, and I'm not very open when it comes to change it, for the sake of stability. But sometimes we have to do it, and the first thing we need to do is to convince ourselves that those changes are indeed a necessary move. This is why I think Guillem did not accept them, he is not convinced they are necessary or that they lack the required quality (I think the former, but I might be wrong).

Still, he seems to have been forced to accept those changes. This will eventually cause a bigger problem, cause you cannot properly maintain something you don't agree with.

Hopefully Debian will manage to overcome this, and so Guillem. Let's hope they do, for the sake of their users (like myself).

Alvie

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 8:54 UTC (Wed) by josh (subscriber, #17465) [Link] (3 responses)

The "experimental" distribution exists for exactly this reason: testing out changes too dangerous to put in unstable (where they could otherwise potentially filter into testing and stable assuming no release-critical bugs). Objecting to an upload to unstable would seem very reasonable and appropriately cautious. However, uploading to experimental makes a lot of sense, as a way to let developers start testing out the functionality, reporting bugs, and figuring out how to make their packages work with it.

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 10:50 UTC (Wed) by stefanor (subscriber, #32895) [Link] (2 responses)

Practically, experimental is normally a staging area, rather than testing ideas. Guillem still had doubts about the design of multi-arch and, I presume, didn't want developers to adapt their packages to a multi-arch implementation that wouldn't be compatible with the final form.

Getting multiarch dpkg into Debian

Posted Mar 10, 2012 17:31 UTC (Sat) by mv (subscriber, #17258) [Link] (1 responses)

This follow-up may be interesting. Besides announcing an upload of multiarch capable dpkg to unstable, Guillem points out some results from the code review.

Getting multiarch dpkg into Debian

Posted Mar 11, 2012 22:15 UTC (Sun) by man_ls (guest, #15091) [Link]

Yes, it is really interesting, and it gives a new perspective on the whole article: the version of dpkg in experimental may cause db corruption.

Getting multiarch dpkg into Debian

Posted Mar 6, 2012 21:38 UTC (Tue) by cmorgan (guest, #71980) [Link] (1 responses)

I guess that's how Debian works. I've had the same kind of issues with the libpcap version in Debian, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657900 I understand that strictly speaking one could argue that the abi hasn't actually changed so the version should be kept at 0.8 but I'm just asking for a symlink to make things look like they do on Fedora/OpenSUSE. I've even considered trying to improve libpcap so the abi would change and would force Debian to resync with what the libpcap developers consider to be the "current" version number.

Chris

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 0:26 UTC (Wed) by scientes (guest, #83068) [Link]

something like this occurs with ruby 1.9.3, which has the package name of ruby1.9.1, (there is also a ruby1.9 (.0) which while confusing, I agree with. http://packages.debian.org/sid/ruby1.9.1

Getting multiarch dpkg into Debian

Posted Mar 6, 2012 22:36 UTC (Tue) by bug1 (guest, #7097) [Link] (5 responses)

Conflicts like this should never happen.

Development decisions and release management decisions should be made by different people, each have different goals. Developers have long term goals, release management short/medium term goals. There is a conflict of interest.

Unfortunately debian has a long history of linking the two.

Getting multiarch dpkg into Debian

Posted Mar 6, 2012 23:08 UTC (Tue) by alvieboy (guest, #51617) [Link]

I'm sorry ?

These conflicts arise every time because they have to (and glad they do). There's no actual split between "development" and "release management". Both have same goal - to get the best-of-the-art delivered to the user. Different motivations, perhaps, but goal is the same. Different paths to accomplish same goal, but they tend to balance each other.

Equilibrium is the key word. Like in everything else in life.

Now, saying that "Conflicts like this should never happen"... They do, and I'm glad they do - that means people actually worry about. Both developers, and "release managers".

Alvie

Getting multiarch dpkg into Debian

Posted Mar 6, 2012 23:19 UTC (Tue) by rahvin (guest, #16953) [Link] (3 responses)

First MultiArch as stated in the article is a long term goal of the entire project and everyone involved. The package maintainer just wanted time to review the code to ensure it met the standards for a package that basically controls the stability of the entire distribution.

Second, managing a process and people involved in that process is HARD even in commercial environments where you can tell someone what they should work on. It's even harder in environments where you can't tell someone what to do because they are a volunteer.

The package maintainer was right to want stability in dpkg and the technical committee was also right to want to move the code forward as it's a critical part of MultiArch. So if they are both right the trick is to bring about a solution that recognizes that and works with the process, that's HARD. As the article says the tech committee issued an ultimatum so the package maintainer made time for the review and got the patch merged. The process worked and in particular worked on a project with true democratic control and a mostly volunteer workforce. To me that's a direct indication of the dedications of the Debian maintainers. I think the only possibly negative thing this really indicates is that Guillem needs some more help (or needs to trust his helpers more) but DPKG is one of the most critical pieces of the Debian toolchain so I understand his caution.

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 11:11 UTC (Wed) by pboddie (guest, #50784) [Link] (1 responses)

I think the only possibly negative thing this really indicates is that Guillem needs some more help (or needs to trust his helpers more)

I think that the general point here is that in projects people need to be able to ask for help, and people must be willing to offer help. Again, in general, good management is about bringing these things together, whereas bad management (as many of us are unfortunately all too aware) often involves someone thinking that their job is merely to tell you what to do, frequently not contributing to the activity in any way other than to indicate that things must be done more quickly, as opposed to helping you get your work done by giving you what you need.

Getting multiarch dpkg into Debian

Posted Mar 12, 2012 10:00 UTC (Mon) by man_ls (guest, #15091) [Link]

May I nominate this comment for distribution quote of the week?

Getting multiarch dpkg into Debian

Posted Mar 8, 2012 2:05 UTC (Thu) by rgmoore (✭ supporter ✭, #75) [Link]

The package maintainer just wanted time to review the code to ensure it met the standards for a package that basically controls the stability of the entire distribution.

The underlying problem is that the standard procedure doesn't give any kind of deadline for the package maintainer to respond. That's reasonable because there really isn't a one-size-fits-all response interval, but it means there's a danger that something will be put on the back burner and never taken off because the maintainer always sees something else as a higher priority. That seems to have been what happened in this case, and it wasn't until the technical committee gave him a firm deadline that he bumped the priority enough to do the review.

The big question is whether there needs to be some general procedure for dealing with this kind of problem, or whether ad hoc solutions will work. This is a rare case where the package is on the critical release path for the whole project, so the technical committee really had to step in. But what happens when it's on a less important project that isn't going to hold up the whole release? Can a maintainer put off changes indefinitely because he wants to review everything and doesn't have time to do it? Does there need to be some kind of general process to generate a definitive answer for changes that have been delayed?

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 16:28 UTC (Wed) by walex (guest, #69836) [Link] (13 responses)

RPM and other packaging systems have not had this limitation EVER. Indeed RPM can also handle having library packages of different versions too, something that Debian mishandles by putting the version in the base package name too.

It is very sad that Debian is based on such a weak technical foundation, but it all goes to prove that putting in a lot of extra effort can make even poor technical choices work up to a point.

It is also sad that there is no popular community based distribution that can compete with Debian and has better technical foundations (and less bizarre policies).

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 20:24 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link] (9 responses)

So that's probably why RPM packages often require using the --force hammer to make a package work.

Also, RPMs are supposed to be relocatable. Even though it doesn't work in practice since nobody tests it. Then there are questions of foreign architectures - how do I install an ARM version of libxml.so so I can use qemu to run my binary without full-system emulation?

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 20:44 UTC (Wed) by vonbrand (subscriber, #4458) [Link] (8 responses)

Haven't used --force for untold ages here... forcing the installation of something without the proper dependencies will brew trouble.

Yes, the RPM format allows relocatable packages; in practice making something relocatable is a major undertaking, for very little use (so almost nobody hops through all the required hoops). Small wonder.

Yes, just installing some random arch's libraries and executables and then having the whole thing magically run would be nice... if you are into that. If the software is open source, a native (and thus presumably much more performant) package is at the end of your fingertips, so this point is moot for most of the user population anyway.

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 22:53 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link] (7 responses)

>Yes, just installing some random arch's libraries and executables and then having the whole thing magically run would be nice... if you are into that. If the software is open source, a native (and thus presumably much more performant) package is at the end of your fingertips, so this point is moot for most of the user population anyway.
Nope. Quite a significant part of 'regular' Linux population uses bi-arch support every day. And it's going to get even more complex with the new x32 architecture.

And it'll mostly 'just work' in Debian.

Getting multiarch dpkg into Debian

Posted Mar 8, 2012 2:27 UTC (Thu) by rahulsundaram (subscriber, #21946) [Link] (6 responses)

Most users who use bi-arch use it to run 32 bit binaries on a x86_64 system which has been supported in RPM for ages already and works fine. Debian has addressed a larger design and in a more generic way and has taken longer to do it. Just a different design goal and choice which is understandable. No need to bring silly things --force (which I have never used in over a decade with RPM systems and there are really zero reasons to do it) and relocatable RPM packages( haven't come across any in the real world) into the discussion.

Getting multiarch dpkg into Debian

Posted Mar 9, 2012 20:19 UTC (Fri) by mlankhorst (subscriber, #52260) [Link] (5 responses)

Yes, the rpm packages don't need --force, unless you start actually using any -devel and then you have to use it all the time, which is annoying if you actually want to upgrade packages, since there is no yum --force..

Getting multiarch dpkg into Debian

Posted Mar 9, 2012 20:49 UTC (Fri) by rahulsundaram (subscriber, #21946) [Link]

Just so that you know, I maintain over 100 RPM packages and never had to use --force even though I routinely use -devel packages.

Getting multiarch dpkg into Debian

Posted Mar 12, 2012 13:24 UTC (Mon) by mpr22 (subscriber, #60784) [Link] (3 responses)

It seems to me that if a -devel package has to be --force'd, you should examine why - then either fix the cause if it's at your end, or file a bug report if the cause is at the package maintainer's end.

Getting multiarch dpkg into Debian

Posted Mar 13, 2012 12:00 UTC (Tue) by mlankhorst (subscriber, #52260) [Link] (2 responses)

oh but then I look it up and it's already been a bug for the past 3 releases of fedora with nothing that has been done to fix it. llvm devel packages have the same issue, also not fixed.

Getting multiarch dpkg into Debian

Posted Mar 13, 2012 13:18 UTC (Tue) by mathstuf (subscriber, #69389) [Link] (1 responses)

Mind linking to said bug?

Getting multiarch dpkg into Debian

Posted Mar 19, 2012 21:38 UTC (Mon) by ibukanov (subscriber, #3942) [Link]

Getting multiarch dpkg into Debian

Posted Mar 7, 2012 20:58 UTC (Wed) by Tobu (subscriber, #24111) [Link]

So far we have three design choices: package states keyed by a name, by a (name, arch) tuple, and by a (name, arch, version) tuple.

Keying by name is simple and robust: packages with different names must agree not to own the same file names.

Keying by version is tricky and bug-prone: if versions are to be parallel installable, different versions of a package either need to not own the same files, or to keep identical contents in files that didn't move. This doesn't seem compatible with shipping changelogs or common resources.

Keying by arch while requiring that the versions stay locked, on the other hand, is safe: the files were built from the same source, so files that are shared across architectures will easily be identical; architecture-dependent files will need to use paths that embed the architecture name.

Getting multiarch dpkg into Debian

Posted Mar 8, 2012 1:49 UTC (Thu) by smoogen (subscriber, #97) [Link]

From a Fedora/RPM person.. I don't think you are correct on this. THere is actually some magic that was added in RPM to allow for multiple files being owned by the same package and then using directory packaging to make sure needed files don't conflict.

RPM packaging chose a way to do this via policy that I believe dpkg could ahve done.. but it would not have met other goals of theirs to make sure it worked on N+1 architectures. So lets not try to start a "my packaging system is better than yours" because those never convince anyone of anything.

Getting multiarch dpkg into Debian

Posted Mar 16, 2012 1:53 UTC (Fri) by jjs (guest, #10315) [Link]

Debian handles multiple versions just fine. In fact, during a transition (say gcc4.5 - gcc4.6), both packages are installed, along with their dependencies. Once the transition was done (no more dependencies on gcc4.5), that set of packages is automatically removed, unless you have marked them as manual install or pinned them. No weak technical foundation at all.

In this case, Debian is going beyond biarch to multi-arch. Not just have x86-32 and x86-64 (amd64) installed, but say have ARM, SPARC64, x86-32, and x86-64 simultaneously installed, to ease cross-development. That's hard, But Debian is working to get it right.

Getting multiarch dpkg into Debian

Posted Mar 8, 2012 17:59 UTC (Thu) by guillemj (subscriber, #49706) [Link] (1 responses)

I'm sorry to say, but parts of the article contain factual errors, others are just gross mischaracterizations. And while some of the events happened on private conversations, either mail or IRC; public mails on mailing lists, some bug reports or actual code on the git trees should be enough to get a more accurate idea of the situation.

Getting multiarch dpkg into Debian

Posted Mar 8, 2012 18:19 UTC (Thu) by rahulsundaram (subscriber, #21946) [Link]

Post a correction. Don't ask people to do more research just to find out what you are talking about.

Getting multiarch dpkg into Debian

Posted Mar 9, 2012 8:02 UTC (Fri) by sml (guest, #75391) [Link]

Fascinating article! This kind of analysis is why I subscribe to LWN.

To echo the first post, I think this shows the power of Debian's democratic structure. Approaches to fundamental change on the scale of multiarch are always going to be controversial and consensus difficult and slow.

It's unfortunate that Guillem's conscientious approach to dpkg maintainership (and lack of free time) clashed with release goals, but I guess this is the price of striving for release predictability. Maybe it's the "Ubuntu effect".


Copyright © 2012, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds