A minimalistic source-based package manager written in Bash. Ideal for immutable linux distributions, and single board computers.
- Does not require elevated privileges.
- Supports installing multiple versions of a package.
- External commands are used sparingly; builtins are used whenever possible.
- Respects the Freedesktop specification.
Why this over asdf?
Some of my gripes with asdf:
- When auto-complete is enabled
asdf install <name><TAB>
makes network calls. It's often a laggy mess. - Very loose packaging standards. Plugin quality varies immensely.
- Heavy reliance on external commands and pipes. This leads to a degraded user experience when waiting for commands/prompts to return.
- the codepath that runs in the user's
.rc
file takes too long to return.
Clone to ~/rafi
and symlink the executable to ~/.local/bin/rafi
git clone https://github.com/egladman/rafi.git ~/rafi && ~/rafi/main bootstrap install
eval "$(rafi init bash)"
A. Install group:
rafi install @<group_name>
B. Install package(s):
rafi install <package_name> <package_name>
- Build docker image and start container with interactive session
./build.sh
./build.sh run
- Run command(s) inside container. The source code is bind mounted into the working directory
./main help