| completion | ||
| scripts | ||
| server_scripts | ||
| src | ||
| .gitignore | ||
| .zpkgconfig.example | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
zpkg
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
As user
Requirements:
- sudo
- wget
- tar
- xz/gzip
Optional:
- pixz/pigz (faster compression/decompression)
Installing
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
Uninstalling
zpkg remove $(zpkg list)
sudo rm -r /etc/zpkg
Using
See zpkg -h for details
Deploy on a server
Requirements
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
Process
-
Clone this repository
-
Write the desired config in
.zpkgconfig, see.zpkgconfig.example -
Run
make -
Expose the package directory to the HTTP server
Package architecture
.
+-- 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
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
_userto run as user
Deploying packages
zpkg deploy <dir...>
Target directories are structured as described above
The name of the directory is the package name
Updating
git pull && make
Functionality
- Install/Remove/Update packages
- Dependency resolution
- Config redirection
- User Home package files
Absent (and unplanned) functionality
- Versions
- Multi-repo
- Hooks