gpt4 book ai didi

c - 用于开发最新的 Linux 上游(内核、Gnome 等)软件包的良好 Linux 发行版(和方法)是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:31:21 30 4
gpt4 key购买 nike

真正知道这个问题答案的人是那些为 Linux 发行版中包含的程序或库开发的人,这些程序或库依赖于 Linux 发行版中包含的其他库。他们只是告诉我他们在我描述的开发环境方面做了什么会很有帮助。

问题基本上是这样的:

Linux 发行版将 Linux 内核与典型的 Linux 管道捆绑在一起——glib、dbus、udev 等等。大多数还捆绑桌面环境,如 KDE 或 Gnome。

虽然发行版可能有一些自己的捆绑程序包,但大多数程序和库都来自上游,这意味着它本身以外的来源。像 dbus 这样的包是“上游”的,并向下游流向 Debian、Fedora、Ubuntu 等发行版。

有时我使用这些程序并觉得它们可以改进。一些改进是错误修复,这些错误修复确实无可争辩 - 比如一个小补丁可以防止因不必要的内存违规而导致的段错误。

构建这些包时,发行版包括的一件事是“依赖”列表,因为这些程序中的许多依赖于某些库(以及这些库的某些版本),而其中一些库依赖于其他库。这导致了我遇到的一些并发症。

如果我在程序或库中遇到错误并向上游报告,一个常见的问题是“您在源代码管理中使用的是最新版本,还是旧版本”。可以理解的是,开发人员希望我使用最新提交的代码,因为他们不想浪费时间回溯他们已经覆盖的基础,尤其是在错误已修复的情况下。

所以我去获取最新的提交。但是后来我遇到了一个问题,因为现在最新的提交依赖于一个比我的操作系统使用的库更新的库。

一个例子可能是,如果我正在使用 Ubuntu 中的默认阅读器查看 PDF,evince。由于 evince 依赖的 poppler 库中似乎存在缺陷,因此无法正确显示。所以我发布了一个错误,但他们想知道我是否有最新的 poppler 版本。所以我下载了最新的 poppler commit,但是 poppler 库依赖于 cairo 库,而我的操作系统没有最新的 cairo 库。所以我必须得到它 - 但是 cairo 提示我没有最新的 pixman 和 x11 库。

这是一个例子,但它几乎适用于任何包。

所以我的问题是,什么是用于此类事情的良好 Linux 发行版?哪个以拥有最新的软件包而闻名,或者至少可以轻松获得它们?

或者也许是一个更容易让我做这些事情的 Linux 发行版。我听说过 Gentoo 如何通过 emerge 从源代码构建,我可以看到这解决了很多问题。

还可以选择使用 pbuilder 和 debootstrap 等工具在另一个系统的 chroot 环境中拥有最新包的子系统。

最后,我可以只下载所有库的最新提交,先构建一个我不关心的依赖项,然后转到下一个并构建它,让程序使用我编译的本地库,不是系统库,然后再做一次等等。这是我出于多种原因试图避免的(太多的手动操作,我可能会错过一个重要的依赖项等)

最佳答案

参与发行版,专注于您想要改进的软件包
发行版确保包版本可以很好地协同工作。这是构建 Linux 系统的第一份工作,他们已经完成了。他们确保一切都“合适”。如果您想改进软件包,请在发行版中进行改进。如果补丁有值(value),它可能会应用到最新版本。

并非所有软件包都存在依赖性问题,因此您可以从存储库构建这些软件包并以这种方式做出贡献。发行版主要是环境,上游包通常得到发行版开发人员的贡献。

仅仅为了 Gnome 核心开发而构建整个发行版没有多大意义真的。只是改进 Gentoo 的 Gnome 构建并尝试在上游获取适用的补丁。

专注于您可以输入值(value)的地方,而不是花费 1/4 的时间等待构建和弄清楚为什么包 X 无法针对库 Y 进行编译,而您无论如何只想在 Z 上工作!

我与 Fedora Rawhide 一起工作在做任何开发工作时,它不像某些东西那样前沿,但提供了良好的稳定性和可变性 IMVHO

或者总是有:

Linux From Scratch ,如果你喜欢痛苦的话。

关于c - 用于开发最新的 Linux 上游(内核、Gnome 等)软件包的良好 Linux 发行版(和方法)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893714/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com