Debian PPA Utility

September 4, 2014 – 12:55 pm by Adnan Hodzic

Debian remains to be my favorite distribution, however there’s one thing that’s missing, that thing is called PPA.

There were numerous discussions on this topic inside of Debian, but AFAIK without any visible movement. Thus, I decided to publish a utility I’ve been using for some time now.


Since its introduction, PPA’s are exclusively connected to Ubuntu and its derivatives (Mint, Elementary, etc …). But over time, a number of interesting projects appeared whose whole development is happening inside of PPA’s. To name few, I’m talking about TLP, Geary, Oracle Java Installer, Elementary OS and etc … Some of these projects are in WNPP without much happening for a long time, i.e: TLP

One option was to repackage these packages and then have them uploaded to Debian, or just go rogue and install them directly from its PPA’s. Title of this post might hint which path I took.

In theory, adding Ubuntu packages on your Debian system is a bad idea, and adding its PPA’s is probably even worse. But, I’ve been using couple (TLP, Geary, couple of custom icon sets) of these PPA’s on my personal/work boxes, and to be honest, never had a single problem. Also, setting Pinning priority to low for the PPA you added is never a bad idea.

Most of the PPA’s I use, are usually fairly simple packages with single binary and dependencies which are found in Debian itself. Of course, I don’t recommend adding PPA’s on production boxes, or even PPA’s such as GNOME3 Team PPA’s, but rather add Apt Pinning on your system and fetch those packages directly from Debian.

Debian PPA Utility

Is a very simple utility, which adds “add-apt-repositorybinary script that allows you to add PPA’s on Debian. Code is available on GitHub, it’s licensed as GPLv3, so feel free to fork it, improve it, use it and abuse it.

How to use it?

Download/Build package

You can download my signed package (source and changes file are in same directory)

Or you can build your own by running "dpkg-buildpackage -uc -us" inside of the debian-ppa source directory.

Install/Add PPA’s

After you install the package, you’re able to run “add-apt-repository” and add PPA’s. i,e:

sudo add-apt-repository ppa:linrunner/tlp

debian ppa utility

Currently, Debian PPA Utility only works on >= Wheezy.

At this point I have no plans to try pushing this utility into Debian, as I’m sure even this blog post will be labelled as heresy by many.


It was just pointed to me that “add-apt-repository” is available in “software-properties-common” package. However, PPA’s added by “add-apt-repository”  binary present in this package instead of adding Ubuntu codename’s to your list file, will add Debian codenames which without change will make whole PPA entry useless.

I believe codename handling is better in “Debian PPA Utility”. I admit, my only mistake is, instead of fixing things in “software-properties-common” package, I made a completely new utility which aims to do the same thing.

Added: conflicts/replaces: software-properties-common to debian/control file.

Anyway, enjoy!

  • Koulis
  • You’re right, unfortunately, I was completely unaware of this and have just wasted my time.

    Blog post updated!

  • rjc

    I will nitpick here a bit:

    1. Why not simply use the one (the ‘add-apt-repository’ utility) from Ubuntu?
    2. Any reason for ‘/usr/sbin’? Most APT-related tools are already in ‘/usr/bin’.
    3. Given that the default ‘/bin/sh’ is Dash, is there any reason for it being written in Bash?
    4. Script != binary ;^)

  • Sure Smile

    1. I just posted update regarding that, please read it.

    2. Once installed, it does reside in /usr/bin …

    3. Reason why it’s written in Bash, is because I initially wrote it as a script, and never thought of making a package.

    4. True, sorry about that Smile

  • CameronN

    You should try to get a patch to use a custom distro release name as a n option to add-apt-repository (so, –release-name trusty/precise/etc).

    This would be a better option, in my opinion.

  • I’ll leave it as it is, I really like the way I did “codename detection”. This way, both codenames are in parallel, and in case PPA’s requesting any external dependencies they will be available in Debian.

    I do like your idea, so what I’ll do in next releases is add ability for user to specify custom codename.

  • awesome stuff i was looking for this all over the place – thanks

  • Glad you found it useful!