bin package manager
English | 简体中文
Bin package manager (BPM) is a Github release-based package manager that allows users to install and manage binaries from any Github release.
BPM is currently supported on Linux and Windows, python >= 3.9.
[TIP] BPM guarantees parity, i.e.,
bpm installfollowed immediately bybpm uninstallwill not change the system in any way.
Why use it?
In non-rolling release Linux distributions, the version of softwares in official source are often too low to use some new features.
Rolling distributions, such as Archlinux, are also unable to install software from the AUR as root.
A common way to manage packages on Windows is scoop, but it requires the packager to maintain a "manifest" list.
Installation
BPM needs to be installed to root user.
pip
Linux
sudo pip install bin-package-manager --break-system-packages
sudo bpm
Note the risk of potentially breaking system packages.
Windows
pip install bin-package-manager
bpm
pipx
You can use pipx to install BPM.
sudo pipx install bin-package-manager
pipx will only install for the current user, but bpm needs to run as root. So sudo is required. Alternatively, you can track on this issue and use other methods mentioned there.
Source code
If you don't want to use pipx, you can also download and use the source code. Make sure the package manager uv has been installed.
git clone https://github.com/lxl66566/bpm.git
cd bpm
uv run python -m bpm
Usage
- Install:
bpm i <package> - Run
bpm -handbpm i -hfor more help.
❯ bpm i -h
usage: bpm install [-h] [-b [BIN_NAME]] [-l [Archive]] [-q] [--one-bin] [--prefer-gnu] [-n] [-i] [--filter [FILTER ...]] [--sort [SORT]] packages [packages ...]
positional arguments:
packages Package name or github url to install
options:
-h, --help show this help message and exit
-b [BIN_NAME], --bin-name [BIN_NAME]
specify the binary executable filename, otherwise use package name by default.
-l [Archive], --local [Archive]
install from local archive.
-q, --quiet not ask, install the best match repo.
--one-bin install given binary only. Use package name as binary name by default.
--prefer-gnu bpm prefers musl target by default, you can change this default option.
-n, --dry-run print the install position, but not install actually.
-i, --interactive select asset interactively.
--filter [FILTER ...]
filter assets
--sort [SORT] sort param in github api, use `best-match` by default. The value could be `stars`, `forks`, `help-wanted-
issues`, `updated`.
How it works
Linux
BPM automatically determines the file structure in the asset and installs it to the appropriate location on the system. The current installation is like:
- install binary
- merge the
lib,include,share,man,bindirectories into the system - install completions
- install services (if exists systemd)
BPM automatically adds the .old suffix to existing files to avoid overwrite. The .old files will be restored in uninstalling.
Windows
BPM downloads asset into %userprofile%/bpm/app/<name> and creates shortcuts and cmd runner for the executables to %userprofile%/bpm/bin, which is added to %path%.
After v2.2.9, single .exe and .msi can be also downloaded and installed.
Develop
git clone https://github.com/lxl66566/bpm.git
cd bpm
uv sync
uv run pytest
TODO
- no pre release
- try install
- windows support
- offline install
- install from github link
- update from local
- exe and msi support
Metadata
Release files for bin-package-manager 2.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bin_package_manager-2.3.0.tar.gz | 20.9 kB | Without provenance | Details for bin_package_manager-2.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bin_package_manager-2.3.0-py3-none-any.whl | Python 3 | none | any | Details for bin_package_manager-2.3.0-py3-none-any.whl |
Total release size: 45.3 kB
Release files / bin_package_manager-2.3.0.tar.gz
| Download URL | bin_package_manager-2.3.0.tar.gz |
|---|---|
| Size | 20.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33868f411b6771ac532540dc3c34a1d8d68465b0347b038a67453a2925426550
|
|
BLAKE2b-256 checksum How to use checksums |
866536abd1104c0fc28579a0d71044d697e7f4bea8aa83982185a7ade4229baa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|
Release files / bin_package_manager-2.3.0-py3-none-any.whl
| Download URL | bin_package_manager-2.3.0-py3-none-any.whl |
|---|---|
| Size | 24.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7d47a233fcba55dd82ef4eb0ea3009dcd74c20e51cfe7337b3ae20cf8bf48cc8
|
|
BLAKE2b-256 checksum How to use checksums |
7bdb23a2f09d7baf97b8037cba08f4e9bd77a9e3c3c1041633c192a2ea1ebbea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|
Security for bin-package-manager 2.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.