BamZap 包管理器 · 伴生孵化

soupkg v1.8 客户端(别名 sk) · 半独立于 Soup,单 .sar 分发,soupmake 构建

核心能力

能力说明
内容寻址存储对象按 sha256 内容 hash 命名,相同内容只存一份、跨版本去重
content-defined chunking大文件/目录切分内容块(平均 ~1MiB),每块独立对象,支持断点下载
后量子签名soupq(SPHINCS+ 风格,底层 SM3)优先,回退 smx(SM2) / openssl ed25519
deny-by-default签名者公钥指纹必须先在可信库登记,否则拒绝
远程后端https(纯 HTTPS 对象空间)/ cos(本地目录或 git 仓库)/ lore / git
声明式部署HetuFile(sml 格式)一次描述注册→推送→部署→校验

快速开始

# 构建 .sar(soupmake)
soupmake                              # 打包 bamzap.sar

# 运行(.sar 半独立分发,只需 soupx)
soupx bamzap.sar --help

# 生成密钥对(后量子,默认 soupq 后端)
soupx bamzap.sar keygen myorg
#  fingerprint(sha256 of pub): 9f3c...e1

# 登记签名者公钥(只做一次)
soupx bamzap.sar trust add 9f3c...e1 "myorg release key"

# 注册应用并自动签名
export SOUPKG_SIGN_ID=myorg
soupx bamzap.sar pool register myapp ./myapp/
#  registered(chunked-dir) myapp -> b92dc8...

# 验签(hash + 后量子签名 + 信任库,任何一步失败即拒绝)
soupx bamzap.sar verify myapp
#  verify myapp: OK (signer=9f3c...e1)

# 运行
soupx bamzap.sar bare run myapp Alice
#  hello from myapp, args=Alice

数据池

pool/
├── objects/   内容寻址对象(sha256 命名,自动去重)
├── refs/      版本指针(每个 ref 一个文件,内容为对象 hash)
├── refs/*.log ref 变更历史(只增)
├── remote/    远程后端缓存
├── locks/     执行器锁
└── history.log 全局操作历史(只增)

位置:Windows %USERPROFILE%\.soupkg\,Linux/macOS ~/.soupkg/

HTTPS 对象空间分发(推荐)

export SOUPKG_HTTPS_ROOT=https://objects.example.com/bamzap/   # 必须以 / 结尾
export SOUPKG_HTTPS_TOKEN=xxxx                                   # Bearer token

soupx bamzap.sar pool remote add origin https
soupx bamzap.sar pool remote push https --with-objects

# 另一台机器
soupx bamzap.sar pool remote fetch https
soupx bamzap.sar verify myapp
soupx bamzap.sar bare run myapp

对象 = PUT <base>/<sha256>;ref = PUT <base>/refs/<name>;注册表 = PUT <base>/index.json。fetch 按本地缺失 hash 逐块下载并立即 sha256 校验。凭据只存在环境变量,读取后立即清空。

后量子签名链(soupq)

verify 完整链路:hash(对象/chunk sha256 比对)→ sign(manifest 后量子签名验签)→ trust(公钥指纹在可信库)→ integrity(所有 chunk 对象 hash 复核)。任意一步失败即 FATAL。

算法与参数详见 soupq 后量子签名模块

声明式部署(HetuFile)

soupx bamzap.sar apply HetuFile.sml
pool greeter { source: "./greeter-v2.soup"; register: true }
remote origin { backend: "https"; root: $env.SOUPKG_HTTPS_ROOT }
deploy app { ref: "greeter"; target: "./deploy/"; mode: "copy"; run_args: "Alice" }
verify greeter { chain: true }

子命令速查

子命令用法说明
pool register<name> <file|dir>注册/发新版(内容寻址 + 写 ref)
pool list / info列 ref / 池信息
pool gc[--prune-unreachable] [--exec]回收孤儿对象(默认 dry-run)
pool remoteadd/push/fetchgit|cos|lore|https 后端
ref log / rollback / restore<name> [<hash>]版本历史 / 回滚 / 恢复
run / barerun|link|copy|run容器或裸机运行/落地
verify<name> [--remote]真实签名链(deny-by-default)
keygen / sign / trust密钥/签名/信任库
apply<HetuFile.sml>声明式执行
sar install<file.sar>包安装入池

构建:soupmake 目标 build/pack(打包)、check(类型检查)、test(e2e 自测)、clean

← 返回首页