| icon | compact-disc |
|---|---|
| description | https://github.com/xplshn/pelf |
- Author:
@xplshn - Project Page: https://github.com/xplshn/pelf
- Format Docs: https://xplshn.github.io/pelf/docs
- Prebuilts: AppBundleHUB, and dbin as a package manager for them
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.
{% 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 %}
{% hint style="info" %}
- Fuse: used to mount the payload. The
squashfsanddwarfstools are embedded in the bundle, so there is nothing to install for them. Where FUSE is unavailable, the--appimage-extract-and-runfallback 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
pelfCreatoraround an Alpine rootfs and bubblewrap. {% endhint %}
{% hint style="info" %} WARNINGS
- NEVER run
strip,objcopyor any other binary rewriting tool as they will often just strip thesquashfs|dwarfsarchive, only preserving theruntime. - A typical
.appbundlefile 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.AppBundleor.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 %}