Gentoo 软件包测试的奇特世界

主要观点:在与 Fedora 开发者讨论 uv 测试时,意识到 Gentoo 测试环境与其他上游及其他 Linux 发行版不同,本文旨在指出其差异、影响及为何不是坏事。
关键信息:

  • Gentoo 是源优先发行版,源包是一等公民,二进制包是“缓存”,官方二进制包覆盖的配置有限。
  • 源构建分为多个阶段,如 src_configure、src_compile、src_test、src_install 等,类似自行编译安装软件过程,但现代 Python 包有所不同。
  • 测试过程的关键要点:测试在工作树内对刚构建未安装到系统的包进行,所有构建时依赖安装在系统,系统可包含其他影响测试的包,系统中可能已安装待测试包的不同版本或配置,这带来诸多麻烦但也有重要积极意义,即接近生产环境测试能发现实际运行时问题,且很多 Gentoo 用户启用测试,能在多种系统上进行测试。
    重要细节:
  • 在“二进制”发行版中,源包和二进制包相对隔离,用户通常不接触源包;而 Gentoo 中源包是首要的,用户使用源仓库,可选择使用二进制包仓库。
  • 现代 Python 包在编译阶段构建 wheel 并安装到临时目录,测试阶段使用本地安装的包。
  • 测试过程中的各种情况会导致测试结果出现问题,如随机包导致假阳性、已安装包影响测试等,但能发现上游 CI 未捕捉到的实际问题,很多 Gentoo 用户启用测试能在多种系统上进行测试。
阅读 15
0 条评论