Table of Contents
This Debian Reference (version 2.124) (2024-06-30 04:06:30 UTC) is intended to provide a broad overview of the Debian system administration as a post-installation user guide.
The target reader is someone who is willing to learn shell scripts but who is not ready to read all the C sources to figure out how the GNU/Linux system works.
For installation instructions, see:
All warranties are disclaimed. All trademarks are property of their respective trademark owners.
The Debian system itself is a moving target. This makes its documentation difficult to be current and correct. Although the current testing
version of the Debian system was used as the basis for writing this, some contents may be already outdated by the time you read this.
Please treat this document as the secondary reference. This document does not replace any authoritative guides. The author and contributors do not take responsibility for consequences of errors, omissions or ambiguity in this document.
The Debian Project is an association of individuals who have made common cause to create a free operating system. It's distribution is characterized by the following.
Commitment to the software freedom: Debian Social Contract and Debian Free Software Guidelines (DFSG)
Internet based distributed unpaid volunteer effort: https://www.debian.org
Large number of pre-compiled high quality software packages
Focus on stability and security with easy access to the security updates
Focus on smooth upgrade to the latest software packages in the testing
archives
Large number of supported hardware architectures
Free Software pieces in Debian come from GNU, Linux, BSD, X, ISC, Apache, Ghostscript, Common Unix Printing System , Samba, GNOME, KDE, Mozilla, LibreOffice, Vim, TeX, LaTeX, DocBook, Perl, Python, Tcl, Java, Ruby, PHP, Berkeley DB, MariaDB, PostgreSQL, SQLite, Exim, Postfix, Mutt, FreeBSD, OpenBSD, Plan 9 and many more independent free software projects. Debian integrates this diversity of Free Software into one system.
Following guiding rules are followed while compiling this document.
Provide overview and skip corner cases. (Big Picture)
Keep It Short and Simple. (KISS)
Do not reinvent the wheel. (Use pointers to the existing references)
Focus on non-GUI tools and consoles. (Use shell examples)
Be objective. (Use popcon etc.)
Tip | |
---|---|
I tried to elucidate hierarchical aspects and lower levels of the system. |
Warning | |
---|---|
You are expected to make good efforts to seek answers by yourself beyond this documentation. This document only gives efficient starting points. |
You must seek solution by yourself from primary sources.
The Debian site at https://www.debian.org for the general information
The documentation under the "/usr/share/doc/package_name
" directory
The Unix style manpage: "dpkg -L package_name |grep '/man/man.*/'
"
The GNU style info page: "dpkg -L package_name |grep '/info/'
"
The bug report: https://bugs.debian.org/package_name
The Debian Wiki at https://wiki.debian.org/ for the moving and specific topics
The Single UNIX Specification from the Open Group's The UNIX System Home Page
The free encyclopedia from Wikipedia at https://www.wikipedia.org/
The HOWTOs from The Linux Documentation Project (TLDP)
Note | |
---|---|
For detailed documentation, you may need to install the corresponding documentation package named with " |
This document provides information through the following simplified presentation style with bash
(1) shell command examples.
# command-in-root-account $ command-in-user-account
These shell prompts distinguish account used and correspond to set environment variables as: "PS1='\$'
" and "PS2=' '
". These values are chosen for the sake of readability of this document and are not typical on actual installed system.
All command examples are run under the English locale "LANG=en_US.UTF8
". Please don't expect the placeholder strings such as command-in-root-account
and command-in-user-account
to be translated in command examples. This is an intentional choice to keep all translated examples to be up-to-date.
Note | |
---|---|
See the meaning of the " |
Action required by the system administrator is written in the imperative sentence, e.g. "Type Enter-key after typing each command string to the shell."
The description column and similar ones in the table may contain a noun phrase following the package short description convention which drops leading articles such as "a" and "the". They may alternatively contain an infinitive phrase as a noun phrase without leading "to" following the short command description convention in manpages. These may look funny to some people but are my intentional choices of style to keep this documentation as simple as possible. These Noun phrases do not capitalize their starting nor end with periods following these short description convention.
Note | |
---|---|
Proper nouns including command names keeps their case irrespective of their location. |
A command snippet quoted in a text paragraph is referred by the typewriter font between double quotation marks, such as "aptitude safe-upgrade
".
A text data from a configuration file quoted in a text paragraph is referred by the typewriter font between double quotation marks, such as "deb-src
".
A command is referred by its name in the typewriter font optionally followed by its manpage section number in parenthesis, such as bash
(1). You are encouraged to obtain information by typing the following.
$ man 1 bash
A manpage is referred by its name in the typewriter font followed by its manpage section number in parenthesis, such as sources.list
(5). You are encouraged to obtain information by typing the following.
$ man 5 sources.list
An info page is referred by its command snippet in the typewriter font between double quotation marks, such as "info make
". You are encouraged to obtain information by typing the following.
$ info make
A filename is referred by the typewriter font between double quotation marks, such as "/etc/passwd
". For configuration files, you are encouraged to obtain information by typing the following.
$ sensible-pager "/etc/passwd"
A directory name is referred by the typewriter font between double quotation marks, such as "/etc/apt/
". You are encouraged to explore its contents by typing the following.
$ mc "/etc/apt/"
A package name is referred by its name in the typewriter font, such as vim
. You are encouraged to obtain information by typing the following.
$ dpkg -L vim $ apt-cache show vim $ aptitude show vim
A documentation may indicate its location by the filename in the typewriter font between double quotation marks, such as "/usr/share/doc/base-passwd/users-and-groups.txt.gz
" and "/usr/share/doc/base-passwd/users-and-groups.html
"; or by its URL, such as https://www.debian.org. You are encouraged to read the documentation by typing the following.
$ zcat "/usr/share/doc/base-passwd/users-and-groups.txt.gz" | sensible-pager $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html" $ sensible-browser "https://www.debian.org"
An environment variable is referred by its name with leading "$
" in the typewriter font between double quotation marks, such as "$TERM
". You are encouraged to obtain its current value by typing the following.
$ echo "$TERM"
The popcon data is presented as the objective measure for the popularity of each package. It was downloaded on 2024-03-03 11:51:37 UTC and contains the total submission of 237734 reports over 198687 binary packages and 27 architectures.
Note | |
---|---|
Please note that the |
The popcon number preceded with "V:" for "votes" is calculated by "1000 * (the popcon submissions for the package executed recently on the PC)/(the total popcon submissions)".
The popcon number preceded with "I:" for "installs" is calculated by "1000 * (the popcon submissions for the package installed on the PC)/(the total popcon submissions)".
Note | |
---|---|
The popcon figures should not be considered as absolute measures of the importance of packages. There are many factors which can skew statistics. For example, some system participating popcon may have mounted directories such as " |
The package size data is also presented as the objective measure for each package. It is based on the "Installed-Size:
" reported by "apt-cache show
" or "aptitude show
" command (currently on amd64
architecture for the unstable
release). The reported size is in KiB (Kibibyte = unit for 1024 bytes).
Note | |
---|---|
A package with a small numerical package size may indicate that the package in the |
Note | |
---|---|
A package size followed by "(*)" indicates that the package in the |
Here are some reminders for new users:
Backup your data
Secure your password and security keys
Don't over-engineer your system
Read your log files
The FIRST error is the one that counts
Search the Internet before asking questions
Don't be root when you don't have to be
Don't mess with the package management system
Don't type anything you don't understand
Don't change the file permissions (before the full security review)
Don't leave your root shell until you TEST your changes
Always have an alternative boot media (USB memory stick, CD, …)
Here are some interesting quotes from the Debian mailing list which may help enlighten new users.
"This is Unix. It gives you enough rope to hang yourself." --- Miquel van Smoorenburg <miquels at cistron.nl>
"Unix IS user friendly… It's just selective about who its friends are." --- Tollef Fog Heen <tollef at add.no>
Wikipedia has article "Unix philosophy" which lists interesting quotes.