Как разные дистрибутивы изменяют расположение файлов конфигурации для программ?


14

Многие программы Linux утверждают, что расположение файла конфигурации зависит от дистрибутива. Мне было интересно, как разные дистрибутивы делают это. Они действительно изменяют исходный код? Есть ли параметры сборки, которые устанавливают эти местоположения? Я искал это, но не могу найти какую-либо информацию. Я знаю, что это там, я просто не могу найти это. Что такое «путь Linux» в этом отношении?

Ответы:


14

Это зависит от дистрибутива и исходного («восходящего») источника.

В большинстве пакетов, использующих autoconf и automake, можно указать каталог, в котором будут искать файлы конфигурации с помощью --sysconfdirпараметра. Другие системы сборки (например, CMake) имеют аналогичные опции. Если исходный пакет использует одну из этих систем сборки, то упаковщик может легко указать правильные параметры, и патчи не требуются. Даже если они этого не делают (например, из-за того, что исходный источник использует некую доморощенную систему сборки), часто все же можно указать некоторую конфигурацию сборки, чтобы переместить файлы конфигурации в определенное место без необходимости исправления исходного источника.

Если это не так, то часто дистрибутиву действительно приходится добавлять патчи к источнику, чтобы заставить его перемещать файлы в том месте, которое они считают «правильным». В большинстве случаев упаковщики дистрибутивов тогда напишут патч, который позволит сконфигурировать исходный код в указанном выше смысле, чтобы они могли отправлять патч вышестоящим сопровождающим и не должны продолжать поддерживать / обновлять его. Это относится к расположению файлов конфигурации, но также и к другим вещам, таким как bin/ sbinисполняемые файлы (интерпретация команд системного администратора различается в разных дистрибутивах), место написания документации и т. Д.

Примечание: если у вас есть какое-то бесплатное программное обеспечение, пожалуйста, упростите для упаковщиков разговор с вами. В противном случае мы должны поддерживать такие патчи без особой причины ...


8

У них есть патчи, примененные к дереву исходного кода, которые адаптируют местоположения.

Доступно достаточно «стандартов», чтобы каждый дистрибутив мог выбирать на основании (личных) предпочтений и / или исторических практик. Существует редко решение, которое имеет только преимущества. Это иногда раздражает / сбивает с толку, но согласованность внутри одного дистрибутива является наиболее важной целью: это приводит к меньшему беспорядку и более легкому гаданию, что может быть для программы Y, если вы уже знаете, где аналогичные вещи (например, файлы настройки / конфигурации) для программы ИКС.

Пример применения патча

Мой пакет на 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странице информации для Сида , который удаляет зависимость ruamel.yamlот ruamel.base.

Другие дистрибутивы имеют аналогичные настройки. Например, если вы посмотрите на спецификации создания исходного файла RPM (например, для RedHat / CentOS / SuSE), вы увидите, что вы комбинируете оригинальный оригинальный архив пакета с одним или несколькими исправлениями, которые будут применены перед настройкой / компиляцией ,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.