diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 119 |
1 files changed, 119 insertions, 0 deletions
@@ -0,0 +1,119 @@ +The interface uses debconf for consistency with the rest of the Debian +installer. + +On startup, the tasksel program will read all *.desc files in +/usr/share/tasksel/ for information about what tasks are available. The +tasks will be presented in a simple list selection screen with their short +descriptions. + +On exit, tasksel executes the appropriate command to install the selected +packages. If the -t option is given, then tasksel prints out the command +line to use to stdout instead. All other messages are printed to stderr. + +To get a new task added to Debian, please file a bug report on tasksel. +Or, create a task package yourself, and then file a bug report on tasksel +for it to be added to tasksel's UI. + +Debian derived distributions can add a new .desc file to +/usr/share/tasksel/ to add additional tasks, or modify/divert +debian-tasks.desc to remove tasks. + +The file format is a rfc-822 style stanza, with fields named Task, Section +Description (which should include an extended description), Key, Packages, +Enhances, Test-, Relevance, and Parent fields. Here is an example: + +Task: graphical-games +Relevance: 9 +Parent: games +Section: user +Description: Graphical games + This task provides a variety of graphical games. Old-school unix games are + not included. +Key: + x-window-system-core +Packages: list + quake + myst + monkey-island + +The Key field lists packages that are essential to the task. If those +packages are not available, then the task will not be available either. It +need not list all the packages in the task, if some only serve to make it +better when they are available. + +The Packages field tells how to get a complete list of packages that are in +the task. In the example above, it uses the "list" method, which is defined +in /usr/lib/tasksel/packages/list. This simple method just lets you list +the packages you want to include in the task in the following lines. +All Key packages will be also be selected for installation when a task is +installed. + +In Debian, we have switched to using task packages, so the task files just +list the task packages as Key, and don't list other packages in the task +(instead they are Depends and Recommends of the task package). Another +available method is "standard", which just installs all standard priority +packages, and another is "manual", which, as a special case, runs aptitude +interactively to select what to install. + +It's also possible to define other methods, by adding programs to +/usr/lib/tasksel/packages/. Then list the name of the program as the first +word of the task field, and it will be run and passed the name of the task as +its first parameter and any further lines of the task field as its other +parameters, and should output a list of packages in that task. The "list" +method described above is a simple example of such a program. + +There is support for automatically installing tasks based on test programs. +If a task has a Test-* field, then a program in /usr/lib/tasksel/tests/ +will be run. For example Test-lang fields cause /usr/lib/tasksel/tests/lang +to be run. The test is passed first the name of the task, and then the +contents of the field as parameters. The exit code of the test controls +what to do with the task: + +0 - do not display, but do install task +1 - do not display task +2 - display task, marked for installation +3 - display task, not marked for installation + +One use of these tests is in automatically selecting a language task +appropriate for the user's locale, and hiding the rest. The lang test +handles this by comparing the value of the Test-lang field of a task with +the locale setting. Tests could also be used for things like automatically +installing hardware support tasks on systems with the right hardware. + +There is support for tasks that enhance other tasks. If a task has a +Enhances field, then it should only be installed if all the tasks +listed as in that field are installed. For example, a french-desktop task +enchances a system that has both the french and desktop tasks, and will be +automatically installed on such a system but not others. Such tasks are +hidden from the menu. + +If two tasks both enhance the same task, but only one should be selected, +this can be accomplished by adding Test-* fields. + +Tasks can be children of a parent task, indicated by using the Parent +field. For example, the desktop task is the parent of gnome-desktop, +kde-desktop, etc. This only controls the display; child tasks are displayed +nested underneath the parent. Only 1 level of nesting is currently +supported. Selecting the parent task does not select any or all of +the child tasks, nor does selecting a child task ensure that the parent +task is installed. Instead, use dependencies between the task packages to +express any such relationships. + +If a task is important enough that it should go near the top, +give it a relevance of 1. If a task is not likely to be +used, give it a relevance of 9. Default is 5. Relevance can only be a +single digit. + +The Section field is not used by tasksel, but debian-cd currently uses it +to determine if a task is a localization task, or a desktop task, or a +server task. + +tasksel also supports preinst, postinst, prerm, and postrm scripts for +tasks. These are run before a task is installed, and after it is removed as +with the dpkg scripts. These scripts sould be installed in +/usr/lib/tasksel/info/, for example, /usr/lib/tasksel/info/desktop.preinst. +Currently they are passed no parameters, but this might change later. These +scripts should take care not to output anything to stdout. You are not +encouraged to use these scripts to install any packages, as in some +situations apt can hang prompting for a CD switch if run from one of these +scripts. |