В Gentoo инструмент для управления изменениями в / etc, вызванными пакетами (называемый dispatch-conf), поддерживает rcs для отслеживания изменений, но это не очень эффективно.
Я склоняюсь к версии моего / etc через git
, тем более что, используя разные ветки, я могу сохранять свои / etc как можно более похожими в разных дистрибутивах, сохраняя как можно больше вещей в одном месте (для некоторых областей, которые явно не работают, конфигурация apache например, действительно отличается в разных дистрибутивах). Это работает так:
У меня есть master
репозиторий с файлами конфигурации по умолчанию. Теперь я вступаю в контакт с новым дистрибутивом, поэтому создаю новую ветку на основе моей master
ветки на основе имени дистрибутива (в данном примере debian). Debian хранит некоторые файлы конфигурации в месте, отличном от моего, master
поэтому я делаю a git mv file new_loc
. И все хорошо. Я переключаюсь назад master
и изменяю этот файл, потому что я добавил определенную директиву config, когда я объединяюсь master
с моей debian
веткой, перемещенный файл изменяется, так что я могу просто изменить большинство вещей в моей master
ветке и просто слить изменения в моем «дистрибутиве» ветви (как правило, они, как правило, представляют собой смесь веток распределения и назначения, сервер Debian, очевидно, имеет некоторые отличия от рабочей станции Debian, но функции все еще работают).
Так что в основном у меня есть «общая конфигурация», master
и (если говорить в терминах объектно-ориентированного программирования) она наследуется в мои ветви (которые также могут наследовать друг от друга).
Кроме того, git
механизмы «выбора вишен» (в данном случае изменения в / etc /) были весьма полезны для меня в тех случаях, когда мне нужны были только части определенной конфигурации.
Теперь к некоторым из ваших идей:
- Если бы мне потребовалась дополнительная интеграция с менеджером пакетов, я бы использовал для этого сценарии-оболочки (на данный момент я не использую).
- обращение с версиями выше по течению, как с веткой, будет работать нормально
git
, это просто еще одна ветка, в которую вы иногда сливаетесь (частично)master
- Список игнорирования в git - это файл .gitignore в вашем репо, так что он покрыт.
Я использовал
fossil
для этого с некоторым успехом. Смотрите мой пост о Fossil для получения дополнительной информации. Я также использовал инструмент,etcupdate
который называется для перемещения между обновлениями, а не для отслеживания изменений. Я полагаю, что это было предназначено, чтобы быть сопутствующим инструментом дляfreebsd-update
одной точки Я не уверен в его статусе в настоящее время, но он работает на моихRELEASE-8.*
системах.http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/
источник
Есть инструмент etckeeper, я понятия не имею, насколько он хорош.
Я также не знаю, можно ли заставить его работать на * BSD, я подозреваю, что это возможно, но это не будет поддерживаться с портами из коробки.
источник