Skip to content

Latest commit

 

History

History
106 lines (68 loc) · 2.8 KB

README.zh-CN.md

File metadata and controls

106 lines (68 loc) · 2.8 KB

bin package manager

English | 简体中文

bin package manager (BPM) 是一个基于 Github release 的包管理器,它允许用户安装并管理任意 Github release 上的二进制文件。

BPM 支持 Windows 与 Linux 系统,python 版本 >= 3.9。

Caution

风险提示:注意 BPM Linux 潜在的破坏计算机风险。使用 BPM 安装软件即代表您已接受此风险,并信任第三方 Github release 的打包者。

Tip

BPM 保证对偶性,即 bpm install 后立即接 bpm uninstall 不会对系统作出任何改变。

为什么有这个项目?

非滚动 Linux 发行版中,官方源的软件版本常常过低,无法满足我的需求。

而滚动发行版,例如 Archlinux,也无法以 root 从 AUR 安装软件。

Windows 下的常见包管理方式是 scoop,但是其需要打包者维护一个 manifest 列表。

安装

BPM 需要安装到 root 用户下。

pip

Linux

sudo pip install bin-package-manager --break-system-packages -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo bpm

注意潜在的破坏系统包的风险。

Windows

pip install bin-package-manager
bpm

pipx

您可以使用 pipx 安装 BPM。

sudo pipx install bin-package-manager

pipx 仅会为当前用户安装,而 bpm 本身需要以 root 运行,因此需要使用 sudo pipx。或者,您可以跟踪此 issue 并使用其中提到的方法。

源码

如果您不希望使用 pipx,也可以克隆并使用源码。请确保 uv 已安装,这是一个 python 的包管理器。

git clone https://github.com/lxl66566/bpm.git
cd bpm
uv run python -m bpm

使用

  • 安装:bpm i <package>
  • 执行 bpm -hbpm i -h查看更多帮助。

原理

Linux

BPM 自动判断 asset 中的文件结构,并安装到系统中的相应位置。目前的安装内容是:

  1. 安装 binary
  2. 合并 lib, include, share, man, bin 目录到系统
  3. 安装 completions
  4. 安装 services(基于 systemd 的系统)

BPM 会自动为已存在的文件添加 .old 后缀,以避免覆盖。卸载时,.old 文件将被恢复。

Windows

BPM 下载文件夹到 %userprofile%/bpm/app/<name> 中,并为可执行文件创建快捷方式与 cmd 到 %userprofile%/bpm/bin,这个位置会被添加到 %path% 中。

v2.2.9 之后支持下载并安装单个 .exe.msi

开发

git clone https://github.com/lxl66566/bpm.git
cd bpm
poetry install  # 安装依赖
poetry run python -m unittest bpm/**/*.py  # 运行测试

TODO

  • no pre release
  • try install
  • windows support
  • offline install
  • install from github link
  • update from local
  • exe and msi support