Skip to main content

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.

[!CAUTION] Risk Warning: Be aware of the potential risk of BPM Linux damaging your computer. By using BPM to install software, you accept this risk and trust third-party Github release packagers.

[TIP] BPM guarantees parity, i.e., bpm install followed immediately by bpm uninstall will 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 -h and bpm i -h for 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:

  1. install binary
  2. merge the lib, include, share, man, bin directories into the system
  3. install completions
  4. 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

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)

Source distribution for bin-package-manager 2.3.0
File Size Uploaded
bin_package_manager-2.3.0.tar.gz 20.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bin-package-manager 2.3.0
File Interpreter ABI Platform
bin_package_manager-2.3.0-py3-none-any.whl Python 3 none any Details

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

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 release files

2.2.9

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page