许多Linux程序都指出配置文件的位置取决于发行版本。我想知道不同的发行版如何做到这一点。他们实际上在修改源代码吗?是否有设置这些位置的构建参数?我已经搜索过了,但是找不到任何信息。我知道它在那里,我似乎找不到。与此相关的“ Linux方式”是什么?
许多Linux程序都指出配置文件的位置取决于发行版本。我想知道不同的发行版如何做到这一点。他们实际上在修改源代码吗?是否有设置这些位置的构建参数?我已经搜索过了,但是找不到任何信息。我知道它在那里,我似乎找不到。与此相关的“ Linux方式”是什么?
Answers:
这取决于发行版和原始(“上游”)来源。
对于大多数使用autoconf和automake的程序包,可以使用--sysconfdir
参数指定在其中查找配置文件的目录。其他构建系统(例如CMake)具有类似的选项。如果源软件包使用这些构建系统之一,则打包程序可以轻松地指定正确的参数,并且不需要修补程序。即使不这样做(例如,由于上游源使用某些本地生成的构建系统),通常仍然可以指定一些构建配置,以将配置文件移动到特定位置,而不必修补上游源。
事实并非如此,那么发行版实际上确实必须向源代码添加补丁程序,以使其能够将文件移动到他们认为是“正确”的位置。在大多数情况下,分发打包程序然后将编写一个修补程序,该修补程序将按上述意义配置源,以便他们可以将修补程序发送给上游维护者,而不必继续维护/更新它。配置文件的位置就是这种情况,其他情况也是如此,例如bin
/ sbin
可执行文件(系统管理员命令的解释在各个发行版之间是不同的),编写文档的位置等。
旁注:如果您维护一些免费软件,请使打包程序轻松与您联系。否则,我们就没有特别好的理由就必须维护此类补丁。
他们将补丁应用于源代码树以适应位置。
有足够的“标准”,每个发行版都可以基于(个人)偏好和/或历史惯例来选择。很少有仅具有优势的解决方案。有时这很烦人/令人困惑,但是一个发行版中的一致性是最重要的目标:如果您已经知道程序的相似之处(例如设置/配置文件)在哪里,则可以减少混乱,并且更容易猜测程序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.yaml
Sid的信息页面上找到该补丁,以消除对ruamel.yaml
on 的依赖ruamel.base
。
其他发行版具有类似的设置。例如,如果您查看创建源RPM文件的规范(例如,用于RedHat / CentOS / SuSE的规范),则会看到将软件包的原始原始tarball与一个或多个将在配置/编译之前应用的补丁结合在一起。