Snappy, Nix ve Guix ile nasıl bağlantılı?

21

Bir karşılaştırma için aradım ama şu an olmayan bir şey buldum ve şu anda bunu yapmak için yeterince iyi bilgi sahibi değilim.

Hepsi işlem güncellemeleri sağlar, ancak farklı düzeylerde koruma sağlar.

  • Snappy, ikili bağımlılıkların birden çok sürümünü sağlamak için kitaplıklarda statik olarak derler. Meta veri olarak sağlanan (ve gerekli?) Hizmetleri beyan eder. Paket, tek bir görüntü olarak sağlanıyor mu?
  • Nix, ikili bağımlılıkların birden çok sürümünü sağlamak için dinamik bağlantıyla ilgilenir mi? Sağlanan ve ihtiyaç duyulan hizmetleri meta veri olarak beyan eder. Paket, bağımlılıklar ile ilgili bir depo aracılığıyla sağlanır.
  • Guix, Nix gibidir, ancak GNU entegrasyonuna sahiptir.

Nix ve Guix arasında daha derinlemesine bir karşılaştırma Sander van der tarafından verilir. Burg , ayrıntılı olarak çalışmadım. Canonical'daki birisinin mevcut çözümlerin bir analizini yaptığını tahmin ediyorum. CoreOS gibi görüntülere dayanan başka dağıtım sistemleri de var.

Peki, Snappy Ubuntu Nix ve Guix ile nasıl bağlantılı? Önemli farklılıklar nelerdir?

    
sordu payload 10.02.2015 17:42

1 cevap

28

Son zamanlarda kendim bir değerlendirme yaptım. Aslında Nix / NixOS'un bir üyesi ve dağıtım teknolojisiyle ilgilenen eski araştırmacıyım.

Kendimi mümkün olduğu kadar gerçeklere tutmaya çalıştım, ama tamamen tarafsız olmak imkansız. Bulgularımı özetlemek gerekirse:

  • Her ikisi de, paketleri yalıtımda depolar. Snappy uygulamaları ve çerçeveleri aşağıdaki ad kurallarını kullanarak klasörlerde depolar: /app/name/version.vendor , Nix /nix/store/hash-name-version kullanır.

    Nix'in adlandırma kuralı daha güçlüdür, çünkü tüm oluşturma zamanı bağımlılıkları 'dan türetilen karma önekleri kullanır. Nix ile bir paketin herhangi bir çeşidi arasında kolayca ayrım yapabilir ve yan yana saklayabilirsiniz. Herhangi bir değişiklik (ör. Farklı derleme prosedürü, kütüphane yükseltmesi, derleyici yükseltmesi), olası herhangi bir varyantı yan yana saklamayı mümkün kılan yeni bir karma oluşturma sağlar.

  • Bir paketin bağımlılıklarını bulmasına izin vermek için, Nix onları statik olarak bir uygulamacıya (ör. bir ELF ikili dosyasının RPATH 'sini değiştirerek) veya uygun ortamı kuran komut dosyalarına yerleştirerek bağlar. değişkenler (ör. CLASSPATH , PYTHONPATH , PERL5LIB , vb.).

    Snappy, kapsayıcılar oluşturur; burada yürütülebilir dosyalar bağımlılıklarını /lib ve /bin

    gibi ortak FHS konumlarında bulabilirler.

    Ancak, Nix ayrıca Snappy'nin konteyner yaklaşımını destekliyor ancak bu sadece çok nadir durumlarda kullanılıyor. Kapsayıcı bir yaklaşım kullanan en önemli Nix paketi, NixOS'ta Steam'dir, çünkü Steam, çakışan özelliklere sahip bir dağıtım aracıdır.

  • Snappy Ubuntu Core, temel sistemi yükseltmek (ve geri almak) için bir "A / B" bölümleme şeması kullanır. Yalnızca o anda sınırlı sayıda sürümü (genellikle iki) destekler.

    Buna karşılık, NixOS (Nix tabanlı Linux dağıtımı), Nix deposundaki Nix paketlerinin temel sistemini oluşturur ve çok daha güçlüdür. Henüz çöp toplanmamış olan herhangi bir önceki yapılandırmaya geri dönebilirsiniz. Dahası, nesiller arasındaki benzer sistem paketleri paylaşılabilir.

  • Her iki araç da ayrıcalıklı olmayan kullanıcı yüklemelerini destekler. Ancak, Snappy kullanıcının ana dizinindeki tüm dosyaları depolar. Aynı paketi yüklemek için iki kullanıcı olursa, sisteme iki kez yüklenir.

    Buna karşılık, Nix paketleri sıradan kullanıcıların merkezi Nix deposunda paketleri yüklemelerine de olanak tanır, böylece kullanıcılar arasında aynı paketler paylaşılabilir olabilir. Kısmen adlandırma kuralı nedeniyle (karma kullanımı) bu güvenli bir şekilde yapılabilir.

  • Snappy kutuları paketlerin çalışma zamanı davranışını

  • Snappy, kullanıcıların paketlerini kaynak kodundan yapmasına yardımcı olmaz. Ancak Nix, kullanıcıların bunu yapabilmelerine olanak tanıyan bir DSL'ye sahiptir ve gerektiğinde tüm kurulum zamanı bağımlılıklarını (derleyiciler, derleme araçları, kütüphaneler vb.) Otomatik olarak yükler.

  • Snappy modülerleştirmeyi ve yeniden kullanmayı desteklemez. Örnek paketlerde, tüm kitaplık bağımlılıkları çok daha fazla disk alanı ve RAM tüketen paketlenmiştir. Dahası, belgeler çerçeveler dışında herhangi bir tesis sunmuyor gibi görünüyor. Ancak, çerçeveler belgelere göre yeniden kullanılmak istenmiyor

    Nix modülerleştirici paketler ile ve bağımlılıkları güvenli bir şekilde yönetme bazı temel özellikleridir.

Tam blog yayınını şu adreste bulabilirsiniz: İşte

Umarım okumayı ilginç bulursunuz ve belki de üzerinde düşünmeye değer bulduğunuz bazı şeyler vardır.

    
verilen cevap Sander van der Burg 30.04.2015 22:29

Etiketlerdeki diğer soruları oku