Basic and simple packaging system
Designed to be used by anyone and deployed anywhere, it is a very basic packaging system with basic functionnality but very portable
Official repo: https://zpkg.zawz.net
Requirements:
- sudo
- wget
- tar
- xz/gzip
Optional:
- pixz/pigz (faster compression/decompression)
wget -qO- https://zpkg.zawz.net/install.sh | sh
By default the config is installed to /etc/zpkg This can be changed with the -c option
If you wish to use another repository, substitute zpkg.zawz.net
for your desired target
zpkg remove $(zpkg list)
sudo rm -r /etc/zpkg
See zpkg -h
for details
To deploy on a server you need:
- SSH server
- HTTP server
- dedicated zpkg user
You need to be able to SSH to the zpkg user, SSH keys are recommended
-
Clone this repository
-
Write the desired config in
.zpkgconfig
, see.zpkgconfig.example
-
Run
make
-
Expose the package directory to the HTTP server
.
+-- DEPS
+-- DESC
+-- HOOKS
| +-- pre_install
| +-- ...
+-- ROOT
| +-- /
+-- HOME
+-- ~
- The ROOT directory represents the root filesystem
- The HOME directory represents the home directory of the user
- The DEPS file contains dependency packages separated by spaces or newlines. Dependencies are package names from the repository
- The DESC file contains the description of the package
- The HOOKS directory contains hooks to run on certain operations.
Hooks are executable files that are run at some points during processing.
Files are named ORDER_OPERATION
or ORDER_OPERATION_user
, for example: pre_install
, post_upgrade_user
.
The _user
file is executed as user while original is executed as root.
Supported hooks:
- pre_install
- post_install
- pre_upgrade
- post_upgrade
- pre_remove
- post_remove
Suffix with
_user
to run as user
zpkg deploy <dir...>
Target directories are structured as described above
The name of the directory is the package name
git pull && make
- Install/Remove/Update packages
- Dependency resolution
- Config redirection
- User Home package files
- Versions
- Multi-repo
- Hooks