Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Ubuntu one can add a repository to apt-get via the following command -

sudo add-apt-repository ppa:yannubuntu/boot-repair

As Ubuntu is based on Debian code base, I was expecting that the same would work in Debian too, but it doesn't.

  • What is the reason for this?
  • Is there some other shell command I can use to achieve the same?

Note: I already know I can edit /etc/apt-get/sources.list, but I want to achieve this from shell. I also want to know why the same command won't work when the code base is the same.

share|improve this question
up vote 95 down vote accepted

Debian Wheezy and earlier:

The program add-apt-repository is available in Debian. It's in the python-software-properties package:

sudo apt-get install python-software-properties

It was added to that package in version 0.75. The current version in Debian Stable ('squeeze") is 0.60, so it doesn't have it. The version currently in Debian Testing ("wheezy") is, so it's available there.

Debian Jessie and later (2014)

As pointed out by @voltagex in the comments, it can now be found in the software-properties-common package:

sudo apt-get install software-properties-common
share|improve this answer
At least in sid, the add-apt-repository script seems to have moved to software-properties-common – voltagex Jun 22 '14 at 10:26
Version 0.92 of python-software-properties here, and (again) missing :-( – gatopeich Nov 12 '14 at 11:33
See the comment above yours -- it's now in software-properties-common – Jim Paris Nov 12 '14 at 22:20
had hassles updating though – peterretief May 11 '15 at 12:46

Assuming you're running a non-ancient version of Debian (Etch or later), you can just drop a file in /etc/apt/sources.list.d/ The file name must end with .list; Debian Stretch (not yet released) will likely add .sources with a different format.

The format is the same as the main sources.list file.

The advantage is, especially if this is for some software you're distributing, you don't have to worry merging your changes into a possibly-edited /etc/apt/sources.list file (especially hard to deal with if your program is uninstalled). You can use dpkg conffile support to put the file in /etc/apt/sources.list.d/.

share|improve this answer
sources.list.d exists since etch, I think. – Gilles Aug 20 '12 at 22:08
Yeah, but apt-add-repository takes care of things like translating "ppa:" to an http://ppa.launchpad... type, and to download and install the repository key so that packages are not treated as suspicious – Ricardo Cárdenes Jul 27 '14 at 11:24
@Gilles I think you're right—it isn't on a Sarge machine I have, and is on an Etch machine. – derobert Dec 8 '15 at 23:29

add-apt-repository can now be found in the software-properties-common package.

share|improve this answer
This is the right answer. – frhd Sep 17 '14 at 8:58
Omg thanks. I wonder why on earth is this not installed by default (at least on my Debian 8 Jessie)?! – rbaleksandar Aug 15 '15 at 14:06

Ubuntu is based on Debian but includes things Debian doesn't (and in turn are often incorporated into Debian later). The add-apt-repository command is an example which was included in Ubuntu first.

The add-apt-repository actually just executes a couple of commands to add the repository:

  • append the repository to /etc/apt/sources.list
  • add the repository key to the machine.

A script that sort of does the same that can be found here is quoted below

if [ $# -eq 1 ]
NM=$(uname -a && date)
NAME=$(echo $NM | md5sum | cut -f1 -d" ")
    ppa_name=$(echo "$1" | cut -d":" -f2 -s)
    if [ -z "$ppa_name" ]
        echo "PPA name not found"
        echo "Utility to add PPA repositories in your debian machine"
        echo "$0 ppa:user/ppa-name"
        echo "$ppa_name"
        echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu lucid main" >> /etc/apt/sources.list
        apt-get update >> /dev/null 2> /tmp/${NAME}_apt_add_key.txt
        key=$(cat /tmp/${NAME}_apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3)
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        rm -rf /tmp/${NAME}_apt_add_key.txt
    echo "Utility to add PPA repositories in your debian machine"
    echo "$0 ppa:user/ppa-name"
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.