Skip to content

Build and publish AppImages #618

@TheAssassin

Description

@TheAssassin

I propose to build and ship an AppImage for gef. Building an AppImage would have, among others, these advantages:

  • Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally sign your AppImages (inside the file) using gpg2
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions
  • Can be listed in the AppImageHub central directory of available AppImages
  • Can double as a self-extracting compressed archive with the --appimage-extract parameter

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

AppImages could be built both for releases as well as for the main branch (so-called continuous release scheme). Automating AppImage building is relatively simple and straightforward. You can bundle all tools you need (e.g., a suitable up-to-date GDB version). This way, this project will be a lot easier to set up and use: you will just have to call ./gef-x86_64.AppImage.

The only tricky part here is bundling Python along with gdb. But I could imagine that if you let linuxdeploy-plugin-{python,conda} set up a Python environment, then build gdb against it, it should work. I've done that before.

I've successfully implemented this for pwndbg, see pwndbg/pwndbg#891 for details. I'll file a PR there soon. The AppImages I built so far for pwndbg have been very useful, and make working with the tool a lot easier. There's virtually no setup required any more.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions