Geçmişte, aynı Linux kurulumunu üç makinede çalıştırmak, bir sürücü klonlamak ve donanımın eşleşmesini uğrursak demek anlamına geliyordu. Yeni standart: dotfile’larınızı bir araçla senkronize edin, paket listesini Git’te saklayın ve dosyalarınızın ayrı bir kanal aracılığıyla kendilerini senkronize etmesine izin verin. Bu yedi masaüstü aracı, iki ~/.zshrc dosyasını senkronize etmekten tam Nix deklaratif yeniden oluşturmaya kadar üç katmanı kapsar.
Dotfile senkronizasyon aracında nelere bakılması gerekir
Birkaç soru biçimi belirler:
- Şablonlama: farklı makinelerin aynı kaynaktan farklı konfigürasyonlara ihtiyacı var mı?
- Gizlilikler: SSH anahtarları ve API belirteçleri nasıl işlenir?
- Bootstrap: yeni bir kutuya tek bir satırdan kendi kendine kurulum yapabilir mi?
- Paket yönetimi: apt, dnf, brew veya nix’i işliyor mu?
- Tarihçe: düz Git mi istiyorsunuz, yoksa kendi günlüğü olan bir şey mi?
Hızlı karşılaştırma
| Uygulama | En iyi | Ücretsiz plan | Ücretli | Platformlar | Öne çıkan |
|---|---|---|---|---|---|
| chezmoi | Gizlilikleri olan şablonlu dotfile’lar | Evet | Ücretsiz | Linux, macOS, Windows | Şablonlar, şifreleme, makine bilincine dayalı yapılandırmalar |
| GNU Stow | Bir Git repo’sundan sembolik bağlantı çiftliği | Evet | Ücretsiz | Linux, macOS | En eski, en basit iş akışı |
| yadm | Dotfile’larınız için native Git | Evet | Ücretsiz | Linux, macOS | Bootstrap betiği, makine başına alt dal |
| dotbot | Bildirime dayalı YAML sembolik bağlantı kurulumu | Evet | Ücretsiz | Linux, macOS | Çoklu platform, minimal ayak izi |
| Ansible | Yalnızca dotfile’lar değil, tam makine yapılandırması | Evet | AAP ücretli | Linux, macOS, Windows | Bir filo veya bir dizüstü bilgisayar için bir araç |
| Syncthing | Sürekli P2P dosya senkronizasyonu | Evet | Ücretsiz | Linux, macOS, Windows | Bulut yok, doğrudan makine-makine senkronizasyonu |
| Nix Home Manager | Yeniden üretilebilir kullanıcı ortamı | Evet | Ücretsiz | Linux, macOS | Aynı config her zaman aynı kurulumu verir |
Uygulamalar
1. chezmoi — gizlilikleri olan şablonlu dotfile'lar için en iyi
chezmoi, dotfile’larınızı kaynak kodu olarak değerlendirir, makine başına şablonlar (Go text/template) ve age veya GPG aracılığıyla native şifreleme ile. Bir repo, çalışma Mac’inizi, ev Linux kutunuzu ve başsız bir sunucuyu kapsar ve farklar (e-posta, düzenleyici eklentileri, yalnızca iş girişleri) şablon koşullarında yaşar.
Neresiniz eksik: Şablon sözdizimi için öğrenme eğrisi. Şablon sonucunu sistem tarafından yönetilen bir dosyayla birleştirmek, çoğu kişinin zor yoldan öğrendiği belirli bir desen gerektirir.
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS, Windows.
İndir: chezmoi
Sonuç: Sembolik bağlantı betiğinden kurtulmuş olan herkes için mevcut standart.
2. GNU Stow — en basit olası iş akışı için en iyi
GNU Stow 1994 yılında yazılmıştır ve hala tam olarak bir şey yapar: bir paket dizininden ev dizinine sembolik bağlantılar oluşturur. Bir dotfiles repo bir Stow “paketi” haline gelir ve stow zsh içeriğine sembolik bağlantılar oluşturur. Şablon yok, gizlilik yok, sihir yok.
Neresiniz eksik: Makine özel yapılandırmaları, birden çok dal veya makine başına paket anlamına gelir. Gizliliklerin başka yerde yaşaması gerekir (şifreli bir montaj, bir şifre yöneticisi).
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS, Windows (WSL üzerinden).
İndir: GNU Stow
Sonuç: Kurulumunuz küçük olduğunda ve senkronizasyon aracı hakkında bir daha hiç düşünmek istemediğinizde doğru seçim.
3. yadm — dotfile'ları bir Git repo olarak değerlemek için en iyi
yadm (Yet Another Dotfiles Manager), Git artı dotfile’a özgü kolaylıklar: bootstrap betikleri, makine başına alt dosyalar veya işletim sistemi, ve GPG üzerinden şifreleme. Gerçekten Git’in etrafında sadece bir sarıcı olduğu için, zaten bildiğiniz her şey çalışmaya devam eder.
Neresiniz eksik: Alt dosya sözleşmesi güçlüdür ancak chezmoi’nin şablonlamasından daha az keşfedilebilir. Şifreleme hikayesi, age tabanlı araçlara kıyasla temeldir.
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS.
İndir: yadm
Sonuç: Düz bir Git repo’sundan dotfiles’e en yumuşak adım.
4. dotbot — en iyi bildirimsel küçük kurulum
dotbot bir YAML kurulum dosyasını okur ve sembolik bağlantılar oluşturur, repo klonlar ve shell komutlarını çalıştırır. Dotfiles repo’nunuza satmak için yeterince küçüktür, bu nedenle repo klonlamak ve ./install çalıştırmak yeni bir makinede tüm bootstrap’tir.
Neresiniz eksik: Şablon yok. Native şifreleme yok. Karmaşık makineler, okunması zor hale gelen uzun install.yaml dosyalarında sona erer.
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS.
İndir: GitHub’da dotbot
Sonuç: Deklaratif bir kurulum dosyası ve başka bir şey istemediğinizde doğru seçim.
5. Ansible — yapılandırma ev dizininizin ötesine geçtiğinde en iyi
Ansible, playbook’lar kümesinden tüm makineleri yönetir. Kişisel kurulum için, bir playbook paketleri yükler, kernel parametrelerini ayarlar, dotfiles’ı düşürür ve tek bir geçişte hizmetleri yapılandırır. Aynı playbook bir dizüstü bilgisayar veya homelab düğümü üzerinde çalışır.
Neresiniz eksik: Saf dotfile sorunu için overkill. Playbook çalışması sembolik bağlantı çiftliğinden daha yavaştır. Birkaç yüz satırı geçtikten sonra YAML yorgunluğu gerçektir.
Fiyat: Ücretsiz açık kaynak. Ansible Automation Platform ücretli enterprise seviyesi.
Platformlar: Linux, macOS, Windows.
İndir: Ansible
Sonuç: Dizüstü bilgisayarı ve sunucuları için bir iş akışı isteyen herkes için araç.
6. Syncthing — dosyalar için en iyi, yapılandırmalar değil
Syncthing, dotfile yöneticinizin yanında oturması gereken eşler arası dosya senkronizasyonudur. Deklaratif yapılandırmaları Git’te tutun, ancak Syncthing’in yüzlerce gigabayt Belgeler, Müzik ve proje taslak dosyalarını bulut sağlayıcısının asla dokunmadan makineler arasında taşımasına izin verin.
Neresiniz eksik: Hiç dotfile aracı değil. Kendi çatışma çözümleme alışkanlıklarınızı getirin. Büyük bir klasörün ilk senkronizasyonu, daha yavaş bağlantının izin verdiği kadar uzun sürer.
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS, Windows.
İndir: Syncthing
Sonuç: Gerçek çok makineli kurulumun diğer yarısı, dotfile aracınız tek başına değiştirmeyecektir.
7. Nix Home Manager — tam yeniden üretilebilirlik için en iyi
Nix Home Manager, tüm kullanıcı ortamınızı Nix ifadeleri içinde tanımlar: paketler, dotfiles, hizmetler, her şey. Yeni bir makine nix run home-manager -- switch alır ve flake’deki her diğer makinenin aynısı olarak gelir.
Neresiniz eksik: Nix’in öğrenme eğrisi gerçektir. Bazı proprietary uygulamaların Nix paketleri yoktur. Geri alma işlemleri işe yaradığında sihir, kanal kırdığında acı vericidir.
Fiyat: Ücretsiz, açık kaynak.
Platformlar: Linux, macOS.
İndir: Nix Home Manager
Sonuç: Gerçek yeniden üretilebilirlik için başından beri Nix’e yatırım yapmaya istekli olan herkes için doğru seçim.
Doğru olanı seçme
- Bir dizüstü bilgisayarınız varsa ve hiçbir zaman bunu tekrar düşünmek istemiyorsanız: GNU Stow veya yadm.
- Üç makineniz varsa ve biri iş ise: chezmoi.
- Deklaratif bir bootstrap ve başka bir şey istemiyorsanız: dotbot.
- Sunucularda Ansible çalıştırıyorsanız: bir playbook’u dizüstü bilgisayarınıza genişletin.
- Ayrıca veri dosyalarını senkronize etmeniz gerekiyorsa: yukarıdakilerden biriyle birlikte Syncthing.
- Yapılandırmadan rebuild iş akışı istiyorsanız: Nix Home Manager.
Sık sorulan sorular
Dotfiles repo’sunda gizlilikleri nerede saklarım? Asla düz metinde değil. chezmoi ve yadm her ikisi de istirahat halinde şifreler. Düz Git repo’ları için, belirli dosyalarda age veya GPG’yi kullanın veya gizlilikleri tamamen repo dışında tutun.
Bu araçlar macOS’ta çalışıyor mu? Bu listedeki her araç macOS’u destekler. Nix Home Manager ve chezmoi macOS ile en uyumlu olanlardır.
Makine özel yapılandırmaları nasıl işlerim? Şablonlar (chezmoi), alt dosyalar (yadm), dallar (yadm ve Stow) veya Ansible’da makine tarafından korunan bloklar. Şablon kalıbı iki makinenin ötesinde en iyi ölçeklendirilir.
Dotfiles repo’mu halka açık olarak commit etmeliyim mi? Yalnızca denetimden sonra. Hatta küçük bir yapılandırma bile genellikle bir e-posta veya yalnızca çalışma takma adı taşır. Özel daha güvenlidir.
Tarayıcı yer işaretleri veya shell geçmişi gibi sürekli değişen dosyaları nasıl senkronize ederim? Syncthing, dotfile aracı değil. Sürümü kontrol edilen dotfiles saatlik karışıklıktan hoşlanmazlar.
Nix’i sadece dotfiles için öğrenmeye değer mi? Sadece dotfiles için, hayır. Homelab’ler, geliştirme kapsayıcıları ve yeniden üretilebilir derlemeler oluşturan herkes için, evet.