Skip to main content

Bin package manager, a package manager based on Github release

Project description

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.10.

[!CAUTION] Risk Warning: BPM on Linux may damage your computer. By using BPM to install software, you accept this risk and trust third-party Github release packagers.

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, 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.

BPM requires these libs, please install them manually.

git clone https://github.com/lxl66566/bpm.git
cd bpm
python3 -m bpm
# or use poetry to install dependencies and run: `poetry install && poetry run python -m bpm`

Usage

  • Install: bpm i <package>
  • Run bpm -h for more help.

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

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%.

Develop

git clone https://github.com/lxl66566/bpm.git
cd bpm
poetry install
poetry run python -m unittest bpm/**/*.py  # run tests

TODO

  • no pre release
  • try install
  • windows support
  • offline install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bin_package_manager-2.2.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

bin_package_manager-2.2.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file bin_package_manager-2.2.0.tar.gz.

File metadata

  • Download URL: bin_package_manager-2.2.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.2 Windows/11

File hashes

Hashes for bin_package_manager-2.2.0.tar.gz
Algorithm Hash digest
SHA256 f8a544e7aa459e28e8ff1ce64bd793d23cf6f5b58167a20301e882d4758f98bd
MD5 39289383c8aed7cdac72f5724301c263
BLAKE2b-256 16dec0e3ef4eea456706da70419cbbaa653739995436d1c6bb542ada5c04487f

See more details on using hashes here.

File details

Details for the file bin_package_manager-2.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bin_package_manager-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 08cab2310f5f3e124692052dbe16492da7d54b1db9848315fdc878d8256b876d
MD5 41c333e93d11a192a89f9a1e4898c3d4
BLAKE2b-256 0c0d9192d1f97d3053db85a33ebdb84e3cde3209b9c14c4bc0950821647b9605

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page