I run Puppy Linux (Puppeee to be precise) on my old x86 netbook and I love it: It's breathed new life into my netbook and made it suitable as a low(ish)-power home server.

However, some cloud and telephony companies only grudgingly compile their proprietary code for Linux and usually then only for a few major distros like Ubuntu.

Are there any methods to provide compatibility for Ubuntu in another distro like Puppy Linux when I only have whatever binary package the company provides?

  • You can use docker. It's a major disk space hog, but there is no memory or CPU overhead. – Patrick Sep 27 '14 at 1:53
  • @Patrick Please correct me if I'm wrong, but that looks like a tool for developers, not end users who just want a 3rd party app to run on their system. – Seth Sep 27 '14 at 1:55
  • Nope. In fact I would say it's not a tool for developers, it's a tool for running packaged apps on production systems. However it can be used by developers. It's also extremely good for running apps not meant for your distro. – Patrick Sep 27 '14 at 1:57

As mentioned in my comment, docker would work very well for this. The downside to it is that it eats a lot of disk space. Aside from disk space, there's no other overhead, not even CPU or memory.

In a nutshell, docker essentially sets up a chroot inside a full OS image. So you end up running another distro inside your own. Docker is simply responsible for setting up the environment in which the application runs, and then starting the app. Once the app is launched, it's just another process on your system. Shows up in ps, can be killed, etc.

Since you're running the full distro, the only possible incompatibility is if whatever you're trying to run depends on kernel features your kernel doesn't have. This is not very likely.

Once you get docker on your system, you can build an image containing the software. You'd do this by creating a "dockerfile" which looks like:

FROM ubuntu:12.04
RUN apt-get install -y wget
RUN wget http://telephonyco.com/proprietary_code.deb
RUN dpkg -i proprietary_code.deb

After you build this, you can either run the program directly with:

docker run -ti name_of_image_you_created proprietary-program-foo

Or you can get a shell inside the image:

docker run -ti name_of_image_you_created bash

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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