Packaging large Java software stacks ?

Martin Pitt martin.pitt at ubuntu.com
Mon Jan 26 16:00:17 GMT 2009


Hello Thierry,

Thierry Carrez [2009-01-26 10:49 +0100]:
> It is difficult to integrate the large recent Java software stacks
> (Glassfish, Geronimo...) in a Linux distribution in general. 

You impressively described why packaging those "properly", i. e. with
separate libraries and build dependencies, is not really sensible, if
at all possible. It doesn't sound like we could support those kind of
builds in our usual "backport patches" way of working anyway, if these
components get constantly changed.

However, do we actually need to? It doesn't sound like we would ever
put those into main, just making it available conveniently for Ubuntu
users?

> Potential solutions to solve (1) include using a parallel delivery
> mechanism for JARs, separated from the usual Ubuntu packages, something
> that could hook into Maven repositories... or get ready to create a
> separate package for each version of each JAR.

So is Maven a system to pull Java libraries/projects from external
well-known sources, much like Python eggs or Ruby gems? If those
repositories already exist and are maintained, then we should rather
think about integrating them better than trying to do the sysiphos
work of packaging them again properly.

> A solution to workaround both problems would be to avoid targeting our
> built-from-source repositories for such Java software and pack them with
> their binary dependencies (or as binary directly)...

If I remember correctly, e. g. our glassfish package is a giant bundle
of jars, i. e. includes everything you need to build and run the
package. At this level, packaging seems to be feasible, and working
(however ugly it might be wrt. "proper" packaging).

> Please let me know what you think of all this problem. I'm pretty sure
> the Java world will one day gets its senses back and have a more
> distribution-friendly dependency system

Stable APIs have worked very well in the C, perl, and Python world. I
can't imagine why that should intrinsically not be possible in the
Java world. But for projects where the changes are really as dramatic
as you point out, I agree that we currently just have to do the "giant
jar bundle" workaround, if we need to package it in the first place.

However, we do have a fair bunch of Java libraries in the
repositories, and even in main, and their API doesn't seem to change
that often (if at all). So is this really just a problem of the two
big projects you mentioned (glassfish/geronimo) or a wide-spread
phenomenon, and the packages we have in main are just the "good"
exceptions?

Martin
-- 
Martin Pitt                        | http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)



More information about the ubuntu-devel mailing list