Linux sistemimin güncellemelerini Git'in yaptığı gibi "revizyonlar" içinde ileri geri hareket ettirerek yönetmek istiyorum . Bunu nasıl yapabilirim?
Linux sistemimin güncellemelerini Git'in yaptığı gibi "revizyonlar" içinde ileri geri hareket ettirerek yönetmek istiyorum . Bunu nasıl yapabilirim?
Yanıtlar:
Muhtemelen Nix paket yöneticisini kullanan NixOS'a bakmalısınız .
NixOS, sistem konfigürasyon yönetiminde son teknolojiyi geliştirmeyi amaçlayan bir GNU / Linux dağıtımıdır. Mevcut dağıtımlarda, yükseltmeler gibi işlemler tehlikelidir: bir paketi yükseltmek diğer paketlerin bozulmasına neden olabilir, tüm sistemi yükseltmek sıfırdan yeniden yüklemekten çok daha az güvenilirdir, bir yapılandırma değişikliğinin sonuçlarının ne olacağını güvenle test edemezsiniz, sistemdeki değişiklikleri kolayca geri alamazsınız, vb.
Muhtemelen aradığınız şey, yapılandırma yönetimi araçları olarak adlandırılır . Aralarından seçim yapabileceğiniz birkaç tane var ama hangisinin herhangi bir durumda en iyisi olduğu çok öznel.
Şahsen Kukla'nın başlaması oldukça kolay buldum , ancak diğer popüler seçenekler Tuz ve Ansible .
Bu, sorunuz için aşırıya kaçmış olabilir, ancak sistem düzeyinde / büyük değişiklikleri geri almanın en kolay yolu anlık görüntüdür:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
Donanımınızın ayrıntılarından bahsetmediniz, ancak git'i bildiğiniz gibi görmek, daha karmaşık bir dosya sistemi kullanmakla ilgilenebileceğinizi hayal etmek için çok fazla bir şey olmazdı. Yeni nesil bir dosya sistemi kullanacak olsaydınız (click-bait-y adını görmezden gel), terminalinize delinmiş bir komutla tüm sisteminizi tamamen "geri sarabilirsiniz". Yapılan tüm değişiklikler çok az gecikme / çabayla geri alınacaktır. ZFS sizin için en iyi seçenektir ve sizin için buna değer bir şey olup olmadığını görmek için bu şaşırtıcı Ars makalesine başvurabilirsiniz (birçok başka harika özellik de vardır):
"Güncellemeler" ile ne kastettiğinize bağlı olarak, sistem yapılandırmasındaki değişiklikleri otomatik olarak kaydetmenize ve daha önceki yapılandırmalara dönmenize izin veren etckeeper gibi yapılandırma yönetimi araçlarıyla ilgilenebilirsiniz .
Git tanıdık bir araçsa ve "güncellemeler" ile "sistem paketlerinde güncellemeler" veya "sunucuda depolanan tüm dosyalarda güncellemeler" yerine "sistem yapılandırmasında güncellemeler" anlamına geliyorsa, aradığınız şey bu olabilir için.
Kukla, Ansible, Etckeeper vb.Gibi araçları kullansanız da, tüm domuzlara (örneğin başka bir cevapta belirtildiği gibi anlık görüntü) gitmeden veri kaybı olmadan temiz bir şekilde "geri" döndürülmesinin her zaman mümkün olmadığını düşünmeye değer. Doğru yaklaşım sizin durumunuza bağlı olacaktır (örneğin, geri çekme sırasında müşteri siparişlerini kaybedebileceğiniz bir üretim sistemi için anlık görüntü çekimi uygun değildir).
Geçmişte OpenVMS kullandım , varsayılan olarak bir sürüm dosya sistemi ile birlikte gelir .
Kukla gibi araçlar yeterince ilerlemiyorsa, aradığınız dosya sistemi sürümleri olabilir.
Tüm sisteminizi (çekirdek sürümü dahil) git gibi yönetmek istiyorsanız, NixOS'u arıyorsunuz .
Daha az ilgili bir sürüm için, neredeyse tüm unixlerden NixOS'un paket yöneticisi nix'i kullanabilirsiniz. Nix basit bir kullanıcı olarak kurulabilir, ancak root olarak kurmak daha kolaydır. Nix kurulduktan sonra, paketleri ayrıcalıklı olmayan bir kullanıcı olarak yüklemek için kullanabilirsiniz ve mevcut paket yöneticinizle sorunsuz çalışır ve çakışma olmadan çalışır. Nix'i sisteminizden tamamen kaldırmak da çok kolaydır, bu yüzden denememek için hiçbir bahane yoktur. ;-)
Sorunuzu doğrudan ele almak için Nix, kurulu tüm sisteminizi, bir git taahhüdü gibi, kurulu tüm paketlerin çok özel sürümlerine bir dizi işaretçi için bir işaretçi olarak tanımlar.
Nix bir paketi yükselttiğinde, paketler için yeni bir işaretçi grubuna işaret eden yeni bir ortam yaratır (çoğunlukla mevcut olanlara, güncellenmemiş paketler için; yine, bu çoğunlukla yeni bir git işlemine çok benzer. önceki değiştirilmemiş dosyaları ve değiştirilmiş dosyaların birkaç yeni sürümünü gösterir).
Tabii ki, ortamın önceki bir sürümüne geçmek ve inanıyorum ki, çatal (yani sondan daha eski olana dayanan yeni bir ortam oluşturmak). Belirli bir kabuk için bir ortam yüklenebilir (aslında, bir kabuk için kullanılabilen ortam değişkenleri kümesidir, dolayısıyla adı), böylece aynı makinedeki farklı projeler için kolayca farklı ortamlara sahip olabilirsiniz. Bağımlılık olmayan bir projenin bir kütüphanenin başka bir sürümüne ihtiyacı olduğu için artık bağımlılık sorunu yok!
NixOS bunu bir sonraki seviyeye taşıyor ve çekirdek dahil tüm bilgisayarınızı benzer bir şekilde yöneterek tüm makinenin çok düşük riskli yükseltmelerine izin veriyor.
Hepsini okumayı bitirmedim, ama ölümcül Nix haplarını Nix'e giriş olarak öneriyorum .
Deneme türü sizseniz, tüm dosya sisteminizi yerel bir git deposunda kontrol etmeyi deneyebilirsiniz. Bu ... ilginç olurdu, sanırım.
git init
kök dizinde /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
veya benzeri öğeler ekleyinBazı faydaları:
gitk
ve benzerigit diff
Bazı tuhaflıklar şunları içerebilir:
git
umarım kökte bir kaynak kodu dizinindeyken beklendiği gibi çalışır git
kapsayıcıya .