pkg2appimage tool and some example recipes to build AppImages using AppImageKit and travis-ci. ⚠️ See IMPORTANT NOTICE below. Join #AppImage on irc.freenode.net
Branch: master
Clone or download
Latest commit 8a9c597 Feb 9, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client Update getapp May 15, 2016
legacy AppImages are now at https://github.com/AppImage/AppImageUpdate Nov 25, 2017
recipes Update QGIS.yml Feb 9, 2019
.gitignore Add out directory to .gitignore Oct 3, 2018
.travis.yml Only build once Dec 23, 2018
CONTRIBUTING.md Create CONTRIBUTING.md Sep 6, 2017
Dockerfile Create user to satisfy Git Feb 14, 2018
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md Sep 6, 2017
LICENSE Simple spell fixes and add missing shebang Feb 27, 2016
README.md Update README.md Dec 22, 2018
YML.md Update YML.md Feb 3, 2018
appdir-lint.sh Add missing space Feb 17, 2018
bintray-tidy.sh Remove progress stats from curl output Feb 28, 2018
bintray.sh Update URL to this repository to the AppImage project Nov 25, 2017
dogfeeding.sh Update dogfeeding.sh Dec 23, 2018
excludedeblist Update URL to this repository to the AppImage project Nov 25, 2017
excludelist libfribidi.so.0 Dec 30, 2018
excludesuselist Update URL to this repository to the AppImage project Nov 25, 2017
functions.sh Update GitHub repo information Dec 23, 2018
pkg2appimage if [ ! -z "${_post_script[0]}" ] Jan 12, 2019
pkg2appimage-with-docker Revert "Forward ENABLE_DI environment variable to Docker container" Feb 14, 2018
set-up-ppas.sh Remove the gnutls-patched parts, that PPA is completely gone Oct 2, 2018
test.sh Simple spell fixes and add missing shebang Feb 27, 2016
travis.sh Long overdue reorganization, sorry for breakage of existing links Nov 25, 2017
trigger.sh pkg2appimage Dec 22, 2018

README.md

pkg2appimage discourse Build Status Codacy Badge Donate

This repository contains the pkg2appimage tool and some recipes to generate AppImages (portable Linux apps) using AppImageKit. See the Bintray page tab for downloads of the generated AppImages.

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/Recipe was renamed to pkg2appimage to better reflect its nature
  • recipes/meta was moved to recipes/
  • Legacy recipes were moved to legacy/. They should be converted to .yml recipes

Usage

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.

Miscellaneous

Uploading AppImages to Bintray

The script bintray.sh can be used by anyone to upload AppImages to Bintray.

The script will:

  1. Extract metadata from the AppImage
  2. Make the AppImage updatable with zsync
  3. 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

Example:

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-4.5.1.667-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.

Contributing

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/.

For technical contibutions, https://github.com/probonopd/AppImageKit - please file Issues (also for wishlist items or discussion topics) or submit Pull requests.

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.

Donations

Donate

Acknowledgments

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.