- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为了研究和概念验证,我想 fork 现有的 Linux 发行版,例如 Ubuntu(或可能是 Fedora)。我有一小群 vagrant
虚拟机,我想对此进行试验,以了解大型(开源)项目处理构建和依赖项管理的能力。
虽然拉取它们各自的源代码树、补丁等很简单;有一件事让我难以理解是“他们如何构建每个包”?为了执行类似“每晚构建”的操作,据我了解,发行版维护者需要:
x86
、x86_64
、arm
、armhf)设置构建环境
、aarch64
、mips
等)。.a
和 .so
文件)。deb
/rpm
/tarball。发行版维护者如何设置这一切?发行版维护者是否使用通用/标准框架,或者他们是否都在内部“包装自己的解决方案”?
最佳答案
您可以在 Linux From Scratch 中了解其中的许多步骤书。虽然本书着重于x86_64 平台,但您在那里学到的东西可以移植到其他平台。例如,稍后您为 ARM 构建时,您可以按照 this 等教程进行操作对于内核,对于特定的包/库,它们对应的交叉编译命令,它会因程序而异。学习完本书后,您至少能够理解帖子详细信息中的前五个项目。
至于打包 .deb
、.rpm
包,这将特定于您 fork 的发行版,您必须阅读一些相关文档。如果你打算发布你的分支,你还需要一个包的在线提供者(例如,sourceforge、github、gitlab)。因此,您必须为源代码和二进制文件设置 repo 协议(protocol),以便您的包管理器指向(在 apt
的情况下,它将是 /etc/apt/指向的那些sources.list
.)
最后,您需要将所有这些打包到 .iso
文件中进行安装。在您的计算机上启动并运行 LFS 后,您可以从中生成一个镜像,假设它是 /dev/sda1
中的一个分区:
dd if=/dev/sda1 of=my-distro-iso.iso
然后刻录它并启动它。有了这个就足以让其他人安装你的发行版了。如果你想做更多并制作一个安装程序,也许你可以使用像 Ubiquity 这样的分发构建器。或 Anaconda .这不会是微不足道的,你必须阅读如何使用它们,但对于刚刚通过 LFS 测试的人来说,这将很容易;)
您还可以指望 Advanced Linux Programming在为您的发行版开发应用程序时预订。
关于linux - 发行版维护者(即 Ubuntu、Fedora)使用什么工具进行构建/依赖管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430627/
我是一名优秀的程序员,十分优秀!