Recipes are the
.yml files used to create the AppImages, and Dockerfiles are used to build Docker images on Docker Hub (think of them as glorified
chroot environments) in which the recipes can run. Finally, everything is tied together using travis-ci which uses Docker containers created by the Dockerfiles from this repository to generate AppImages using the recipes from this repository. The result are AppImages are uploaded to a Bintray repository and can run on most modern desktop Linux distributions.
This repository is intended to showcase the AppImage format and AppImageKit software used to create AppImages. Upstream projects are encouraged to use this showcase to produce their own upstream packaging AppImages, as some projects (like Subsurface already do).
⚠️ IMPORTANT NOTICE
In https://github.com/AppImage/AppImages/commit/798093a8b2b41b8a32fb1cc5301bcab9ed5f2cb8 we reorganized this repository to simplify its structure and make it easier to understand. Unfortunately this requires existing links to this repository to be updated. We apologize for the inconvenience caused.
recipes/meta/Recipewas renamed to
pkg2appimageto better reflect its nature
recipes/metawas moved to
- Legacy recipes were moved to
legacy/. They should be converted to
There are multiple ways to generate AppImages. If you already have existing binaries (either in archive or
.deb format or a ppa) then the recommended way to convert these to an AppImage is to write a .yml description file and run it with pkg2appimage:
To build an AppImage from a
.yml description file:
bash -ex ./pkg2appimage recipes/XXX.yml
.yml description files tell pkg2appimage where to get the ingredients from, and how to convert them to an AppImage (besides the general steps already included in pkg2appimage). Study some examples to see how it works.
Uploading AppImages to Bintray
The script bintray.sh can be used by anyone to upload AppImages to Bintray.
The script will:
- Extract metadata from the AppImage
- Make the AppImage updatable with zsync
- Upload the AppImage to Bintray
In order to use
bintray.sh you must first define your Bintray credentials in the environment. In order to get your Bintray API Key, you need to enter the "API Key" section in https://bintray.com/profile/edit
wget https://raw.githubusercontent.com/AppImage/AppImages/master/bintray.sh export BINTRAY_USER=<Your Bintray username> export BINTRAY_REPO=<Your Bintray repository> export BINTRAY_REPO_OWNER=<Your bintray Organization (optional)> export BINTRAY_API_KEY=<Your Bintray API Key> ./bintray.sh "Subsurface-126.96.36.1997-x86_64.AppImage"
If you use Travis for CI, you can define these variables in the Travis control panel, specially the
BINTRAY_API_KEY, in order to keep it secure.
You are invited to contribute to the AppImage format, the AppImageKit tools, and the example AppImages provided by us).
The preferred channel of communication for general questions and remarks is our forum and mailing list at http://discourse.appimage.org/.
There is also the #AppImage IRC channel on irc.freenode.net and we use Gitter which has the advantage that one does not have to be online all the time and one can communicate despite not being in the same timezone.
This project would not have been possible without the contributors to AppImageKit and without the services which generously support Open Source projects:
- JFrog for providing Bintray, the distribution platform used to distribute AppImages built by the recipes in this project to users. Bintray has been truly invaluable for this project since it not only provides us with free hosting and traffic for our AppImages, but also makes it really easy to set up a repository for custom binary formats such as AppImage, and to maintain the metadata associated with the downloads. Thanks to the easy-to use REST API, we were able to set up an automated workflow involving GitHub and Travis CI to build, upload and catalog AppImages in no time. Also, JFrog Bintray relieved us from the burden to create a web UI for the repository by providing a generic one out-of-the-box.
- Travis CI for providing cloud-based test and build services that are easy to integrate with GitHub.
- GitHub for making it possible to work on Code in the Cloud, and for making it super easy to contribute to Open Source projects.