A package manager with a focus on:
- Having lots of packages (although currently there are less than a thousand)
- Just working on every linux distro
- Not necesitating root permissions to be installed, and to install packages
- Being fast at installing and running packages
- Being small (installed packages do not take too much space)
- Being minimal (bento itself is a single, statically-linked binary)
- Not polluting the host system (all packages install to the same cache directory)
- (TODO) Being able to have multiple versions of the same package installed at the same time
- Support installing different versions of the same package at the same time
- Support using different versions of a package by setting environment variables like
BENTO_helix_VERSION - Support fetching a list of versions of a package from github
- Improve the list of sources that is displayed to get user confirmation to download sources:
- Show extra information about the sources:
- The description of the source
- Possibly which programming language the source is written in
- Possibly the homepage of the source
- Properly wrap text that overflows
- Show extra information about the sources:
- Add automated testing for binary-repository
- Maybe one of the tests could use
lddorreadelfto check thedirectlyDependentSharedLibrariesfield is set correctly
- Maybe one of the tests could use
- Possibly add support for other unix based operating systems, including freeBSD and macOS
If any of these limitations mean that I cannot package something, then I will remove the limitation:
- Binary names must be unique
- Library names must be exclusive
- There are no post install scripts (I don't like post install scripts because they can sometimes be the longest part of a software installation, and there is no way to tell how long they will take)
sudo curl --location https://github.com/godalming123/bento/releases/latest/download/linux-amd64 -o /usr/bin/bento
sudo chmod +x /usr/bin/bentoBuilding from source
git clone --depth 1 https://github.com/godalming123/bento.git
cd bento
go install
# `go install` puts the binary in `~/go/bin`, so make sure that directory is in your $PATHbento update$HOME/.cache/bento/binis the directory where all of the binaries in the package repository are stored$HOME/.local/binis a directory that some of the packages in the package repository install binaries to
~/.bashrc
+export PATH="$HOME/.cache/bento/bin:$HOME/.local/bin:$PATH"TODO: Add documentation for how to use privilege managers other than sudo.
sudo sh -c "PATH=$PATH COMMAND_NAME COMMAND_ARGS"For example:
sudo sh -c "PATH=$PATH hx FILE_OWNED_BY_ROOT"If bento is installed to /usr/bin, then you can also use the slightly shorter:
sudo $(which COMMAND_NAME) COMMAND_ARGS