Solusi turnkey apa yang ada untuk menempatkan /etc
di bawah kontrol versi, di bawah berbagai kesatuan? Turnkey tidak selalu berarti bagian dari instalasi dasar, tetapi fitur berikut akan bagus:
- menghubungkan ke perintah VCS untuk mengelola metadata (kepemilikan, izin);
- integrasi dengan pengelola paket (berjalan secara otomatis sebelum dan sesudah penginstalan, menangani peningkatan dengan cerdas);
- perlakukan versi file upstream sebagai cabang;
- daftar abaikan yang sudah diisi sebelumnya;
- dukungan untuk beberapa VCS dasar (terutama yang terdistribusi).
Saya menggunakan etckeeper di bawah Debian dan turunannya. Ini memiliki semua fitur di atas kecuali bahwa itu tidak melacak versi upstream. Saya ingin belajar tentang alternatif, khususnya di *BSD.
Jawaban yang Diterima:
Di bawah Gentoo, alat untuk mengelola perubahan yang dipicu oleh paket ke /etc
(disebut dispatch-conf
) mendukung rcs untuk melacak perubahan tetapi itu tidak terlalu kuat.
Saya cenderung membuat versi /etc
saya melalui git
, terutama karena dengan menggunakan cabang yang berbeda saya dapat menyimpan /etc
. saya semirip mungkin melalui distribusi yang berbeda sambil menyimpan sebanyak mungkin barang di satu tempat (untuk beberapa area yang jelas-jelas gagal, konfigurasi Apache misalnya sangat berbeda di seluruh distribusi yang berbeda). Ini bekerja seperti ini:
-
Saya memiliki
master
repo dengan file konfigurasi default saya. -
Sekarang saya berhubungan dengan distro baru jadi saya membuat cabang baru berdasarkan
master
saya cabang berdasarkan nama distribusi (dalam contoh ini debian). -
Debian menyimpan beberapa file konfigurasi di lokasi yang berbeda dari
master
saya jadi saya melakukangit mv file new_loc
. Dan semuanya baik-baik saja. -
Saya beralih kembali ke
master
dan ubah file itu karena saya menambahkan beberapa arahan konfigurasi khusus. -
Saat saya menggabungkan
master
kedebian
saya cabang file yang dipindahkan diubah, jadi pada dasarnya saya dapat mengubah sebagian besar hal dalammaster
saya cabang dan hanya perlu menggabungkan perubahan di cabang "distribusi" saya (biasanya mereka cenderung lebih merupakan campuran dari cabang distribusi dan tujuan, server debian jelas memiliki beberapa perbedaan dengan workstation debian tetapi fiturnya masih berfungsi).
Jadi pada dasarnya saya memiliki "konfigurasi umum" di master
dan (untuk mengatakannya dalam istilah pemrograman berorientasi objek) mewarisinya ke cabang saya (yang juga dapat saling mewarisi).
Selain itu, git
mekanisme untuk komit "cherry-pick" (dalam hal ini berubah menjadi /etc/
) cukup membantu saya saat saya hanya membutuhkan bagian dari konfigurasi tertentu.
Sekarang untuk beberapa ide Anda:
- Jika saya membutuhkan lebih banyak integrasi pengelola paket, saya mungkin akan menggunakan skrip pembungkus untuk ini (saat ini saya tidak membutuhkannya).
- memperlakukan versi upstream sebagai cabang akan bekerja dengan baik dengan
git
, itu hanya cabang lain yang terkadang Anda gabungkan (sebagian) menjadimaster
- Daftar abaikan di git adalah file
.gitignore
di repo Anda sehingga tercakup.