9个版本
0.1.6 | 2023年3月16日 |
---|---|
0.1.5 | 2023年1月7日 |
0.1.4 | 2022年1月19日 |
0.1.1 | 2021年6月7日 |
0.0.0 | 2021年5月13日 |
在命令行界面分类中排名第161
每月下载量:41次
59KB
1.5K SLoC
开发中 - 正在开发中,但还处于早期阶段。
binst
的目标是提供一个简单且去中心化的机制来发布和安装[基于Rust]的二进制文件。命令行不依赖于仓库位置,尽管我们可能在binst.io上提供某个仓库。目前,仅支持s3
协议进行发布,以及s3
和http/https
协议进行安装。
简而言之
- 从开发机器,使用
binst publish -r s3://my_bucket-com/repo
进行发布(将发布之前构建的--release
) - 从任何机器,使用
binst install my_cool_lib -r https://my_bucket.com/repo
进行安装(假设您已将您的桶设置为网站)- 也可以使用相同的s3协议进行安装
binst install my_cool_lib -r s3://my_bucket-com/repo
- 也可以使用相同的s3协议进行安装
- 安装完二进制文件后,只需执行
binst update my_cool_lib
即可,如果流中部署了新版本,则会进行更新(默认为主流) - 流基于semver
pre
,默认为主流main
。
操作系统支持 - 目前支持x64 mac和x64 linux gnu。ARM Mac / Linux即将推出。Windows,欢迎pull request。
安装
开发机和安装机上的二进制安装
## On Linux x86 (Intel/AMD)
curl -O https://repo.binst.io/binst/x86_64-unknown-linux-gnu/stable/binst.tar.gz && \
tar -xvf binst.tar.gz && ./binst self && \
echo 'source "$HOME/.binst/env"' >> ~/.bashrc && source "$HOME/.binst/env"
## On Mac Apple Silicon
curl -O https://repo.binst.io/binst/arm64-apple-darwin/stable/binst.tar.gz && \
tar -xvf binst.tar.gz && ./binst self && \
echo '\nsource "$HOME/.binst/env"' >> ~/.zshenv && source "$HOME/.binst/env"
## On Mac x86 (Intel/AMD)
curl -O https://repo.binst.io/binst/x86_64-apple-darwin/stable/binst.tar.gz && \
tar -xvf binst.tar.gz && ./binst self && \
echo '\nsource "$HOME/.binst/env"' >> ~/.zshenv && source "$HOME/.binst/env"
关于AWS Linux的说明 - 在使用较旧实例时,您必须(并且应该)使用以下命令将openssl更新到1.1或更高版本:
sudo yum install openssl11
(按照Rust的要求)
在开发机上,也可以使用cargo install
cargo install binst
CLI示例
注意:您需要有 AWS S3 存储库以及凭证,凭证可以是环境变量或 AWS 配置文件
从开发机发布二进制文件。
## Publish to S3
# Note: publish the --release, with the Cargo.tml version.
binst publish -r s3://my_repo_bucket/repo_root --profile my_aws_profile
# Or with the default AWS credential env variables set
binst publish -r s3://my_repo_bucket/repo_root
安装已发布的二进制文件
# Install the latest stable version published (the one in the info.toml)
binst install cool_cli -r s3://my_repo_bucket/my_repo
# install from a http/https URL (assuming http domain map to the s3 bucket above)
binst install cool_cli -r https://my_repo_bucket.com/my_repo
# then, you can run the cool_cli (assuming ~/.binst/bin/ has been added to the PATH)
cool_cli ....
注意:目前,执行
binst install ...
将重新安装最新版本的二进制文件。它不会进行任何 semver 比较。
范围和概念
- 不面向最终用户 -
binst
不面向最终用户,而是面向开发者和技术社区。 - 不是包管理器 - 愚蠢是新的智能;如果愚蠢不够,请使用真正的包管理器。
- 暂不支持 Windows(目前) - 抱歉,我没有 Windows。欢迎提交拉取请求。
- 没有中央存储库 - 首先去中心化,但最终会在 binst .io 上为流行的命令行工具创建一个配置文件。
- 简单的存储库布局 - 只有一个。此外,仅支持 .tar.gz 格式。
- 协议较少 - 使用 S3 发布,使用 https/s3 安装。计划支持 Git。
S3 凭证 - 环境变量
binst
通过以下方式获取 S3 凭证。
- 如果定义了
--profile profile-name
,它将使用标准的 AWS - 否则,
- 首先,它将检查
BINST_...
环境变量BINST_REPO_AWS_KEY_ID
BINST_REPO_AWS_KEY_SECRET
BINST_REPO_AWS_REGION
BINST_REPO_AWS_ENDPOINT
(可选,当使用 minio 作为对象存储时很有用)
- 否则,作为最后的退路,将查看标准的
AWS_...
环境变量AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION
AWS_ENDPOINT
(可选,当使用 minio 作为对象存储时很有用)
- 首先,它将检查
存储库布局
- repo_base
- cool_cli/
- x86_64-unknown-linux-gnu/
- main/ # for main semver, like 0.1.1
- latest.toml # latest
- 0.1.1/
- cool_cli.toml # package.version = 0.1.1
- cool_cli.tar.gz
- 0.1.0/
- cool_cli.toml # package.version = 0.1.0
- cool_cli.tar.gz
- rc/ # when semver has a -..pre.. (take the alpha only).
- latest.toml
- 0.1.0-rc.1/
- cool_cli.toml # package.version = 0.1.0-rc.1
- cool_cli.tar.gz
本地目录布局
- ~/.binst/
- env # sh file to source to set the ~/.binst/bin in the PATH
- bin/ # symblink dir. Should be in the PATH
crate_name -> ../packages/crate_name/0.1.3/upacked/crate_name
- packages/
- crate_name/
- 0.1.3/
- install.toml # (version and repo of the download. Will be user for the future 'binst update' command)
- crate_name.tar.gz # (downloaded package)
- unpacked/ # unpacked tar.gz containing the executable crate_name
目标
- 到目前为止已测试
- x86_64-apple-darwin(到目前为止只测试和支持了一个 !!!!)
- x86_64-unknown-linux-gnu
- 计划测试
- aarch64-apple-darwin
- aarch64-unknown-linux-gnu
- 未计划(但欢迎提交拉取请求)
- x86_64-pc-windows-msvc
https://doc.rust-lang.net.cn/nightly/rustc/platform-support.html
依赖项
~36–51MB
~894K SLoC