The control file contains variables which describe the contents of a DEB package. They include the section, description, maintainer, and target architecture. They also contain a list of dependencies for a DEB package. This control file contains metadata which is used by tools such as apt-cache and apt-get. In this Maven 2 DEB Plugin, the values in the control file are customized via the plugin configuration as follows:
<build>
<groupId>org.test</groupId>
<artifactId>some-lib</artifactId>
<version>1.0</version>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>deb-maven-plugin</artifactId>
<configuration>
<description>A test project</description>
<maintainer>Tim OBrien <tobrien@discursive.com></maintainer>
<section>libs</section>
<priority>optional</priority>
<architecture>all</architecture>
</configuration>
<executions>
<execution>
<goals>
<goal>deb</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>The acceptable configuration parameters are:
DEB packages are list dependencies in the control file. A set of dependencies is usualy listed as follows (using evolution_2.8.0 as an example):
Depends: gtkhtml3.8 (>= 3.10.1), libart-2.0-2 (>= 2.3.16), libatk1.0-0 (>= 1.12.1), libaudiofile0 (>= 0.2.3-4),
libavahi-client3 (>= 0.6.13), libavahi-common3 (>= 0.6.10), libavahi-glib1 (>= 0.6.12), libbonobo2-0 (>= 2.15.0),
libbonoboui2-0 (>= 2.15.0), libc6 (>= 2.4-1), libcairo2 (>= 1.2.4), libcamel1.2-8 (>= 1.8.1), libdbus-1-3,
libdbus-glib-1-2 (>= 0.71), libebook1.2-9 (>= 1.8.1), libecal1.2-7 (>= 1.8.1),
libedataserver1.2-7 (>= 1.8.1), libedataserverui1.2-8 (>= 1.8.1), libegroupwise1.2-12 (>= 1.8.1),
libesd-alsa0 (>= 0.2.35) | libesd0 (>= 0.2.35), libexchange-storage1.2-2 (>= 1.8.1), libfontconfig1 (>= 2.3.0),
libfreetype6 (>= 2.2), libgconf2-4 (>= 2.13.5), libgcrypt11 (>= 1.2.2), libglade2-0 (>= 1:2.5.1),
libglib2.0-0 (>= 2.12.0), libgnome-keyring0 (>= 0.5.2), libgnome-pilot2 (>= 2.0.14), libgnome2-0 (>= 2.14.1),
libgnomecanvas2-0 (>= 2.11.1), libgnomeprint2.2-0 (>= 2.12.1), libgnomeprintui2.2-0 (>= 2.12.1),
libgnomeui-0 (>= 2.13.0), libgnomevfs2-0 (>= 2.15.90), libgnutls13 (>= 1.4.0-0), libgpg-error0 (>= 1.2),
libgtk2.0-0 (>= 2.10.3), libgtkhtml3.8-15 (>= 3.12.1), libhal1 (>= 0.5), libice6, libjpeg62,
liblaunchpad-integration0 (>= 0.0patch26), libldap2 (>= 2.1.17-1), liblpint-bonobo0, libnotify1 (>= 0.4.2),
liborbit2 (>= 1:2.14.1), libpango1.0-0 (>= 1.14.5), libpisock9, libpisync0, libpng12-0 (>= 1.2.8rel), libpopt0 (>= 1.10),
libselinux1 (>= 1.30), libsm6, libsoup2.2-8 (>= 2.2.96), libtasn1-3 (>= 0.3.4), libx11-6, libxcursor1 (>> 1.1.2),
libxext6, libxfixes3, libxi6, libxinerama1, libxml2 (>= 2.6.26), libxrandr2, libxrender1, zlib1g (>= 1:1.2.1),
gconf2 (>= 2.12.1-4ubuntu1), evolution-data-server (>= 1.8.1), gnome-icon-theme, dbusEvolution is a very capable email client with integrated calendar capabilities, so, as you can see, it depends on everything in the world. This particular package was used as an example to demonstrate the richness of the DEB format for describing dependencies. Some dependencies, like "dbus", don't specify any version number at all. Other dependencies specify a minimum version required (libselinux1 (>= 1.30))
When using autogenerated dependencies, you should know that the Maven DEB plugin does not support >>, >=, or versionless dependencies. Instead it is going to create DEB packages which depend on specific versions of libraries. For example, if your project only depends on Log4J, the Maven DEB plugin is going to produce:
Depends: log4j-log4j (= 1.2.13)
If you are wondering what the permissible values are for these control variables. Please see the following resources which describe each variable in detail:
For more information about what is required of a DEB file, see Debian New Maintainers' Guide