When you are a regular user of Ubuntu, you are probably familiar with the term PPA: Personal Package Archive

Interlude

Ubuntu offers packages via different package repositories ( Main, Universe, Restricted, Multiverse).

Whenever you enter e.g. apt install <package> the mentioned repositories are queried.

Though, while Ubuntu offers many packages, not all are available via apt. Also, for a given version of Ubuntu the packages usually only get security and bug fixes, but no version updates.

So, if you need a newer version of e.g. git or a package which is not available in the standard repositories, you would need to download and install a deb directly ( There may be other ways available, e.g. using Snap, or compile from source…).

There is one huge drawback - this package won’t get updates.

Let me introduce PPAs.

Imagine PPAs as additional package repositories.

PPAs offer a straightforward way to offer newer versions of packages, or even completely new packages - with updates, as far as the maintainer of the PPA delivers them.

Note, that those PPAs are usually not officially supported.

So you need to be trust the maintainer.

I do have trust in e.g. Anthony Sottile, who is the maintainer of the deadsnakes PPA, which offers both newer and older Python versions.

In order to add this repository, I just need to enter…

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

Private PPAs

This week I learned that there are also private PPAs.

Which makes sense, as e.g. some companies offer their packages via a subscription model.

Limited support

Unfortunately, I also learned this week, that add-apt-repository doesn’t work with private PPAs.

You might get a similar error message when trying anyway…

# add-apt-repository ppa:username/package
Cannot add PPA: 'ppa:~username/package'.
ERROR: '~username' user or team does not exist.

What can you do?

Add your vote to the feature request.

You can also workaround this issue by directly updating the sources.list, as there you can add the necessary credentials for authentication.

deb https://your-user:token@private-ppa.launchpadcontent.net/username/package/ubuntu focal main
deb-src https://your-user:token@private-ppa.launchpadcontent.net/username/package/ubuntu focal main