Skip to content

Latest commit

聽

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
聽
聽

README.md

icon compact-disc
description https://github.com/xplshn/pelf

AppBundle

AppBundles use the same AppDir layout AppImages do, so unpacking an AppImage and repacking it as an AppBundle is straightforward, and the runtime accepts the --appimage-* flags to stay a drop-in replacement. What differs is underneath: the payload may be squashfs or dwarfs, and the tools needed to mount it are embedded in the bundle rather than expected from the host.

The format does not insist on AppDir compliance, which is why it gets used for things an AppImage would not carry, such as whole toolchains or a window manager and its utilities in one file.


In soarpkgs

{% hint style="info" %} Soar installs this format from a repository, a URL, or a local file, and a recipe can name it as its type. No package in soarpkgs happens to use it at the moment. {% endhint %}


Prerequisites (HOST)

{% hint style="info" %}

  • Fuse: used to mount the payload. The squashfs and dwarfs tools are embedded in the bundle, so there is nothing to install for them. Where FUSE is unavailable, the --appimage-extract-and-run fallback applies, as it does for an AppImage.
  • Fonts: required to display/render non-English characters, symbols and emoji.
  • Kernel user namespaces: only for bundles that sandbox, such as those built by pelfCreator around an Alpine rootfs and bubblewrap. {% endhint %}

Quirks

{% hint style="info" %} WARNINGS

  • NEVER run strip, objcopy or any other binary rewriting tool as they will often just strip the squashfs|dwarfs archive, only preserving the runtime.
  • A typical .appbundle file is not a real elf binary, thus will not survive this process.
  • The filesystem is part of the name: a bundle is built as .dwfs.AppBundle or .sqfs.AppBundle. A DwarFS one needs a thumbnailer that understands DwarFS, the same as a DwarFS AppImage does.
  • Mount directories carry the bundle's own id, so it is always clear which bundle a mount belongs to. {% endhint %}