== Preface

// vim: set sts=2 expandtab: 

This http://people.debian.org/\~osamu/pub/getwiki/html/index.en.html[Debian Reference (version 2)] (@@@build-date@@@) is intended to provide a broad overview of 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 http://en.wikipedia.org/wiki/GNU[GNU]/http://en.wikipedia.org/wiki/Linux[Linux] system works.

=== Disclaimer

// The reason behind "Debian Reference" was : Debian may be KFreeBSD.  
// It has many BSD and other contribution.  
// This really document "Debian" things such as packaging and its network configuration middle layers.
// I as the lead author do not wish to make any political statement here either.
// Thus followings are commented out.
// For the sake of brevity, in this document Debian GNU/Linux is usually referred to as simply Debian.  ...

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 unstable version of 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.

=== What is Debian

The http://www.debian.org[Debian Project] is an association of individuals who have made common cause to create a free operating system.  It\'s distribution is characterized by:

- Commitment to the software freedom: http://www.debian.org/social_contract[Debian Social Contract and Debian Free Software Guidelines (DFSG)].
- Internet based distributed unpaid volunteer effort: http://www.debian.org
- Large number of pre-compiled high quality softwares.
- Focus on stability and security with easy access to the security updates.
- Focus on smooth upgrade to latest softwares with `unstable` and `testing` archives.
- Large number of supported hardware architectures.

Free Software pieces in Debian come from http://en.wikipedia.org/wiki/GNU[GNU], http://en.wikipedia.org/wiki/Linux[Linux], http://en.wikipedia.org/wiki/Berkeley_Software_Distribution[BSD], http://en.wikipedia.org/wiki/X_Window_System[X], http://en.wikipedia.org/wiki/Internet_Systems_Consortium[ISC], http://en.wikipedia.org/wiki/Apache_Software_Foundation[Apache], http://en.wikipedia.org/wiki/Ghostscript[Ghostscript], http://en.wikipedia.org/wiki/Common_Unix_Printing_System[Common Unix Printing System ], http://en.wikipedia.org/wiki/Samba_(software)[Samba], http://en.wikipedia.org/wiki/GNOME[GNOME], http://en.wikipedia.org/wiki/KDE[KDE], http://en.wikipedia.org/wiki/Mozilla[Mozilla], http://en.wikipedia.org/wiki/OpenOffice.org[OpenOffice.org], http://en.wikipedia.org/wiki/Vim_(text_editor)[Vim], http://en.wikipedia.org/wiki/TeX[TeX], http://en.wikipedia.org/wiki/LaTeX[LaTeX], http://en.wikipedia.org/wiki/DocBook[DocBook], http://en.wikipedia.org/wiki/Perl[Perl], http://en.wikipedia.org/wiki/Python_(programming_language)[Python], http://en.wikipedia.org/wiki/Tcl[Tcl], http://en.wikipedia.org/wiki/Java_(programming_language)[Java], http://en.wikipedia.org/wiki/Ruby_(programming_language)[Ruby], http://en.wikipedia.org/wiki/PHP[PHP], http://en.wikipedia.org/wiki/Berkeley_DB[Berkeley DB], http://en.wikipedia.org/wiki/MySQL[MySQL], http://en.wikipedia.org/wiki/PostgreSQL[PostgreSQL], http://en.wikipedia.org/wiki/Exim[Exim], http://en.wikipedia.org/wiki/Postfix_(software)[Postfix], http://en.wikipedia.org/wiki/Mutt_(e-mail_client)[Mutt], http://en.wikipedia.org/wiki/FreeBSD[FreeBSD], http://en.wikipedia.org/wiki/OpenBSD[OpenBSD], http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs[Plan 9] and many more independent free software projects.  Debian integrates this diversity of Free Software into one system.

=== About this document

==== Guiding rules

Following guiding rules were followed while compiling this document:

- don\'t explain in details what is well documented elsewhere (in the judgment of the author)
- Provide overview and skip corner cases (**Big Picture**)
- Keep It Short and Simple. (**KISS**)
- Focus on non-GUI tools and consoles. (Use **shell examples**)
- Do not reinvent the wheel. (Use pointers to **the existing references**)
- Be objective. (Use http://popcon.debian.org/[popcon] etc.)

I tried to elucidate hierarchical aspects and lower levels of the system.

// Although I do not list these, this is for my own reminder
// * Make it release independent.
// * Make as modular as possible for easier maintenance.
// * Use scripts and examples to make the key content language independent.

==== Prerequisites

You are required to seek help from (in approximate order of importance, starting with the most important sources):

- the Debian site at http://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: http://bugs.debian.org/[http://bugs.debian.org/<package_name>],
- the Debian Wiki at http://wiki.debian.org/ for the moving and specific topics,
- the HOWTOs from The Linux Documentation Project (TLDP) at http://tldp.org/ ,
- the Single UNIX Specification from the Open Group\'s The UNIX System Home Page at http://www.unix.org/ , and
- the free encyclopedia from Wikipedia at http://wikipedia.org/.

NOTE: For detailed documentation, you may need to install the corresponding documentation package named with "`-doc`" as its suffix.

==== Conventions

This document provides information through the following simplified presentation style with `bash`(1) shell command examples and bullets:

--------------------
# <command in root account>
$ <command in user account>
--------------------

- <description of action>

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.

NOTE: See the meaning of the "`$PS1`" and "`$PS2`" environment variables in `bash`(1). 

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:

--------------------
$ 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:

--------------------
$ 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:

--------------------
$ 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:

--------------------
$ sensible-pager "/etc/passwd"
--------------------

A **directory name** is referred by the typewriter font between double quotation marks, such as "`/etc/init.d/`".  You are encouraged to explore its contents by typing:

--------------------
$ mc "/etc/init.d/"
--------------------

A **package name** is referred by its name in the typewriter font, such as `vim`.  You are encouraged to obtain information by typing:

--------------------
$ 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/sysv-rc/README.runlevels.gz`" and "`/usr/share/doc/base-passwd/users-and-groups.html`"; or by its http://en.wikipedia.org/wiki/Uniform_Resource_Locator[URL], such as http://www.debian.org[http://www.debian.org].  You are encouraged to read the documentation by typing:

--------------------
$ zcat "/usr/share/doc/sysv-rc/README.runlevels.gz" | sensible-pager 
$ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html"
$ sensible-browse "http://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:

--------------------
$ echo "$TERM"
--------------------

==== The popcon

The http://popcon.debian.org/[popcon] data is presented as the objective measure for the popularity of each package.  It was downloaded on @@@pop-date@@@ and contains the total submission of @@@pop-submissions@@@ reports over @@@pop-packages@@@ binary packages and @@@pop-architectures@@@ architectures.

NOTE: Please note that the `@@@arch@@@` `unstable` archive contains only @@@all-packages@@@ packages currently.  The popcon data contains reports from many old system installations.

// If you check popcon data, you see some old version of Ubuntu distribution etc. sending data to Debian popcon system.

The popcon number preceded with "V:" for "votes" is calculated by "100 \* (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 "100 \* (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 "`/bin`" with "`noatime`" option for system performance improvement and effectively disabled "vote" from such system.

==== The package size

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 `@@@arch@@@` architecture for the `unstable` release).  The reported size is in KiB (http://en.wikipedia.org/wiki/Kibibyte[Kibibyte] = unit for 1024 bytes).

NOTE: A package with a small numerical package size may indicate that the package in the `unstable` release is a dummy package which installs other packages with significant contents by the dependency.  The dummy package enables a smooth transition or split of the package.

==== Bug reports

Please file bug reports on the `debian-reference` package using `reportbug`(1) if you find any issues. Please include correction suggestion by "`diff -u`" to the plain text version or to the source.

=== Some quotes for new users

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

// * "Confucius says important Unix lessons are (1) Don't change the permissions, (2) back up your data, (3) keep it simple, stupid, (4) read the freaking manual, (5) don't mess with package management, (6) don't type anything you don't understand, (7) always have a boot floppy or CD, (8) read your log files, (9) the FIRST error is the one that counts, (10) don't leave your root shell until you TEST your changes, (11) don't be root when you don't have to be" --- The IRC bot of {{{#debian}}}}, <dpkg>
//
// Actually, that last comment is worthwhile, even if it is convoluted.  I'd leave it in, or break it up into smaller quotes.  -KO
// I changed it to 'Confucius says' rather than 'Confucius say' because the deliberate grammar error is unnecessary.   

// OA: Although interesting, I do not know who created above thus reluctant to include here.  I agree with grammar correction.  Please tell me where to find it.  I am not much of IRC user.
