真正了解这个问题答案的人是那些为Linux发行版中包含的程序或库开发的人,他们依赖于Linux发行版中包含的其他库.他们只是告诉我他们在我所描述的开发环境方面做了什么会有所帮助.
问题基本上是这样的:
Linux发行版将Linux内核与典型的Linux管道捆绑在一起 - glib,dbus,udev等.大多数还捆绑了KDE或Gnome等桌面环境.
虽然分发可能有一些自己的捆绑程序包,但大多数程序和库来自上游,这意味着除了它自己之外的其他来源.像dbus这样的软件包是"上游"的,并向下游流向Debian,Fedora,Ubuntu等发行版.
有时我使用这些程序并觉得它们可以改进.一些改进是错误修复,无法真正与之争论 - 比如一个小补丁,可防止因不必要的内存违规导致的分段错误.
在构建这些包时,有一件事包括"依赖"列表,因为许多这些程序依赖于某些库(以及这些库的某些版本),其中一些库依赖于其他库.这导致了我遇到的一些复杂情况.
如果我遇到程序或库中的错误并向上游报告,常见的问题是"您使用的是源代码管理中的最新版本,还是旧版本".可以理解的是,开发人员希望我使用最新提交的代码,因为他们不想浪费他们已经覆盖的时间,特别是如果修复了错误.
所以我去获取最新的提交.但后来我遇到了一个问题,因为最近的提交现在依赖于一个比我的操作系统更新的库.
一个例子可能是如果我在Ubuntu中查看带有默认阅读器的PDF,那么.它显示不正确,因为看起来像是依赖于poppler库的缺陷.所以我发布了一个错误,但他们想知道我是否有最新的poppler版本.所以我下载了最新的poppler提交,但是poppler库依赖于cairo库,而我的操作系统没有最新的cairo库.所以我必须得到它 - 但是然后cairo抱怨我没有最新的pixman和x11库.
这是一个例子,但它适用于任何包.
所以我的问题是,用于此类事情的Linux发行版是什么?一个以拥有最新软件包而闻名的软件包,或者至少可以轻松获得它们的选项?
或者也许Linux发行版更容易让我做这样的事情.我听说过Gentoo如何通过emerge从源代码构建,我可以看到这解决了很多问题.
还可以选择使用pbuilder和debootstrap等工具在另一个系统的chrooted环境中创建最新软件包的子系统.
最后,我可以下载所有库的最新提交,构建一个没有我首先关注的依赖项的提交,然后转到下一个并构建它,指向程序使用我编译的本地库,而不是系统库,然后再做一遍,等等.这是我试图避免的原因有多种(手动方式过多,我可能会错过重要的依赖等)