Packaging your app shouldn39t be an overwhelming process Photo by Karin Dalziel and licensed under Creative Commons

Packaging your app shouldn't be an overwhelming process. Photo by Karin Dalziel and licensed under Creative Commons.

Packaging Apps for Linux the Easier Way

One of the frustrations of developing applications for Linux comes when trying to make an application installable across all distributions. Whether you're developing for the enterprise or the consumer desktop, if you want your application to be readily available to all potential users, you're going to become much more familiar with RPM, dkpg, pacman and other packaging systems than you want to be.

The Linux Foundation recognized this as a problem as early as 2001 and worked with some major Linux distributions to create Linux Standard Base (LSB), an attempt to standardize installations across distributions. Unfortunately, even though LSB development has continued and is still active, only a handful of distros pay it any mind.

That era seems to be nearing an end. There are now at least three app packaging systems that pretty much ignore a distro's directory hierarchy and do away with the need to find and install dependencies, making them distro agnostic. They all work basically the same way, by including standalone copies of all libraries that would otherwise be shared within the package. This also does away with "dependency hell," which has plagued computer users since the advent of shared libraries.

The major drawback to these systems is that they use more disk space than conventionally installed programs, since each app using a "shared library" installs its own copy instead of multiple apps sharing a single copy. However, in the age of terabyte storage devices, this shouldn't pose a problem. Also, depending on who's talking, performance of apps installed by these systems will either be much improved or somewhat impaired. Time will tell.

AppImage: The simplest of these systems is also the oldest. It's roots go back to klik, which was first released in 2004. AppImage requires no special software on the computer where apps are being installed. Simply download the application, make it executable and you're ready to go. Installation takes place on the user level, with no need for root privileges. In fact, for security reasons you don't want to install as root.

The website JFrog Bintray has many downloabale 64-bit "AppImages" of popular Linux desktop applications, including LibreOffice and the photo manipulation tool, GIMP. AppImage is designed to be used in a desktop environment and can't be used on servers running without a graphical interface. Instructions for packaging an application as an AppImage are available on GitHub.

FlatPak: Although not officially a Red Hat project, Flatpak would seem to be developed with the company's help and support. The developer, Alex Larsson, has been a principal software engineer at Red Hat for more than 15 years -- he's also a developer for GNOME -- and Fedora was among the first distros to include support for the system. Installing a flatpak app requires the installation of software which is available in the Fedora and Ubuntu repositories. Instructions for installing on other distros are available on the Flatpak homepage.

Flatpak applications install with a great deal of built-in security, with each app isolated from the OS as well as from other applications. However, the developers warn that due to security issues in X.org, Flatpak's security won't be complete until Wayland completely replaces X. The project is very new, so it's not surprising that very few apps are currently available, a situation that should soon change. Instructions for building Flatpak apps is available on the Flatpak website.

Snappy: AppImage may be the oldest, but it was the Snappy Package Manager that got the "write once/install anywhere" ball rolling. Developed by Canonical for use with Snappy Ubuntu Core for IoT devices, the system has been around for nearly two years but didn't get much attention until June when Ubuntu announced that snapd was being ported to a host of other distros, including Arch, CentOS, Debian, Fedora, Gentoo, OpenWrt, openSUSE and RHEL. Since then the system has seen rapid development.

Snaps have one big advantage over the other two systems; they can be employed in servers without a graphical interface, increasing their usefulness in the data center. Like Flatpak, installed snap applications are isolated in a sandbox. Combine these assets with Canonical's active PR push, and Snappy might currently have a competitive edge. A step-by-step guide for creating a Snap package is available on the Ubuntu website.

Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish