- Configuring Apt Sources
Configuring Apt Sources
A repository is generally a network server, such as the official DebianStable repository. Local directories or CD/DVD are also accepted.
The specific repositories (package sources) configured on your machine affect:
- What software packages are available for download
- What versions of packages are available
- Who packages the software
Commonly used package sources
DebianStable: official Debian repository for the current release
DebianSecurity: official Debian repository for frequent security updates
DebianTesting: current development state of the next stable Debian distribution
DebianUnstable: rolling development version containing the latest packages
DebianExperimental: development version containing the experimental/alpha/beta/untested packages
Editing software sources
Being able to change the repositories used by your package management system is a powerful feature but this power comes with some responsibility. Users are cautioned that it is possible to break your system in a way that could be difficult or impossible to cleanly fix by adding third-party repositories, or repositories for a Debian version that does not match your current version - these repository create a risk of conflicting package versions, creating what's sometimes called a "Franken-Debian" system. The whole concept behind a Debian stable release is that the Debian developers have picked a set of software and their versions that function nicely together. While this software is patched to fix security issues, the software is frequently not the latest version. It takes some experience to know how the repos may be changed without risk of breaking your system. Users of all levels are advised to change repos cautiously.
Using a graphical program
Some programs allow configuring Apt sources through a graphical interface. For example:
Applications menu > Settings > Software and updates (software-properties-gtk package)
Using a text editor
To add custom sources, creating separate files under /etc/apt/sources.list.d/ is preferred.
The entries in this file normally follow this format:
deb http://site.example.com/debian distribution component1 component2 component3 deb-src http://site.example.com/debian distribution component1 component2 component3
The first word on each line, deb or deb-src, indicates the type of archive. Deb indicates that the archive contains binary packages (deb), the pre-compiled packages that we normally use. Deb-src indicates source packages, which are the original program sources plus the Debian control file (.dsc) and the diff.gz containing the changes needed for packaging the program.
The 'distribution' can be either the release code name / alias (jessie, stretch, buster, sid) or the release class (oldstable, stable, testing, unstable) respectively. If you mean to be tracking a release class then use the class name, if you want to track a Debian point release, use the code name. Avoid using stable in your sources.list as that results in nasty surprises and broken systems when the next release is made; upgrading to a new release should be a deliberate, careful action and editing a file once every two years is not a burden.
For example, if you always want to help test the testing release, use 'testing'. If you are tracking bullseye and want to stay with it from testing to end of life, use 'bullseye'.
contrib packages contain DFSG-compliant software, but have dependencies not in main (possibly packaged for Debian in non-free).
non-free contains software that does not comply with the DFSG.
Below is an example of a sources.list for Debian 10/Buster.
deb http://deb.debian.org/debian buster main deb-src http://deb.debian.org/debian buster main deb http://deb.debian.org/debian-security/ buster/updates main deb-src http://deb.debian.org/debian-security/ buster/updates main deb http://deb.debian.org/debian buster-updates main deb-src http://deb.debian.org/debian buster-updates main
If you also need the contrib and non-free components, add contrib non-free after main. For example, for Debian 10/Buster:
deb http://deb.debian.org/debian buster main contrib non-free deb-src http://deb.debian.org/debian buster main contrib non-free deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free deb http://deb.debian.org/debian buster-updates main contrib non-free deb-src http://deb.debian.org/debian buster-updates main contrib non-free
If you also need the Backports, contrib, and non-free components, add buster-backports lines. For example, for Debian 10/Buster:
deb http://deb.debian.org/debian buster-backports main contrib non-free deb-src http://deb.debian.org/debian buster-backports main contrib non-free
You can instead use https://... in all of the above lines to use the repositories over encrypted HTTPS connections if the according mirror supports HTTPS. (Users of Debian 9/Stretch or older releases will need to install the apt-transport-https package first. The security.debian.org hosts currently do not have publicly verifiable SSL certificates on HTTPS and hence cannot be used with HTTPS at the moment.)
You can use a GNOME tool to edit your sources.list file. Access it through Menu → System → Administration → Software Sources.
gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk
Using Tor with Apt
Here is an example sources.list using the onion services for Debian 9/Stretch:
deb tor+http://vwakviie2ienjx6t.onion/debian stretch main deb-src tor+http://vwakviie2ienjx6t.onion/debian stretch main deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates main deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates main deb tor+http://vwakviie2ienjx6t.onion/debian stretch-updates main deb-src tor+http://vwakviie2ienjx6t.onion/debian stretch-updates main
If you'd rather use your CD-ROM for installing packages or updating your system automatically with APT, you can put it in your /etc/apt/sources.list. To do so, you can use the apt-cdrom program like this:
# apt-cdrom add
with the Debian CD-ROM in the drive.
You can use -d for the directory of the CD-ROM mount point or add a non-CD mount point (i.e. a USB keydrive).
On occasion name resolution can break. For example, below is from a S/390x Port running in a QEMU Chroot:
# apt update 0% [Working]Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Unsupported socketcall: 20 Err:1 http://ftp.us.debian.org/debian testing InRelease Temporary failure resolving 'ftp.us.debian.org' Reading package lists... Done W: Failed to fetch http://ftp.us.debian.org/debian/dists/testing/InRelease Temporary failure resolving 'ftp.us.debian.org' W: Some index files failed to download. They have been ignored, or old ones used instead.
You can temporarily work around it by obtaining the IP address from another machine, and then using the IP address rather than the URI:
echo "deb http://18.104.22.168/debian testing main" > /etc/apt/sources.list apt update Get:1 http://22.214.171.124/debian testing InRelease [232 kB] Get:2 http://126.96.36.199/debian testing/main s390x Packages [7583 kB] Get:3 http://188.8.131.52/debian testing/main Translation-en [5134 kB] Fetched 13.0 MB in 32s (403 kB/s) Reading package lists... Done
Debug Symbol Packages
To debug a crash you often need the related debug symbol files. For most Debian packages these are in dbgsym packages. These are available from a separate archive.
Here is an example entry for your sources.list for Debian 10/Buster dbgsym packages:
deb http://deb.debian.org/debian-debug/ buster-debug main
The same if you running testing.
deb http://deb.debian.org/debian-debug/ testing-debug main
And one more example if you are using the unstable distribution.
deb http://deb.debian.org/debian-debug/ unstable-debug main
A list of UnofficialRepositories to get extra software ( Skype, Opera, Google )
DebianRepository/UseThirdParty - Instructions to use to a third-party repository
sources.list(5) manual page