Check out partner presentation from the Canonical stand at Linux World Expo

Products

Debian Packages

The Debian packaging system is one of the greatest strength of Ubuntu that is directly inherited from that distribution. Not only does it provide an efficient package deployment and maintenance tools, but it is different from any other package management system in many ways.

Configuration management

Debian packages are not only a way to drop some script or binary application on a disk, the system also handles the configuration of the package within its environment. For example, if a backup software needs to store it's data within a database, it can prompt the user to pick which database to use. By default, packages are always configured with a default that works, covers the general use case, and uses secure settings.

Users have the possibility to reconfigure packages through debconf at any time, raising or lowering the priority of questions that can be asked to get more or fewer controls about how this configuration is done. Of course, if the configuration files for a package have been modified manually, the user is always asked to review the proposed changes before accepting or rejecting them.

Tight integration

Debian packages integrate very well with each other. Several tools are used to help connecting packages to each other, guaranteeing to users a well-maintained and clean system. The basis to this is fine-grained dependencies for all packages, documentation for all packages, support for alternative programs, etc.

Fine grained dependencies enables the user to request the installation of a package and not only the package will be installed, but every other package needed. There is no need to look for libraries in order to get the package working, it gets installed at the same time.

Additionally, when a package requires a service, such as an SMTP mail server for example, it references its requirement for SMTP, not Postfix or Sendmail or any other MTA. Symmetrically, each MTA package references itself in the Debian packaging as providing this service. This means that when the package is installed, it will not override the user preferences for a given MTA and pull the one it recommends, but just use the one that is currently installed, if there is one.

Finally, Ubuntu uses the notion of virtual packages so that it is possible to install in one single step multiple packages and configure them to work together, as it is the case when selecting a mail server installation for example.

Updating running services

The Linux kernel supports replacing files even while they're being used. Therefore it is possible to update a service while it is in use, even modifying its configuration, and restarting the service once this is done. This minimises downtime on updates. The Ubuntu community also spends a great amount of time at ensuring that official migration paths are appropriately supported so that systems can be upgraded from one major release to another using the same principles.

Standards of quality

The packages in Ubuntu are maintained by a group of developers that are collectively responsible for maintenance. This group is the gate-keeper of proposed modifications and reviews them o as to be in accordance with the policies of the distribution and philosophy of its use. This group is also in charge of the relationship with the original developers of the tool (upstream) and changes which are not specific to the distribution are always sent back up so that the whole community can benefit from them.

One of the maintainer's responsibilities, which is closely reviewed when a package is proposed into Ubuntu Main repository, is the conformance to strict standards, such as the Filesystem Hierarchy Standard and the Linux Standard Base compliance. This process allows for a distributed, therefore very scalable model, yet maintaining a very high level of quality.