From c8ebdfac8f3d91830c2754bc2f17cea75ce6e1b8 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Tue, 18 Aug 2020 21:11:46 +0200 Subject: [PATCH] initiated commitment --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..65554bd --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# tarinstall +An alternative to AppImages, flatpacks and snaps to let the user install an +application as a single executable file when static linking is not possible + +tarinstall does not include any external files as such it does not include +any man pages, example configuration files, etc. All of those have to be +installed separately. + +## Graph +An application packaged as a tarinstall is made as such + +``` +----- Decompressor ----- +| | +| | +|------- Loader -------| +| | +| | +|----- App Tarball ----| +| | +| app/ | +| lib/ | +| start | +| env | +| | +------------------------ +``` + +Decompressor: It decompresses the archive and then runs the loader + +Loader: It reads the `env` file in the tarball and enumerates the `lib/` +directory to loads all the necessary libraries and sets the correct environment +before executing the `start` script in the `app/` directory + +## TODO +- Find a way to include external files +- Include a package manager + - App binary diffs for incremental upgrades +- Automated tarinstall packaging for developers + - Package manager for shared objects (libraries) + - Standardized way to define dependencies + +## Experimental optional components in App Tarball +`ext/` directory: it includes all of the external files that have to be installed +upon running the application for the first time + +`deps` file: lists all the required dependencies and their version to allow for +an empty `lib/` directory at first start, all the dependencies can be downloaded +upon running the application for the first time. It can also be used when +packaging the tarinstall to automatically download the dependencies. + +## Advantages +- Allows for application compression +- Simpler and configyred in plaintext +- Does not include any external dependencies other than optional ones +- It can be used alongside other package managers and package formats