为什么不同的Linux发行版需要打补丁包?

为什么不同的Linux发行版需要打补丁包?

我知道不同的发行版会修补各自存储库中可用的软件包,但我从来不明白为什么需要这样做。如果有人可以解释或向我指出相关的在线文档,我将不胜感激。谢谢。

答案1

我花了几次尝试,但我想我现在明白你在问什么了。

发行版在打包之前修补给定软件有多种可能的原因。我会尝试给出一个非排他性的列表;我确信还有其他可能的原因。

出于本次讨论的目的,“上游”是指来自软件官方开发人员的原始源代码

  1. 无论出于何种原因,上游尚未(或尚未)合并到其主分支中的补丁。通常是因为该软件包的发行版软件包维护者认为上述补丁是值得的,或者因为需要它们来保持发行版的连续性(假设您有一个网络服务器,并且在对php您一直依赖的几个功能进行例行更新之后)不再工作,或者无法从旧样式读取配置文件)

  2. 发行版倾向于喜欢其文件系统层次结构的标准化模式/etc/;对于什么构成正确的标准,每个软件开发人员可能有也可能没有自己的想法。因此,分发包维护者要做的第一件事就是修补构建脚本,以与分发的其余部分相对应的层次结构模式来配置和期望所述配置文件。

  3. 继续讨论配置主题,第一个“补丁”往往是一组默认配置文件,可以说,它们可以“开箱即用”地与发行版的其余部分一起使用,从而允许最终用户立即开始使用安装后,而不必手动整理工作配置。

这就是我的想法。很可能还有其他的,但我希望这能给你一些想法。

答案2

从我的脑海中,除了@Shadur的回答之外:

  • 某些发行版不鼓励使用另一个包提供的嵌入库或文件。例如,很多软件都包含嵌入式 JQuery,但 Debian 有一个 libjs-jquery 包提供它。
  • 上游经常混合安全补丁和向后不兼容的更改,例如依赖于较新的库。为了防止对整个发行版进行广泛的更改,只是为了获得更正确的证书检查,软件包维护者可能会选择只选择安全补丁。
  • 上游软件可能与其他软件冲突,例如它们可能提供具有相同路径但内容不同的文件。为了解决这个冲突,可能需要打补丁来在其他地方寻找该文件。
  • 上游通常满足于手动添加某些内容到其他软件配置文件的说明,这在安装和卸载软件包时很容易出错,因此发行版可能更喜欢使用 *.d 目录中的片段文件。
  • 上游的某些部分可能与发行版的许可证不兼容,因此包维护者可能决定修补有问题的部分。
  • 上游使用假设特定其他软件(例如 Apache)的路径,但维护者希望它支持通用 Web 服务器。
  • 有时,上游开发人员不再沟通,软件会发生故障,因此需要补丁来保持其正常运行。

答案3

有以下几个原因:

  1. 世界上没有完美的软件
  2. Linux 上不存在通用打包软件这样的东西:

  3. 因为分叉

  4. 由于对圣经的解释不同 FHS
  5. 因为自我

答案4

最紧迫的原因:构建错误。

  • 也许您只是不想等待上游修复它(假设修复是显而易见的)。
  • 也许上游不会因为任何原因接受你的修复,即使你显然需要它。
  • 也许根本就没有维护。

相关内容