next up previous contents index
Next: Glossary Up: Step-by-Step Installation Previous: Select and Install Profiles   Contents   Index


Package Installation with dselect

It is now time to install the software packages of your choice on your Debian system. This is done using Debian's package management tool, dselect.


This section documents dselect for first-time users. It makes no attempt to explain everything, so when you first meet dselect, work through the help screens.

dselect is used to select which packages you wish to install (there are currently about 2,250 packages in Debian 2.1). It will be run for you during the installation. It is a very powerful and somewhat complex tool. As such, having some knowledge of it beforehand is highly recommended. Careless use of dselect can wreak havoc on your system.

dselect will step you through the package installation process outlined here:

  1. Choose the access method to use.
  2. Update list of available packages, if possible.
  3. Select the packages you want on your system.
  4. Install and upgrade wanted packages.
  5. Configure any packages that are unconfigured.
  6. Remove unwanted software.
As each step is completed successfully, dselect will lead you on to the next. Go through them in order without skipping any steps.

Here and there in this document we talk of starting another shell. Linux has six console sessions or shells available at any one time. You switch between them by pressing Left Alt-F1 through Left Alt-F6, after which you log in on your new shell and go ahead. The console used by the install process is the first one, a.k.a. tty1, so press Left Alt-F1 when you want to return to that process.

Once dselect Is Launched

Once in dselect, you will get this screen:

Debian Linux `dselect' package handling frontend.

0.  [A]ccess  Choose the access method to use.

1.  [U]pdate  Update list of available packages, if possible.

2   [S]elect  Request which packages you want on your system.

3.  [I]nstall Install and upgrade wanted packages.

4.  [C]onfig  Configure any packages that are unconfigured.

5.  [R]emove  Remove unwanted software.

6.  [Q]uit    Quit dselect. 

Let's look at these one by one.


The Access screen is shown in Figure 3.2 on page [*].

Figure 3.2: dselect Access screen

\resizebox* {4in}{!}{\includegraphics{images/dselect-access.eps}}

Here we tell dselect where our packages are. Ignore the order that these appear in. It is very important that you select the proper method for installation. You may have a few more methods listed, or a few less, or you may see them listed in a different order; just don't worry about it. In the following list, we describe the different methods.

Quite large and powerful, this complex method is the recommended way of installing a recent version of Debian from a set of multiple binary CDs. Each of these CDs should contain information about the packages in itself and all prior CDs (in the file When you first select this method, be sure the CD-ROM you will be using is not mounted. Place the last binary disk of the set (we don't need the source CDs) in the drive and answer the questions you are asked:
CD-ROM drive location

Confirmation that you are using a multi-cd set   

The location of the Debian distribution on the disk(s)

[ Possibly ] the location(s) of the Packages file(s)

Once you have updated the available list and selected the packages to be installed, the multi_cd method diverges from normal procedure. You will need to run an ``install'' step for each of the CDs you have, in turn. Unfortunately, due to the limitations of dselect, it will not be able to prompt you for a new disk at each stage; the way to work for each disk is outlined here:

  1. Insert the CD in your CD-ROM drive.
  2. From the main dselect menu, select ``Install.''
  3. Wait until dpkg finishes installing from this CD. (It may report installation successful, or possibly installation errors. Don't worry about these until later.)
  4. Press Return to go back to the main dselect menu.
  5. Repeat with the next CD in the set.
It may be necessary to run the installation step more than once to cover the order of package installation; some packages installed early may need to have later packages installed before they will configure properly.

Running a ``Configure'' step is recommended to help fix any packages that may end up in this state.

multi_nfs, multi_mount.

These are similar to the multi_cd method and are refinements on the theme of coping with changing media - for example, installing from a multi_cd set exported via NFS from another machine's CD-ROM drive. indexdselect!multi-NFS, multi-mount installation

One of the best options for installation from a local mirror of the Debian archive or from the network. This method uses the ``apt'' system to do complete dependency analysis and ordering, so it's most likely to install packages in the optimal order.
Configuration of this method is straightforward. You may select any number of different locations, mixing and matching file: URLs (local disks or NFS mounted disks), http: URLs, or ftp: URLs. Note, however, that the HTTP and FTP options do not support local authenticating proxies.

If you have proxy server for either HTTP or FTP (or both), make sure you set the http_proxy and ftp_proxy environment variables, respectively. Set them from your shell before starting dselect by using the following command:

# export http_proxy=http://gateway:3128/

# dselect              


dselect will read the Packages or Packages.gz files from the mirror and create a database on your system of all available packages. This may take a while as it downloads and processes the files.


Hang on to your hat. This is where it all happens. The object of the exercise is to select just which packages you wish to have installed.

Press Enter. If you have a slow machine, be aware that the screen will clear and can remain blank for 15 seconds. So don't start bashing keys at this point.

The first thing that comes up on the screen is page 1 of the Help file. You can get to this help by pressing ? at any point in the ``Select'' screens, and you can page through the help screens by hitting the . (full stop) key.

Before you dive in, note these points:

Let's look at the top two lines of the Select screen. This header reminds us of some of the special keys listed in Table 3.1.

Table 3.1: Special dselect keys

Key Description
+ Select a package for installation.
= Place a package on hold
- Remove a package.
_ Remove a package and its configuration files.
i, I Toggle/cycle information displays.
o, O Cycle through the sort options.
v, V A terse/verbose toggle.

Table 3.2 lists the states that dselect uses to denote the status of each package it is aware of.

Table 3.2: dselect Package States

Flag Meaning Possible values
E Error Space, R, I
I Installed State Space, *, -, U, C, I
O Old Mark *, -, =, _, n
M Mark *, -, =, _, n

Rather than spell all this out here, I refer you to the Help screens where all is revealed. One example, though.

You enter dselect and find a line like this:

EIOM Pri  Section  Package   Description

  ** Opt  misc     loadlin   a loader (running under DOS) for LINUX

This is saying that loadlin was selected when you last ran dselect and that it is still selected, but it is not installed. Why not? The answer must be that the loadlin package is not physically available. It is missing from your mirror.

The information that dselect uses to get all the right packages installed is buried in the packages themselves. Nothing in this world is perfect, and it does sometimes happen that the dependencies built into a package are incorrect, which means that dselect simply cannot resolve the situation. A way out is provided where the user can regain control; it takes the form of the commands Q and X, which are available in the Select screen.

An override. Forces dselect to ignore the built-in dependencies and to do what you have specified. The results, of course, will be on your own head.
Use X if you get totally lost. It puts things back the way they were and exits.
Select screen (dselect) Keys that help you not to get lost (!) are R, U, and D.

Cancels all selections at this level. Does not affect selections made at the previous level.
If dselect has proposed changes and you have made further changes U will restore dselect's selections.
Removes the selections made by dselect, leaving only yours.

An example follows. The boot-floppies package (not an example for beginners, I know, but it was chosen because it has a lot of dependencies) depends on these packages:

The person maintaining boot-floppies also thinks that the following packages should be installed. These are not, however, essential:

When you select boot-floppies, dselect brings up the conflict resolution screen. You'll notice that all the required packages have been selected.

Pressing the R key puts things back to the starting point.

EIOM Pri Section  Package      Description 

  __ Opt admin    boot-floppie Scripts to create the Debian

  __ Opt devel    newt0.25-dev Developer's toolkit for newt

  __ Opt devel    slang1-dev   The S-Lang programming library

  __ Opt devel    slang1-pic   The S-Lang programming library

If you decide now that you don't want boot-floppies, just press Enter.

Pressing the D key puts things the way I selected them in the first place:

EIOM Pri Section  Package      Description

  _* Opt admin    boot-floppie Scripts to create the Debian

  __ Opt devel    newt0.25-dev Developer's toolkit for newt

  __ Opt devel    slang1-dev   The S-Lang programming library

  __ Opt devel    slang1-pic   The S-Lang programming library

Pressing the U key restores dselect's selections:

EIOM Pri Section  Package      Description

  _* Opt admin    boot-floppie Scripts to create the Debian installation

  _* Opt devel    newt0.25-dev Developer's toolkit for newt

  _* Opt devel    slang1-dev   The S-Lang programming library

  _* Opt devel    slang1-pic   The S-Lang programming library

I suggest running with the defaults for now; you will have ample opportunities to add more later.

Whatever you decide, press Enter to accept and return to the main screen. If this results in unresolved problems, you will be bounced right back to another problem resolution screen.

The R, U, and D keys are very useful in ``what if'' situations. You can experiment at will and then restore everything and start again. Don't look on them as being in a glass box labeled ``Break in Case of Emergency.''

After making your selections in the Select screen, press I to give you a big window, press t to take you to the beginning, and then use the Page Down key to look quickly through the settings. This way you can check the results of your work and spot glaring errors. Some people have deselected whole groups of packages by mistake and not noticed the error until too late. dselect is a very powerful tool; don't misuse it.

You should now have the situation shown in Table 3.3.

Table 3.3: Expected Package Category States

Package category Status
Required all selected
Important all selected
Standard mostly selected
Optional mostly deselected
Extra mostly deselected

Happy? Press Enter to exit the Select process. You can come back and run Select again if you wish.


dselect runs through the entire set of packages and installs those selected. Expect to be asked to make decisions as you go. It is often useful to switch to a different shell to compare, say, an old configuration with a new one. If the old file is conf.modules, the new one will be conf.modules.dpkg-dist.

The screen scrolls past fairly quickly on a fast machine. You can stop and start it with Ctrl-s and Ctrl-q, respectively, and at the end of the run, you will get a list of any uninstalled packages.

It can happen that a package does not get installed because it depends on some other package that is listed for installation but is not yet installed. The answer here is to run Install again. Cases have been reported where it was necessary to run it four times before everything slipped into place. This will vary by your acquisition method.


Most packages get configured in step 3, but anything left hanging can be configured here.


Removes packages that are installed but no longer required.


I suggest running /etc/cron.daily/find at this point, because you have a lot of new files on your system. Then you can use locate to get the location of any given file.

A Few Hints in Conclusion

When the install process runs dselect for you, you will doubtless be eager to get Debian running as soon as possible. Well, please be prepared to take an hour or so to learn your way around and then get it right. When you enter the Select screen for the first time, don't make any selections at all - just press Enter and see what dependency problems there are. Try fixing them. If you find yourself back at the main screen, run Select again.

You can get an idea of the size of a package by pressing i twice and looking for the ``Size'' figure. This is the size of the compressed package, so the uncompressed files will be a lot bigger (see ``Installed-Size,'' which is in kilobytes, to know it).

Installing a new Debian system is a complex thing, but dselect can do it for you as easy as can be. So take the time to learn how to drive it. Read the help screens and experiment with i, I, o, and O. Use the R key. It's all there, but it's up to you to use it effectively.

next up previous contents index
Next: Glossary Up: Step-by-Step Installation Previous: Select and Install Profiles   Contents   Index
John Goerzen / Ossama Othman