xplshn / pelf

Pack an ELF. Turn your binaries into single-file executables [.AppBundle|.blob], similar to AppImages and compatible with AppDirs. LIBC-independent, works on *BSDs.
BSD 3-Clause "New" or "Revised" License
12 stars 1 forks source link
appbundle appdir appimage binary-distribution bundle bundler dynamic-libraries elf executable-format no-dependencies package-format packaging-tool pelf portable-executable posix single-file static statically-linked staticx

PELF

PELF is an executable packaging format designed to pack applications, toolchains, window managers, and multiple programs into a single portable file.

PELF can serve as a drop-in replacement for AppImages. Both PELF and AppImages utilize the AppDir specification, making it easy to unpack an AppImage and re-package it as an AppBundle.

Advantages

Drawbacks

Usage

pelf --add-appdir ./myApp.AppDir myApp-28-09-2024-xplshn --output-to ./myApp.AppBundle --embed-static-tools

Usage of the Resulting .AppBundle

By using the --pbundle_link option, you can access files contained within the ./bin or ./usr/bin directories of an .AppBundle, inheriting environment variables like PATH. This allows multiple AppBundles to stack on top of each other, sharing libraries and binaries across "parent" bundles.

Explanation

You specify an AppDir to be packed and an ID for the app. This ID will be used when mounting the .AppBundle and should include the packing date, the project or program name, and the maintainer's information. While you can choose an arbitrary name, it’s not recommended.

Additionally, we embed the tools used for mounting and unmounting the .AppBundle, such as dwarfs and fusermount, when using pelf-dwfs.

image