63

I recently posted an answer where I wrote add the PPA. But I now realize, that I have no idea what the difference between a PPA and a Repository is. So can someone please explain it to me?

1

5 Answers 5

85

In short:

  • A repository is a collection of packages, hosted on an arbitrary server.
  • A PPA is also a collection of packages, hosted on the Launchpad servers.
  • Thus, a PPA is a special kind of repository. Like a square is a special kind of rectangle.

The main difference is the hoster. Basically, if you are a programmer and want to develop and distribute your own packages, and you have your own root server in the Internet, you can set up your own repository on it. Great! But what if you don't have a root server, and you don't want to pay for one, but still want to develop and distribute your own packages? Well, then there's Launchpad. It's offering PPAs as a service for exactly that use case. You can basically create your own repository on Launchpad, and manage your own packages there.

Let's have a look at an illustrating example.

  1. First, assume you want to install the MATE Desktop Environment (a Gnome 2 fork) on Ubuntu Saucy Salamander. It is not contained in the official repos, nor do the devs maintain a PPA. Instead, they have their own repo. You could add it like so:

     $ sudo add-apt-repository http://packages.mate-desktop.org/repo/ubuntu
    

    This would result in the following entry being added to /etc/apt/sources.list:

     deb http://packages.mate-desktop.org/repo/ubuntu saucy main
    
  2. Second, assume you also want to have a look at Cinnamon (another Gnome 2 fork). This is contained in the official repos since 13.04, but there's still a PPA maintained by the devs, useful for instance if you're interested in getting new releases quicker. You could add it like so:

     $ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
    

    This would result in the following entry being added to /etc/apt/sources.list.d/gwendal-lebihan-dev-cinnamon-stable-saucy.list:

     deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
    

    As you can see, the latter entry is quite similar as the one made in point (1). In fact, both are just URLs of repositories from Ubuntu's perspective.

  3. In fact, you could even add the Cinnamon PPA with the same syntax as in point (1), although this is not the typical way for adding PPAs:

     $ sudo add-apt-repository http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu
    

    This would result in the following entry being added to /etc/apt/sources.list:

     deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
    

    This is the exact same entry as in point (2). Only the files that these entries are written to are handled slightly differently, but in the end, it makes no real difference. In both cases, you will end up with the packages from the Cinnamon PPA being available on your system, always after the canonical sudo apt-get update, of course.

2
  • According to manual of add-apt-repository in Xenial, if the ppa:<user>/<ppa-name> form is used, "The GPG public key of the newly added PPA will also be downloaded and added to apt's keyring." I suppose this is not the case, if the URL form is used. Actually, the manual does not tell you could use the kind of URL form you use in 1 and 3, but "a line that can be added directly to sources.list". Nevertheless, the form you use seems to work.
    – jarno
    Commented Nov 29, 2016 at 15:23
  • 2
    @jarno Yes, the manpage of add-apt-repository is indeed incomplete in that respect. Please use add-apt-repository --help to see that the URL form I used in 1 and 3 is indeed correct and an intended possible option. Furthermore, your assumption is absolutely correct: The GPG public key of a PPA will not be added when using the URL form. That's a useful addition, thanks! :) Please note that I do not recommend using the form described in 3 to add PPAs. It was just meant as an illustration to show that in fact, a PPA is simply a specific kind of repository. Commented Nov 29, 2016 at 18:31
21

Repositories

On systems like Ubuntu, most software is packaged in nice .deb (or .rpm, like in Red Hat) files which contain the programs and libraries you need. These files can be downloaded or come in CDs (Ubuntu's CD is full of them). Repositories are servers which contain sets of packages.

PPA

Personal Package Archives (PPA) allow you to upload Ubuntu source packages to be built and published as an apt repository by Launchpad.

Also see What are PPAs and how do I use them? and Wikipedia.

To sum it up:

  • A repository has packages.
  • PPAs are archives of personal packages.
  • Launchpad.net holds PPAs.
2
  • 4
    Isn't a PPA just a repository or software selected and maintained by an individual or group? (who are not directly related to Canonical or Official Ubuntu devlopers). A PPA is like a repository and not a single package. Commented Sep 9, 2013 at 13:36
  • 12
    A PPA is not a package, it's a repository. Each PPA can contain multiple packages. Launchpad is (or rather hosts) a collection of repositories called PPAs. Commented Mar 10, 2014 at 2:19
15

There is no technical differences between a repository and a PPA as far APT is concerned. Both are software repositories that offers packages, from APT point of view is the same mechanisms of installing packages.

PPA is a repository of packages that uses Launchpad as backend. Is just another name for the same thing, that is (at least in principle) normally used for personal reasons, which automates most operations you otherwise had to do manually or setting up your own services.

Repositories is wherever there is software, in this case, package lists and packages to be installed in Debian based distros.

You can have your personal repository, without the use of Launchpad and it could be called PPA, because is Personal.

The only difference in the usage is solely in the syntax of the add-apt-repository which uses the magic keyword ppa: instead of forcing the user to write the full url which is required for non Launchpad repositories.

0
12

A repository is a collection of various software which enables software like apt-get, aptitude etc. to download and install said software. Their content is visible for inspection by all. Read the Ubuntu Help Page on repositories for enlightenment.

PPAs are special repositories for software which is not yet adopted for the entire community by the distro leadership. PPA software can have defects and can even be used for malware because they are not extensively reviewed as as the general repositories. For more, see Launchpad's explanation of PPAs and this discussion of PPAs.

9

Repository is a place where package are stored or maintained for download or update.These are servers which contain sets of packages.

A Personal Package Archive (PPA) is a special software repository for uploading source packages to be built and published as an APT repository by Launchpad or a similar application. Mostly it is maintained by people who are not official Ubuntu developer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .