Custom Debian Distributions

A new approach to cover interests of specialised users

This talk was prepared for the Firenze World Vision 2004 in the developers workshop.

24. September 2004

Abstract

After the Open Source World Conference Custom Debian Distributions did a really great spin of. An extensive documentation now describes the goals and techniques very detailed. This talk covers an overview about the current state and the latest development issues.

Here you can find the MagicPoint source including the necessary MagicPoint style of the talk.
Also the pre-formated slides are available.

Custom Debian Distributions

A new approach to cover interests of specialised users

(page 1)

Overview

(page 2)

What are Custom Debian Distributions?

Resume of user talk:

→ Do not make a separate distribution but make Debian fit for special purpose instead

(page 3)

Looking beyond

  • Commercial Linux distributors sell certain products
    • Enterprise (Corporate Server - Mandrake, Advanced Server - Red Hat, Enterprise Server - SuSE)2
    • Workstation or home editions, Office desktops
    • Special task products
      • Mail server (SuSE Linux Openexchange Server)
      • Firewall (Multi Network Firewall - Mandrake, SuSE Firewall on CD)
      • Cluster (Mandrake Clustering)
      • Content Management System (Red Hat)
      • Portal Server (Red Hat)
  • These products address specific user interests

→ Debian uses Custom Distributions

(page 4)

Meta Packages - Developers point of view

A meta package is a Debian package which contains:
  • Dependencies from other Debian packages
    • Depend from packages to do a certain task
    • Recommend further interesting packages
    • Suggest others or non-free packages
  • User menu entries (recommended)
    • in /etc/cdd/<cdd>/menu/<pkg-name>
    • maintained via role based tools
  • Configuration (optional)
    • debconf questions or pre-seeding
    • cfengine scripts
  • Special meta package: <cdd>-common
(page 5)

Handling of meta packages

  • User-talk: no special help by usual tools
  • Enhance tasksel
    • Could be enhanced as a tree structure anyway
    • One branch of the tree might contain all CDDs
  • Enhancing tools like aptitude, synaptic, etc.
    • Sections for CDDs and their meta packages
    • CDD related searching
  • Enhancing command line tools like apt-cache,
    • Searching for existing meta packages
    • Overview about dependencies
  • Web tools keeping meta package information up to date
  • Addition to policy: CDD flag for debian/control
  • Make use of Debian Package Tags
(page 6)

Why user roles

  • Role based user menu system
    • Installed programs remain hidden if not presented in a menu
    • Default menus are bloated
    • Keep in mind: We are the missing link between upstream and user
  • Role system can be used for other stuff in the future
    • Flexible plugin system enables further usage
  • LDAP based role system would be great
  • Roles are implemented in current Debian-Med packages
(page 7)

Tools to develop meta packages

  • The package cdd-dev provides development tools
    • Scan packages list for available packages
    • Build control files from meta packages according to templates
    • Build menu entries for user menus in meta packages
    • Contains examples how to build meta packages
  • cdd-gen-control
    • Builds debian/control file from templates in tasks directory
    • Checks sources.list file for available packages
  • cdd-install-helper
    • Moves menu files from menu directory into right place
    • Moves documentation files from docs directory into right place
    • Creates <cdd>-common package
    • Take care for general config file /etc/cdd/<cdd>/<cdd>.conf
  • Usage of these tools is strongly recommended
  • Debian-Med packages provide a working example
(page 8)

Common dependency package

Using cdd-dev introduces dependency from cdd-common
  • Creates common registry for all CDDs in /etc/cdd
  • Configuration file /etc/cdd/cdd.conf
    • Set DBBACKEND (currently only unixgroups implemented)
    • Settings can be overridden by /etc/cdd/<cdd>/<cdd>.conf
  • cdd-role: add/remove roles in registered CDD
  • cdd-update-menus: add menu to all CDD users
    (users have to call update-menus if not done in postinst script)
  • cdd-user: add/remove user to role of a registered CDD
(page 9)

Quick intro into building meta packages

$ cp -a /usr/share/doc/cdd-dev/examples/tasks .
$ cat tasks/README
$ edit tasks/task1
Task: Biology
Description: short description
 long description as in any debian/control file


Depends: dependency1, dependency2, ...

→ For each meta package this skeleton of a debian/control entry is needed

  • see /usr/share/doc/cdd-dev/examples/tasks
(page 10)

The packaging directory

$ cp -a /usr/share/doc/cdd-dev/examples/debian .
$ cat debian/README
$ edit debian/control.stub
change the variables to match your CDD
$ edit debian/rules
change the variable _CDD_ to your CDD
$ make -f debian/rules dist

  • you get your tar.gz source which you can copy anywhere and do

$ debuild

→ In principle you are ready.

(page 11)

The common meta package (optional)

$ cp -a /usr/share/doc/cdd-dev/examples/common .
$ cat common/README
$ edit common/conf common/control common/common.1
change the variables to match your CDD

→ Initialisation of role based menu system

  • meta packages will automatically depend from common package
  • installs auto-apt helper
  • strongly suggested
(page 12)

The meta package menus (optional)

$ cp -a /usr/share/doc/cdd-dev/examples/menu .
$ cat menu/README
$ cat menu/task1/README
$ edit menu/task1/dep1.menu
$ edit menu/task1/dep2.txt
$ edit menu/task1/dep3.html
Edit the example to legal menu entries or reasonable descriptions
$ cp menu/task1 menu/<meta package name>

→ Provide user menu entries for each meta package - at least with documentation

(page 13)

Communication

(page 14)

To do

(page 15)

My opinion

  • More Custom Debian Distributions
  • Spreading the idea to developers and users
  • Package maintainer ⇔ CDD maintainer
  • Policy ensures that packages work together
    CDD ensures that a set of packages works optimal for a special purpose
(page 16)

Further Information

(page 17)

Homepage Andreas Tille