不同的发行版如何修改程序的配置文件的位置?


14

许多Linux程序都指出配置文件的位置取决于发行版本。我想知道不同的发行版如何做到这一点。他们实际上在修改源代码吗?是否有设置这些位置的构建参数?我已经搜索过了,但是找不到任何信息。我知道它在那里,我似乎找不到。与此相关的“ Linux方式”是什么?

Answers:


14

这取决于发行版和原始(“上游”)来源。

对于大多数使用autoconf和automake的程序包,可以使用--sysconfdir参数指定在其中查找配置文件的目录。其他构建系统(例如CMake)具有类似的选项。如果源软件包使用这些构建系统之一,则打包程序可以轻松地指定正确的参数,并且不需要修补程序。即使不这样做(例如,由于上游源使用某些本地生成的构建系统),通常仍然可以指定一些构建配置,以将配置文件移动到特定位置,而不必修补上游源。

事实并非如此,那么发行版实际上确实必须向源代码添加补丁程序,以使其能够将文件移动到他们认为是“正确”的位置。在大多数情况下,分发打包程序然后将编写一个修补程序,该修补程序将按上述意义配置源,以便他们可以将修补程序发送给上游维护者,而不必继续维护/更新它。配置文件的位置就是这种情况,其他情况也是如此,例如bin/ sbin可执行文件(系统管理员命令的解释在各个发行版之间是不同的),编写文档的位置等。

旁注:如果您维护一些免费软件,使打包程序轻松与您联系。否则,我们就没有特别好的理由就必须维护此类补丁。


8

他们将补丁应用于源代码树以适应位置。

有足够的“标准”,每个发行版都可以基于(个人)偏好和/或历史惯例来选择。很少有具有优势的解决方案。有时这很烦人/令人困惑,但是一个发行版中的一致性是最重要的目标:如果您已经知道程序的相似之处(例如设置/配置文件)在哪里,则可以减少混乱,并且更容易猜测程序Y的位置。 X。

补丁应用示例

我的python包ruamel.yaml在Debian Sid中可用。它曾经依赖ruamel.base,并且通过PyPI安装的用户可能仍然具有较旧的,不兼容的ruamel.base安装版本。使用setup.py/ PyPI并不是真正的软件包管理,因此您不能删除以前通过依赖项安装的软件包。我通过为PyPI用户解决了这个问题,使其版本更高,ruamel.base从而消除了与旧ruamel.base软件包相关的问题,ruamel.yaml依赖于该新版本。

对于Sid来说,这不是问题:ruamel.base尚未安装的较早版本(或可以通过软件包管理将其删除)。因此,他们应用了一个补丁,您可以在ruamel.yamlSid信息页面上找到该补丁,以消除对ruamel.yamlon 的依赖ruamel.base

其他发行版具有类似的设置。例如,如果您查看创建源RPM文件的规范(例如,用于RedHat / CentOS / SuSE的规范),则会看到将软件包的原始原始tarball与一个或多个将在配置/编译之前应用的补丁结合在一起。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.