甚至在 Bcachefs 文件系统驱动程序被主线内核接受之前,Debian 在过去五年中就提供了一个 “bcachefs-tools” 软件包,为这个写时复制文件系统提供用户空间程序。起初它是简单的 C 代码,起初很简单,但自从 Bcachefs 工具过渡到 Rust 以来,对于思想稳定的分发供应商来说,它已经变得一团糟。因此,bcachefs-tools 软件包现在已被 Debian 孤立。
Jonathan Carter 在过去五年中一直在 Debian 中维护 bcachefs-tools 包,在经过足够的尝试来正确打包基于 Rust 的现代代码后,他放弃了它。卡特在今天的一篇博文中解释说:
“所以,早在 4 月份,Debian 中 bcachefs-tools 的 Rust 依赖项就完全不符合构建要求。我从 Rust 团队那里得到了一些帮助,他们说常见的做法是放宽 Rust 软件的依赖性,以便它在 Debian 中构建。因此,需要确切版本 0.2 的 errno 被放宽,以便它可以在 Debian 中使用版本 0.4 进行构建,udev 0.7 在 Debian 中放宽了版本 0.8,memoffset 从 0.8.5 放宽到 0.6.5,粘贴从 1.0.11 放宽到 1.08,bindgen 从 0.69.9 放宽到 0.66。
我发现这有点令人不安,但似乎一些 Rust 人非常有信心,如果构建了什么东西,它会运行良好。至少它确实构建了,并且生成的二进制文件确实有效,尽管我个人仍然对这种方法不是很满意或没有信心(也许随着我对 Rust 的了解越来越多,这种情况可能会改变)。
考虑到这一点,此时您可能想知道任何发行版如何合理地打包它。问题是他们不能。Fedora 和其他具有稳定版本的发行版采用的方法与我们在 Debian 中所做的类似,而策略更宽松的发行版(如 Arch)包括所有依赖项,因为它们是提供给上游的。
基本上,严格的 Rust 依赖项使在 Debian 等发行版中维护 bcachefs-tools 变得一团糟。卡特进一步补充道:
“就目前而言,bcachefs-tools 不可能在 Debian 稳定版中维护。虽然我在打包时主要关心的是 Debian 不稳定版和下一个稳定版本,但我也记住了那些在我不再关心它们很久之后必须支持这些包的人(比如为 Debian 提供 LTS 支持的 Freexian 或具有长期 Ubuntu 支持的 Canonical,可能还有其他我甚至从未听说过的组织)。当然,如果 bcachfs-tools 没有任何可用的稳定版本,它也没有任何 LTS 版本,因此任何需要长期支持 bcachefs-tools 的人都必须自己承担支持负担,如果他们捆绑了它的依赖项,那么这些依赖项也必须捆绑。
最初 bcachefs-tools 打算从 Debian 中完全删除,但根据其他 Debian 开发人员的反馈,该软件包反而成为孤立的软件包。它仍然在 Debian experimental 中,但从 Debian unstable 中删除,因此它不会迁移到 testing。旧版本的 bcachefs-tools 也将从 Debian stable 和 Debian oldstable 中删除,因为它们不太可能与当前的上游 Bcachefs Linux 内核代码一起工作。
Carter 在他关于孤立 bcachefs-tools 的博客文章的结尾写道:
“就这样,我使用 bcachefs-tools 的冒险结束了。我建议,如果你考虑在不久的将来将 bcachefs 用于任何类型的生产用途,你首先要考虑它的长期支持性,以及是否真的有人成功地为它提供稳定的支持。
Debian 错误报告中还有更多关于孤立 bcachefs-tools 并将其从 unstable 中删除的评论。
转自 Debian Orphans Bcachefs-Tools: “Impossible To Maintain In Debian Stable” – Phoronix