or rbpkg
is a project for package managment, written in python3, and it has features like:
- Distributed package storing
- Uses minimal privileges on both (server and client) sides, therefore does not require root
- Can be installed via 1 HTTP GET request
- By design have
wiperscript after installing for wipping all data that was installed
Server requests probe file to create a network of the servers. Main idea is:
When client requests a package, server will check its existence in his DB, if it's not presented there, server will ask other servers for this package and other servers do the same, until all network will be checked.
RBPKG Package contains:
rbpkg.install- main script; it is called right after extracting all package data at a client machinerbpkg.build- script that provides build (transforming code into binary/executable scripts) instrutions for packagerbpkg.version- text file, that contains branch and version of the package (in formatbranch:major.minor.patch)README- text file with commentary to the packagebuild/- directory with all files, necessary for buildcode/- directory with sub-dirs and files with codescripts/- direcotry with scripts focused for building parts of the project
bin/- unnecessary directory; may contain pre-built binarieslib/- unnecessary directory; may contain pre-built libraries (static and dynamic)
You can distribute all programs via existent server of the rbpkg-pm (if it allows the distribution) by this simple commands:
WARNING: Installer will do all installation process in current working directory
# Will fetch installation script for the CLIENT
curl -s http://domain:port/scripts/client | bash
# after it there will be rbpkg, update.rbcli, wiper.rbcli
# Will fetch installation script for the SERVER
curl -s http://domain:port/scripts/server | bash
# after it there will be rbpkg-serv, update.rbserv, wiper.rbserv
# Will fetch installation script for the UPLOADER
curl -s http://domain:port/scripts/upload | bash
# after it there will be rbpkg-upl, update.rbupl, wiper.rbuplWiper - script, that will wipe all installed data (client, server or upload part remains on the suffix of the wiper script)
Update - script, that will wipe data and than download it again from the same server as it was, when part of the rbpkg system was downloaded
Usage:
usage: rbpkg [-h] [-e ENVIRON] [-i INSTALL] [-c CHECK] [-u UPDATE] [-s SYM]-e/--environ- directory, where all files of the client will be-i/--install- will try install specified package-c/--check- will check, if package exists and if so, will print hisversion,branchandREADME-u/--update- will lookup current version and server's version of the package, if they differ - will install new version-s/--sym- will create symbolic link in current directory for specified binary file (they appear inpackage/bin/afterrbpkg.buildwill be complited and moved toENV/.bin)
Usage:
usage: rbpkg-upl [-h] [-b] -e ENVIRON -p PACKAGE [-u URL] [-k KEY]-b/--blank- will create in enviroment empty (hello-world) package with all necessary files-e/--environ- directory, where all files of the uploader will be-p/--package- specifies name of the package (charset is a-Z 0-9 and '_-')-u/--url- url of the server to upload the package-k/--key- usually you will not use this param, but it can specify update-api-key for the upload request
Usage:
usage: rbpkg-serv [-h] -l LOCAL -p PUBLIC [-d] -e ENVIRON [-b PROBE]-l/--local- specifies local address to bind the HTTP server (in format ofIP:PORT)-p/--public- specifies publicly accessable address of the server (in format ofhttp://IP:PORT)-d/--no-distro- if presented, disallows to distribute any program from this server-e/--environ- directory, where all files of the server will be-b/--probe- specifies path to the file with known servers. If such file does not exists, but probing requested - server will ask you to enter known hosts
If you want to fresh version of the server, client or the uploader, you can install all components via:
git clone https://github.com/striter-no/rbpkg-pm
cd ./rbpkg-pm
python -m venv venv
source ./venv/bin/activate
pip install -r ./requirements.txtNow you can run rbpkg (client), rbpkg-upl (uploader) or rbpkg-serv (server) as they were downloaded via distribution system