主要观点:软件的规范源代码应包括其所有依赖项内容的校验和。
关键信息:
- 软件依赖自身源代码,法律要求用内容寻址版本控制系统如 git 保存整个源代码的哈希值。
- 软件常依赖第三方库,需有包含所有依赖项及校验和的锁文件,且锁文件本身是源代码的一部分并混入 VCS 根哈希。
- 软件需要编译器,其所需编译器的哈希值应包含在锁文件中,通常只指定版本是错误的,指定版本和哈希虽麻烦但有优势,编译器分发应包含清单列出各平台特定哈希,下游消费者只需包含该清单的单个哈希。
- 可通过混合哈希来压缩哈希,如针对不同平台的编译器有不同哈希。
重要细节: - 要确定哈希值需实际了解依赖项(非易事,单有 Makefile 或.sh 可能不知依赖项集合)、自动下载依赖项的方法、使依赖项构建过程可重现以有有意义的哈希、学会按项目隔离依赖项(哈希依赖项不能安装到全局共享命名空间),这些能使软件开发更易。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。