This page will detail the current packaging effort of Eclipse on Ubuntu.

Eclipse is a complex beast. It has a number of first level terms which are used to describe differnet portions of it. Some of which I made up.

The Eclipse Distribution: The central and singular term which will refer to Eclipse as distributed on Debian. The Eclipse distribution is installed in /usr/lib/eclipse.

Products: Eclipse upstream has a notion of multiple products existing within a single Eclipse distribution. A product seems to be an encapsulation of branding and other stuff that forms a cohesive distributable unit. Right now we have one product, it is the IDE. It has a name, org.eclipse.platform.ide, and exists within the "platform" "feature".

Application: Each Eclipse "product" has a bunch of applications in it and one default application.

Feature: A sum of Eclipse plugins that somehow form some distributable unit. Can't explain much more than that! Our current packaging effort for Eclipse centers around features. We create seperate packages for each feature, including each features plugins. Features can depend on other features, and we mirror that in the Ubuntu packages.

Plugin: An Eclipse plugin. All the actual code lives in plugins.

The idea of installing multiple eclipse products into /usr/lib/eclipse, each sharing the core features has come up. I cannot yet offer an opinion on weither this is reasonable, but I will work towards that goal. I suspect it might be hard.


The current Eclipse packages are based off up upstreams "SDK" source package. This package contains the rcp, platform, jdt, pde and sdk features. Each feature has a set of packages associated with it. The packages are: eclipse-*, eclipse-*-common and eclipse-*-gcj. A successful install of the feature consists of the installation of both the eclipse-* and eclipse-*-common packages. Because of this, they depend on each other. Then -gcj package depends on the eclipse-* package and provide precompiled GCJ versions of the plugins, where applicable.

Eclipse itself expects to exist in a single directory tree (earlier refered to as the "distribution"). Most of the plugins are largely composed of platform-independent pieces. However, there are platform dependent pieces which are REQUIRED to exist in the distribution's tree. Because of this, the distribution is being moved to /usr/lib/eclipse to obay the FHS. To accomplish this, while also satisfying the FHS, every critical file should exist, or be linked into, /usr/lib/eclipse. This includes the vast majority of files. This is where the package splits into -common. -common should install files that are architecture independent into /usr/share/eclipse in the exact position they should exist in /usr/lib/eclipse. The native package should then provide symlinks from /usr/lib/eclipse pointing to them as well as arch dependent versions directly in /usr/lib/eclipse.

EclipsePlatform (last edited 2008-08-06 16:39:59 by localhost)