commit
c8ebdfac8f
@ -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 |
Loading…
Reference in new issue