【发布时间】:2018-09-20 17:50:00
【问题描述】:
背景
出于研究和概念验证的目的,我想分叉一个现有的 Linux 发行版,例如 Ubuntu(或者可能是 Fedora)。我有一个由vagrant 虚拟机组成的小型集群,我想对此进行试验,以了解大型(开源)项目如何处理构建和依赖关系管理。
详情
虽然拉取它们各自的源代码树、补丁等很简单;我无法理解的一件事是“他们如何构建每个包”?为了执行“夜间构建”之类的操作,据我了解,发行版维护者需要:
- 为所有支持的平台(即
x86、x86_64、arm、armhf、aarch64、mips等)设置带有工具链/编译器的构建环境。 - 为每个包拉取源 tarballs/repos。
- 为所有“库”包部署标头。
- 为所有“库”包构建和部署库(即
.a和.so文件)。 - 构建和部署(可能)依赖于先前构建的库的应用程序/二进制文件。
- 将每个库/应用打包为自己的
deb/rpm/tarball。 - 创建一个包含所有包的整体安装程序。
问题
发行版维护者如何设置这一切?发行版维护者是否使用通用/标准框架,还是他们都在内部“包装自己的解决方案”?
【问题讨论】:
-
@Fabiotk 这非常有帮助。如果您可以将该答案转换为(稍长)问题(加上指向本书来源的链接),我会将其标记为已接受。谢谢。
标签: linux ubuntu installation dependency-management build-system