commit c8ebdfac8f3d91830c2754bc2f17cea75ce6e1b8 Author: Alessandro Mauri Date: Tue Aug 18 21:11:46 2020 +0200 initiated commitment 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