This page collects information about the Debian project and the Debian operating system. The information has been gathered from various debian.org resources and is mainly of interest to me because I am not a DD (see glossary) and therefore not terribly familiar with some terms and resources.
- 1 General references
- 2 Glossary
- 3 Releases
- 4 Package management programs
- 5 System administration
- 6 Bug tracker
On this wiki
- Debian project page : http://www.debian.org/
- Project history (including a list of past releases) : http://www.debian.org/doc/manuals/project-history/
- Debian FAQ : http://www.debian.org/doc/FAQ/
- The Debian Administrator's Handbook: http://debian-handbook.info/
- Debian and Java FAQ : http://www.debian.org/doc/manuals/debian-java-faq/
- WNPP page : http://www.debian.org/devel/wnpp/
- Debian New Maintainer process : http://www.debian.org/devel/join/newmaint
- DDP page: http://www.debian.org/doc/ddp
On a Debian system
- Debian FAQ : Install package
debian-faq, the actual documents are then placed under
- Advanced Packaging Tool
- Bug Tracking System
- Debian Account Manager. DD that manages account creation and removal. The DAM has the final decision over an application.
- Debian Installer
- Debian Developer
- Debian Documentation Project
- Refers either to the yearly held Debian Conference, or to the Debian Configuration Management System. See DebianPackageManagement for details about the latter.
- A different name for a release (see there)
- Debian Project Leader
- Debian Package Manager
- Intent To Package (WNPP related). Someone has found an interesting piece of software and would like to create a Debian package from this software.
- New Maintainer
- Non-Maintainer Upload (details see here)
- Package Tracking System
- Release Critical, as in "RC bugs"
- The main releases of Debian have the symbolic names "stable", "testing" and "unstable". Symbolic names refer to moving targets, for instance "stable" may refer to Debian release 6, 7 or 8, depending on when you make the reference. When an actual release is made it is given not only a version number (6, 7, 8, ...), but also a codename so that people can refer to the release using that codename. So far all codenames were taken from Pixar movies. For instance, "jessie" refers to release 8.x. Also see the Releases section further down on this page.
- Request For Adoption (WNPP related). The current maintainer of a package is asking for someone else to maintain the package.
- Request For Help (WNPP related). The current maintainer of a package needs help in maintaining the package.
- Request For Package (WNPP related). Someone has found an interesting piece of software and would like someone else to create a Debian package from this software.
- Permanent codename for the unstable release of Debian. Can also be seen as an acronym for "still in development".
- Work-Needing and Prospective Packages
List of current releases. The 3 main releases, or distributions, of Debian are:
- At the time of writing, this release is named "sarge" and carries the version number v3.1r0
- At the time of writing, this release is named "etch"; in time it will become the new stable release
- This release is always named "sid"; packages migrate from here into testing
In addition, there are also the following distributions:
- This refers to the distribution just from before stable; at the time of writing, this would be "woody"
- This distribution is used for packages which are still being developed, and with a high risk of breaking your system. Note that this is not a complete distribution and therefore needs to be used in conjunction with "stable", "testing" or "unstable"
- "foo" must be replaced with the name of a stable release, e.g. "jessie-backports". Backports are packages taken from the next Debian release (i.e. "testing"), adjusted and recompiled for usage on Debian stable. Because the package is also present in the next Debian release, a stable+backports system can easily be upgraded once the next Debian release comes out.
A release can also have sub-sections:
- Security updates
- Packages that aim at fast moving targets, such as spam filtering and virus scanning; Updating volatile packages of a release should be absolutely painless as those package updates do not normally contain any functional changes
- Same as volatile, but for package updates that may include functional changes or might be otherwise painful
Testing vs. unstable
- There is an automatism at work that moves packages from unstable to testing after a certain amount of time.
- I have not yet researched how this automatism works, but I have seen this useful site that answers the question "Why is package X not in testing yet?"
Package management programs
As a system administrator I am interacting with Debian's package system on various levels (e.g. command line, interactive), using a number of programs that often manage only a small part of the overall system (e.g. bare-bones package installation; install a package including dependency resolution; manipulate the DebConf database; etc.). This section enumerates the programs that I know about and briefly outlines their responsibilities, without going into too much detail. A more in-depth discussion of each program's usage, configurations and possible pitfalls can be found on a separate wiki page.
Without doubt the most important program - or at least the one that I most frequently use - is
aptitude. It is followed by
dpkg, in those cases where i need to perform a lower-level task.
Basic package management operations are performed by the command line utility
dpkgknows how to install and uninstall .deb packages
dpkgcontrols the package database
dpkgdetects package dependencies and conflicts, but it does not know how to resolve them - that job is delegated to more advanced tools
dpkgdoes not know where to obtain packages, it can only install .deb package files that are already located somewhere in the filesystem
apt-get / apt-cache
The command line utility
apt-get is a more advanced tool than
- It detects package dependencies and conflicts and knows how to resolve most of these problems
- It "knows" where to obtain .deb package files because its configuration includes a definition of package sources (typically FTP or HTTP mirrors)
- It uses
dpkgto install and uninstall packages
apt-cache can be used to search and manipulate the APT package cache. It is also a command line utility.
For more information about APT, see http://www.debian.org/doc/manuals/apt-howto/index.en.html
dselect is a console-based, menu-driven interactive front-end for
- It is not very user friendly, let alone intuitive
dselectoften has problems resolving package dependencies and conflicts; it is easily possible to get into a situation that can only be resolved by using apt-get on the command line
- I very strongly recommend using
- Unfortunately, some official Debian docs (notably the APT HOWTO) mention dselect but not aptitude - at least that was the case when I started using Debian in 2003, which is why I fell into the trap of using
aptitude is a console-based, menu-driven interactive front-end for APT
- It is quite intuitive and user-friendly (it even has an undo feature)
- It is extremely clever when it comes to resolving package dependencies and conflicts; in complex conflict situations you can examine multiple solutions to resolve the conflict before you choose one solution
- I have used
aptitudefor over a decade, and it has never let me down in even the hairiest situations (typically when I was running a system on testing and had to update
libperlto a new version)
synaptic is a GUI front-end for APT. I currently have no experience with this tool, as I do all the administration over an SSH terminal.
If several packages provide a program that fullfils the same function on a system, that function is made accessible in the file system under a generic name (e.g.
/usr/bin/editor). Debian's alternatives system is then used to select the actual package/program that will provide the desired functionality.
The "magic" of the alternatives system is made possible through a chain of symbolic links. If we look at, for instance,
zapmama2:~# ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 2009-06-11 20:41 /usr/bin/editor -> /etc/alternatives/editor zapmama2:~# ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 17 2009-06-11 13:05 /etc/alternatives/editor -> /usr/bin/vim.tiny zapmama2:~# ls -l /usr/bin/vim.tiny -rwxr-xr-x 1 root root 630340 2008-10-18 02:12 /usr/bin/vim.tiny
An alternative may consist of multiple links that need to be changed together: For instance, not only the editor program needs to be changed, but also the editor man page.
debconf system is responsible for setting up alternatives, when packages are installed, removed or updated. Alternatives are in "automatic" mode when they are first introduced to the system. In this mode, the
debconf system makes sure that the alternative with the highest priority is selected. When the system administrator begins to make manual changes, the alternative moves into "manual" mode, which means that
debconf no longer makes automatic choices and it will no longer be the highest-priority-alternative that becomes selected.
To switch between alternatives, use the program
update-alternatives. For details, see the program's man page.
Report a new bug
To report a new bug, either use the reportbug utility on the command line of the Debian system (recommended by Debian), or send an email to the Debian bugtracker (preferred by me). Everything is explained in detail here:
- Send an email to firstname.lastname@example.org
- The subject of the message will be used as the title of the bug
- The body of the message must begin with a couple of "pseudo-headers" that tell the bugtracker which package the bug report refers to; example
Package: lprng Version: 3.8.28dfsg.1-1.1
- The rest of the body (possibly separated by an empty line from the pseudo-headers) contains the actual bug report
Reply/add comment to an existing bug
For instance, to reply or add a comment to bug report 12345:
- Send an email to email@example.com
Watch an existing bug
The following page details how to "watch" an existing bug report for changes:
For instance, to watch bug 12345:
- Send an email to firstname.lastname@example.org; subject and body are ignored, so should be empty
- Wait for the confirmation message sent back by the bugtracker
- Reply to the confirmation message to prove that you own the subscribing email adress
Unsubscribing works along the same principle, just send an email to email@example.com.