交付物与指纹
交付物
text
libnginx-mod-http-cfd-tunnel_0.14.0-1_amd64.deb体积、sha256、Installed-Size 这类精确字节不在文档里抄写 —— 单一机器可读出处是 build/fingerprints.env,随包文档只写「从哪里取」。这是硬规矩:文档里写死自指字节会导致 「为了写下自己的体积而重打一次包」。
怎么复核(三条命令)
bash
cd /root/DSH/nginx-cfd
# 1) 包本身没坏
sha256sum -c build/dist/libnginx-mod-http-cfd-tunnel_0.14.0-1_amd64.deb.sha256
# 2) 工作区 .so / 包内 .so / 包内文档 / 根文档 四处一致(10 项)
./build/fingerprints.sh --check
# 3) 包内容、依赖、ABI、文档不漏装(16 项)
./build/package-check.sh指纹对账都对哪 10 项
| 项 | 含义 |
|---|---|
工作区 .so md5 / 体积 | 与 build/fingerprints.env 记录一致 |
nginx-src/objs 的 .so | 与 build/prefix 的那份是同一份产物 |
.deb sha256 / 体积 | 与记录一致 |
包内 .so md5 | 与工作区交付模块同一份 |
包内 TECHNICAL.md | 与仓库根文档逐字节一致 |
根 TECHNICAL.md | 与记录一致 |
.sha256 文件 | sha256sum -c 复核通过 |
包内容自检都对哪 16 项
- 目录结构按 Debian 官方模块包铺垫(
usr/lib/nginx/modules、modules-available、modules-enabled符号链接、usr/share/doc/...、usr/bin/cfd-quick-url); load_module片段用相对路径(与 geoip 等官方模块包同形),在 Debian prefix 布局下实测可加载;Depends走nginx-abi-1.26.3-1 | nginx (>= 1.26.3),声明libnghttp2-14、zlib1g;README.md/TECHNICAL.md/cfd-quick-url一个都不漏。
可复现性
| 检查 | 期望 |
|---|---|
同一工具链重编 .so | 逐字节相同(md5 与 build/fingerprints.env 的 SO_MD5 一致) |
clone-build.sh 干净克隆自洽构建 | 去调试信息后与交付 .so 相同 |
| 回归跑的那份字节 | 就是包内那份(解包后配官方 nginx 复验 60/60) |
本次(0.14.0-1)的复验流程
bash
NGX_MODULES_ONLY=1 ./build/nginx-build.sh # 重编,确认 md5 不变
bash build/make-deb.sh 0.14.0-1 # 打包(1 次)
./build/fingerprints.sh --write && ./build/fingerprints.sh --check # 10/10
./build/package-check.sh # 16/16
mkdir -p .scratch/instroot0140 && dpkg-deb -x build/dist/*0.14.0-1*.deb .scratch/instroot0140
MODULE_SO=$PWD/.scratch/instroot0140/usr/lib/nginx/modules/ngx_http_cfd_tunnel_module.so \
NGINX_BIN=$PWD/.scratch/official-nginx/usr/sbin/nginx \
./build/phase2-e2e.sh 8183 18693 18393 19393 2 # 60/60MODULE_SO 必须是绝对路径:官方 nginx 的 prefix 是 /usr/share/nginx,相对路径会被拼到 prefix 下(踩过一次:dlopen("/usr/share/nginx/.scratch/…") failed)。