From []:

You are running Debian stable, because you prefer the stable Debian tree. It runs great, there is just one problem: the software is a little bit outdated compared to other distributions. That is where backports come in.

Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates), so they will run without new libraries (wherever it is possible) on a stable Debian distribution. It is recommended to pick out single backports which fits your needs, and not to use all backports available.

Backporting - Best practise

Here is a (incomplete) list of rules you should follow to get a package into

Basic rules

1. Backport packages only from testing, not unstable (except when updating already existing backports, backports from unstable are accepted for security fixes). If you backport from unstable anyway, you may like [#check-backports-script this script] to tell you when you can go ahead.

2. Use 'sarge-backports' as distribution, not stable or unstable.

3. Reduce the revision by one and append bpo${build_int}, e.g. 1.2.3-4 becomes 1.2.3-3bpo1.

4. Backport no Build-Depends if not absolutely needed.

5. Always build against plain sarge (and include other backports only if absolutely needed).

6. If there is no previous Debian revision of your package in the backports archive (same upstream version), don't forget to include the source tarball by passing -sa to dpkg-buildpackage or dpkg-genchanges.


If you're using dupload on testing/sid (there is a patched version of dput on already), you can add

package config;
$cfg{'bpo'} = {
    fqdn => "",
    incoming => "/",

to your ~/.dupload.conf file. For dput, use the following in ~/

fqdn =
incoming = /
method = ftp
login = anonymous


Checking whether a package is ready for


You can use [ the check-packports script] to check which packages are ready for upload, in case you built unstable packages and are waiting for the respective versions to trickle to testing. The script assumes you have all your .changes files names properly (*bpo*.changes), and that they're all underneath the directory you pass as argument.