Jaká řešení na klíč existují pro umístění /etc pod kontrolou verzí, pod různými unicy? Na klíč nutně neznamená součást základní instalace, ale následující funkce by byly fajn:
- zapojuje se do příkazů VCS pro správu metadat (vlastnictví, oprávnění);
- integrace se správcem balíčků (automatické spouštění před a po instalacích, inteligentní zpracování upgradů);
- zacházet s verzemi souborů proti proudu jako s větvemi;
- předvyplněný seznam ignorovaných;
- podpora několika základních VCS (zejména distribuovaných).
Používám etckeeper pod Debianem a deriváty. Má všechny výše uvedené funkce kromě toho, že nesleduje upstream verze. Rád bych se dozvěděl o alternativách, zejména o *BSD.
Přijatá odpověď:
Pod Gentoo nástroj pro správu změn vyvolaných balíčkem v /etc (nazývané dispatch-conf ) podporuje rcs pro sledování změn, ale to není moc výkonné.
Mám tendenci verzi /etc přes git , zejména proto, že pomocí různých větví mohu zachovat svůj /etc co nejpodobnější v různých distribucích a zároveň udržet co nejvíce věcí na jednom místě (pro některé oblasti, které zjevně selhávají, je například konfigurace Apache v různých distribucích opravdu odlišná). Funguje to takto:
-
Mám svého
masterrepo s mými výchozími konfiguračními soubory. -
Nyní přicházím do kontaktu s novou distribucí, takže vytvářím novou větev založenou na mém
mastervětev na základě názvu distribuce (v tomto příkladu debian). -
Debian uchovává nějaký konfigurační soubor na jiném místě než můj
mastertak udělámgit mv file new_loc. A všechno je v pořádku. -
Přepnu zpět na
mastera změňte tento soubor, protože jsem přidal nějakou specifickou konfigurační direktivu. -
Když sloučím
masterdo méhodebianvětve se přesouvaný soubor změní, takže mohu v podstatě jen změnit většinu věcí ve svémmastervětev a musím sloučit změny v mých „distribučních“ větvích (obvykle bývají spíše mixem distribučních a účelových větví, debian server má samozřejmě určité rozdíly oproti pracovní stanici debianu, ale funkce stále fungují).
Takže v podstatě mám „obecnou konfiguraci“ v master a (řečeno v termínech objektově orientovaného programování) je zdědit do mých větví (které také mohou dědit jedna od druhé).
Kromě toho git 's mechanismy pro „cherry-pick“ commity (v tomto případě změny na /etc/ ) mi docela pomohl v době, kdy jsem potřeboval pouze části určité konfigurace.
Nyní k některým z vašich nápadů:
- Kdybych potřeboval větší integraci správce balíčků, pravděpodobně bych k tomu použil obalovací skripty (v tuto chvíli ne).
- Zacházení s upstream verzemi jako s větvemi by fungovalo dobře s
git, je to jen další větev, kterou občas sloučíte (částečně) domaster - Seznam ignorovaných v git je soubor
.gitignoreve vašem úložišti, aby to bylo pokryto.