<!-- retain these comments for translator revision tracking -->
<!-- Original version: $Revision: 1.5 $ -->
<chapt id="choosing">Choosing a Debian distribution

<p>There are many different Debian distributions. Choosing
the proper Debian distribution is an important decision. This section
covers some information useful for users that want to make the choice
best suited for their system and also answers possible questions that might be
arising during the process. It does not deal with "why you should choose
Debian" but rather "which distribution of Debian".

<p>For more information on the available distributions read <ref id="dists">.

<sect>Which Debian distribution (stable/testing/unstable) is better
for me? 

<p>The answer is a bit complicated. It really depends on what you intend to do.
One solution would be to ask a friend who runs Debian.  But that does not mean
that you cannot make an independent decision. In fact, you should be able to
decide once you complete reading this chapter.</p>

<p><list>

<item><p>If security or stability are at all important for you: install stable.
period. This is the most preferred way. </p>

<item><p>If you are a new user installing to a desktop machine, start with stable.
Some of the software is quite old, but it's the least buggy environment to work
in. You can easily switch to the more modern unstable once you are a little
more confident.</p>

<item><p>If you are a desktop user with some experience in Linux and does not mind
facing the odd bug now and then, use unstable. It has all the latest and
greatest software, and bugs are usually fixed swiftly.</p>

<item><p>If you are running a server, especially one that has strong stability requirements or is exposed to the Internet,
install stable. This is by far the strongest and safest
choice.</p>

</list>

<p>The following questions (hopefully) provide more detail on these choices.
After reading this whole FAQ, if you still could not make a decision, stick
with the stable distribution.</p>

<sect1>You asked me to install stable, but in stable so and so
hardware is not detected/working. What should I do? 

<p>Try to search the web using a search engine and see if someone else is able
to get it working in stable. Most of the hardware should work fine with stable.
But if you have some state-of-the-art, cutting edge hardware, it might not work
with stable. If this is the case, you might want to install/upgrade to
unstable.</p>

<p>For laptops, <url id="http://www.linux-on-laptops.com/"> is a very good
website to see if someone else is able to get it to work under Linux. The
website is not specific to Debian, but is nevertheless a tremendous resource. I
am not aware of any such website for desktops.</p>

<p>Another option would be to ask in the debian-user mailing list by sending
an email to debian-user@lists.debian.org . Messages can be posted to the list
even without subscribing. The archives can be read
through <url id="http://lists.debian.org/debian-user/"> Information regarding
subscribing to the list can be found at the location of archives. You are
strongly encourage to post your questions on the mailing-list than on <url
id="http://www.debian.org/support" name="irc">.  The mailing-list messages are
archived, so solution to your problem can
help others with the same issue. </p>

<sect1>Will there be different versions of packages in different distributions? 

<p>Yes. Unstable has the most recent (latest) versions. But the packages in
unstable are not well tested and might have bugs.</p>

<p>On the other hand, stable contains old versions of packages.
But this package is well tested and is less likely to have any bugs.</p>

<p>The packages in testing fall between these two extremes.</p>

<sect1>The stable distributions really contains outdated packages. Just look at Kde, Gnome, Xorg or even the kernel. They are very old. Why is it so? 

<p>Well, you might be correct. The age of the packages at stable
depends on when the last release was made. Since there is typically
over 1 year between releases you might find that stable contains old
versions of packages. However, they have been tested in and out. One can
confidently say that the packages do not have any known severe bugs, security
holes etc., in them. The packages in stable integrate seamlessly with other
stable packages. These characteristics are very important for production
servers which have to work 24 hours a day, 7 days a week.</p>

<p>On the other hand, packages in testing or unstable can have hidden bugs,
security holes etc., Moreover, some packages in testing and unstable might not
be working as intended. Usually people working on a single desktop prefer
having the latest and most modern set of packages. Unstable is the solution for
this group of people.</p>

<p>As you can see, stability and novelty are two opposing ends of the spectrum.
If stability is required: install stable distribution.  If you want to work
with the latest packages, then install unstable.</p>

<sect1>If I were to decide to change to another distribution, Can I do
that?

<p>Yes, but it is a one way process.  You can go from stable --&gt; testing
--&gt; unstable. But the reverse direction is not "possible". So better
be sure if you are planning to install/upgrade to unstable.</p>

<p>Actually, if you are an expert and if you are willing to spend some
time and if you are real careful and if you know what you are doing,
then it might be possible to go from unstable to testing and then to
stable. The installer scripts are not designed to do that. So in the
process, your configuration files might be lost and.... 

<sect1>Could you tell me whether to install testing or unstable?

<p>This is a rather subjective issue. There is no perfect answer
but only a "wise guess" could be made while deciding between unstable
and testing. My personal order of preference is Stable, Unstable and
Testing. The issue is like this:</p>

<p><list>

<item>Stable is rock solid. It does not break.

<item><p>Testing breaks less often than Unstable. But when it breaks, it takes a
long time for things to get rectified. Sometimes this could be days and it
could be months at times.</p>

<item>Unstable changes a lot, and it can break at any point. However, fixes get
rectified in many occasions in a couple of days and it always has the latest
releases of software packaged for Debian.

</list>

<p>But there are times when tracking testing would be beneficial as opposed to
unstable. The author such situation due to the gcc transition from gcc3 to
gcc4. He was trying to install the <package>labplot</package> package on a
machine tracking unstable and it could not be installed in unstable as some of
its dependencies have undergone gcc4 transition and some have not. But the
package in testing was installable on a testing machine as the gcc4
transitioned packages had not "trickled down" to testing.</p>

  
<sect1>You are talking about testing being broken. What do you mean by
that?

<p>Sometimes, a package might not be installable through package management
tools. Sometimes, a package might not be available at all, maybe it was 
(temporarily) removed due to bugs or unmet dependencies. Sometimes, a
package installs but does not behave in the proper way.</p>

<p>When these things happen, the distribution is said to be broken (at
least for this package).</p>

<sect1>Why is it that testing could be broken for months? Wont the fixes
introduced in unstable flow directly down into testing?

<p>The bug fixes and improvements introduced in the unstable distribution
trickle down to testing after a certain number of days. Let's say this
threshold is 10 days. The packages in unstable go into testing only when there
are no RC-bugs reported against them. If there is a RC-bug filed against a
package in unstable, it will not go into testing after the 10 days.</p>

<p>The idea is that, if the package has any problems, it would be discovered by
people using unstable and will be fixed before it enters testing.  This keeps
the testing in an usable state for most period of the time.  Overall a
brilliant concept, if you ask me. But things are alwasy not so simple. Consider
the following situation:</p>

<p><list>

    <item>Imagine you are interested in package XYZ.
    <item>Let's assume that on June
10, the version in testing is XYZ-3.6 and in unstable it is XYZ-3.7
    <item>After 10 days, XYZ-3.7 from unstable migrates into
testing.
    <item>So on June 20, both testing and unstable have
XYZ-3.7 in their repositories.
    <item>Let's say, The user of testing distribution sees
that a new XYZ package is available and updates his XYZ-3.6 to XYZ-3.7
    <item>Now on June 25, someone
using testing or unstable discovers an RC bug in XYZ-3.7 and files it
in the BTS.
    <item>The maintainer of XYZ fixes this bug and uploads it
to unstable say on June 30. Here it is assumed that it takes 5 days
for the maintainer to fix the bug and upload the new version. The
number 5 should not be taken literally. It could be less or more,
depending upon the severity of the RC-bug at hand.
    <item>This new version in unstable, XYZ-3.8 is scheduled
to enter testing on July 10th.
    <item>But on July 5th some other
person, discovers another RC-bug in XYZ-3.8
    <item>Let's say the maintainer of XYZ fixes this new
RC-bug and uploads new version of XYZ after 5 days.
    <item>So on July 10, testing has XYZ-3.7 while unstable
has XYZ-3.9
    <item>This new version XYZ-3.9 is now rescheduled to
enter testing on July 20th.
    <item>Now since you are running
testing, and since XYZ-3.7 is buggy, you could probably use XYZ only
after July 20th. That is you essentially ended up with a broken XYZ for
about one month.

</list>

<p>The situation can get much more complicated, if say, XYZ depends on 4 other
packages. This could in turn lead to unusable testing distribution for months.
The above scenario which is artificially created by me, can occur in the real
life. But such occurrences are rare.

<sect1>From an administrator's point of view, Which distribution
requires more attention?

<p>One of the main reasons many people chose Debian over other Linux distributions is
that it requires very little administration. People want a system that just works.
In general one can say that, stable requires very little maintenance while
testing and unstable require constant maintenance from the administrator. If you are
running stable, all you need to worry about is, keeping track of security
updates. If you are running either testing or unstable it is a good idea to be
aware of the new bugs discovered in the installed packages, new
bugfixes/features introduced
etc.</p>

<!-- Removed, since the pictures cannot be added in the SGML code
<p>The following pictures, from <url id="http://exon.dyndns.org/releasepics/"
name="Matthew Exon"> illustrate the maintenance trauma the various distribution
options might cause you over time.  The graph provides a qualitative (but not
quantitative) picture of the amount of time administrators might be spending.
</p>
-->

<sect1>What happens when a new release is made?

<p>This question will not help you in choosing a Debian distribution. But
sooner or later you will face this question.

<p>The stable distribution is currently &releasename;; The next stable
distribution will be called as &testingreleasename;. Let's consider the
particular case as to what happens when &testingreleasename; is released as the new stable
version.</p>

<p><list>
    <item> oldstable = &oldreleasename;; stable = &releasename;; testing = &testingreleasename;; unstable =
sid
    <item>Unstable is always referred to as sid irrespective of whether a
release is made or not.
    <item>packages constantly migrate from sid to testing (i.e. &testingreleasename;). But
    packages in stable (i.e. &releasename;) remain the same except for security
    updates.
    <item>after sometime testing becomes frozen. But it will still be called
    testing. At this point no new packages from unstable can migrate to testing
    unless they include release-critical (RC) bug fixes.
    <item>When testing is frozen, all the new bugfixes introduced, have to be
    manualy checked by the members of the release team. This is done to ensure
    that there wont be any unknown severe problems in the frozen
    testing.
    <item> RC bugs in 'frozen testing' are reduced to zero.
    <item>The 'frozen testing' with no rc-bugs will be released as the new
    stable version. In our example, this new stable release will be called as
    &testingreleasename;.
    <item>At this stage oldstable = &releasename;, stable = &testingreleasename;. The contents of
stable and 'frozen testing' are same at this point.
    <item>A new testing is forked from the current unstable.
    <item>Packages start coming down from sid to testing and the Debian
    community will be working towards making the next stable release.
</list>

<sect1>I have a working Desktop/cluster with Debian installed. How do
I know which distribution I am running?

<p>In most situations it is very easy to figure this out. Take a look at the <file>/etc/apt/sources.list</file>
file. There will be an entry similar to this:

<example>
deb http://ftp.us.debian.org/debian/ unstable main contrib 
</example>

<p>The third field ('unstable' in the above example) indicates the Debian
distribution the system is currently tracking.</p>

<p>You can also use <prgn>lsb_release</prgn> (available in the
<package>lsb-release</package> package). If you run this
program in an unstable system you will get:

<example>
$ lsb_release  -a
LSB Version:    core-2.0-noarch:core-3.0-noarch:core-3.1-noarch:core-2.0-ia32:core-3.0-ia32:core-3.1-ia32
Distributor ID: Debian
Description:    Debian GNU/Linux unstable (sid)
Release:    unstable
Codename:   sid
</example>

<p>However, this is always not that easy. Some systems might have
<file>sources.list</file> files with
multiple entries corresponding to different distributions. This could
happen if the administrator is tracking different packages from different
Debian distributions. This is frequently referred to as apt-pinning. These
systems might run a mixture of distributions.

<sect1>I am currently tracking stable. Can I change to testing or
unstable? If so, How?

<p>If you are currently running stable, then in the <file>
/etc/apt/sources.list</file> file the third field will be either &releasename; or
stable. You need to change this to the distribution you want to run. If you
want to run testing, then change the third field of
<file>/etc/apt/sources.list</file> to testing. If you want to run
unstable, then change the third field to unstable.

<p>Currently testing is called &testingreleasename;. So, if you change the third field of 
<file>/etc/apt/sources.list</file> to &testingreleasename;, then also you will be running
testing. But when &testingreleasename; becomes stable, you will still be tracking &testingreleasename;.</p>

<p>Unstable is always called Sid. So if you change the third field of <file>
/etc/apt/sources.list</file> to sid, then you will be tracking unstable.

<p>Currently Debian offers security updates for testing but not for
unstable, as fixes in unstable are directly made to the main archive. So
if you are running unstable make sure that you remove the lines relating to
security updates in <file>/etc/apt/sources.list</file>.

<p>If there is a release notes document available for the distribution you
are upgrading to (even though it has not yet been released) it would be wise 
to review it, as it might provide information on how you should upgrade to it.

<p>Nevertheless, once you make the above changes, you can run <file>aptitude
update</file> and then install the packages that you want. Notice that
installing a package from a different distribution might automatically upgrade
half of your system. If you install individual packages you will end up with a
system running mixed distributions.

<p>It might be best in some situations to just fully upgrade to the new
distribution running <prgn>apt-get dist-upgrade</prgn>, <prgn>aptitude
safe-upgrade</prgn> or <prgn>aptitude full-upgrade</prgn>. Read
apt's and aptitude's manual pages for more information.

<sect1>I am currently tracking testing (&testingreleasename;). What will happen
when a release is made? Will I still be tracking testing or will my machine be
running the new stable distribution?

<p>It depends on the entries in the <file>/etc/apt/sources.list</file>
file. If you are currently tracking testing, these entries are similar to
either:

<example>
deb http://ftp.us.debian.org/debian/ testing main
</example>

or

<example>
deb http://ftp.us.debian.org/debian/ &testingreleasename; main
</example>

<p>If the third field in <file>/etc/apt/sources.list</file> is 'testing' then
you will be tracking testing even after a release is made. So after &testingreleasename; is
released, you will be running a new Debian distribution which will have
a different codename. Changes might not be apparent at first but will be evident as soon as new packages from unstable go over to the testing distribution.</p>

<p>But if the third field contains '&testingreleasename;' then you will be
tracking stable (since &testingreleasename; will then be the new stable
distribution).</p>

<sect1>I am still confused. What did you say I should install?

<p>If unsure, the best bet would be stable distribution.</p>

<sect>But what about Knoppix, Linex, Ubuntu, and others?

<p>They are not Debian; they are <em>Debian based</em>. Though there are
many similarities and commonalities between them, there are also
crucial differences.</p>

<p>All these distributions have their own merits and are suited to some
specific set of users. For more information, read the information of <url
id="http://www.debian.org/misc/children-distros" name="software
distributions based on Debian"> available at the Debian website.


<sect1>I know that Knoppix/Linex/Ubuntu/... is Debian-based. So after installing it on the hard disk, can I use 'apt' package tools on it?

<p>These distributions are Debian based. But they are not Debian. You will be
still able to use apt package tools by pointing the
<file>/etc/apt/sources.list</file> file to
these distributions'  repositories. But then you are not running Debian, you are
running a different distribution. They are not the same.</p>

<p>In most situations if you stick
with one distribution you should use that and not mix packages from other
distributions. Many common breakages arise due to people running a distribution
and trying to install Debian packages from other distributions. The fact that
they use the same formatting and name (.deb) does not make them inmediately
compatible.

<p>For example, Knoppix is a Linux distribution designed to be booted as a live CD where as
Debian is designed to be installed on hard-disk. Knoppix is great if you want
to know whether a particular hardware works, or if you want to experience how a
linux system 'feels' etc., Knoppix is good for demonstration purposes while
Debian is designed to run 24/7.  Moreover the number of packages available, the
number of architectures supported by Debian are far more greater than that of
Knoppix.</p>

<p>If you want Debian, it is best to install Debian from the get-go. Although
it is possible to install Debian through other distributions, such as Knoppix,
the procedure calls for expertise. If you are reading this FAQ, I would assume
that you are new to both Debian and Knoppix. In that case, save yourself a lot
of trouble later and install Debian right at the beginning.</p>

<sect1>I installed Knoppix/Linex/Ubuntu/... on my hard disk. Now I have a
problem.  What should I do? 

<p>You are advised not to use the Debian forums (either mailing lists or IRC)
for help as people might advise you thinking that you are running a Debian
system and the "fixes" they provide might not be suited to what you are
running. They might even worsen the problem you are facing.

<p>Use the forums of the specific distribution you are using first. If you do
not get help or the help you get does not fix your problem you might want to
try asking in Debian forums, but keep the advise of the previous paragraph in
mind.

<sect1>I'm using Knoppix/Linex/Ubuntu/... and now I want to use Debian. How do I migrate?

<p>Consider the change from a Debian-based distribution to Debian just like a
change from one operating system to another one. You should make a backup of
all your data and reinstall the operating system from scratch. You should not
attempt to "upgrade" to Debian using the package management tools as you might
end up with an unusable system.

<p>If all your user data (i.e. your <file>/home</file>) is under a separate
partition migrating to Debian is actually quite simple, you just have to tell
the installation system to mount (but not reformat) that partition when
reinstalling. Making backups of your data, as well as your previous system's
configuration (i.e. <file>/etc/</file> and, maybe, <file>/var/</file>) is still encouraged.
