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) |