Son zamanlarda kendim bir değerlendirme yaptım. Aslında bir Nix / NixOS katılımcısıyım ve dağıtım teknolojisiyle ilgilenen eski bir araştırmacıyım.
Kendimi olabildiğince gerçeklere sokmaya çalıştım, ancak tamamen tarafsız kalmam mümkün değil. Bulgularımı özetlemek için:
Her iki yaklaşım da paketleri yalıtılmış olarak saklar . Snappy uygulamaları ve çerçeveleri aşağıdaki ad kurallarını kullanarak klasörlerde depolar: /app/name/version.vendor
oysa Nix kullanır /nix/store/hash-name-version
.
Nix'in adlandırma kuralı daha güçlü, çünkü tüm inşa zamanı bağımlılıklarından türetilmiş karma önekleri kullanıyor . Nix ile bir paketin herhangi bir çeşidi arasında kolayca ayrım yapabilir ve bunları yan yana depolayabilirsiniz. Herhangi bir değişiklik (örn. Farklı derleme prosedürü, kütüphane yükseltme, derleyici yükseltme), yeni bir hash oluşturur;
Bir paket bağımlılıklarından bulmasını sağlamak için, Nix onları bağlayan statik olarak (örn değiştirerek bir yürütülebilir için RPATH
ELF ikili) veya uygun ortam değişkenlerini ayarlamak komut (örneğin bunları sararak CLASSPATH
, PYTHONPATH
, PERL5LIB
vb.)
Snappy oluşturan konteyner gibi yürütülebilir ortak FHS yerlerde onların bağımlılıklarını bulabileceği, /lib
ve/bin
Bununla birlikte, Nix Snappy'nin konteyner yaklaşımını da destekliyor, ancak bu sadece çok nadir durumlarda kullanılıyor. Kapsayıcı bir yaklaşım kullanan en belirgin Nix paketi NixOS'ta Steam'dir çünkü Steam, birbiriyle çelişen özelliklere sahip bir dağıtım aracıdır.
Snappy Ubuntu Core, temel sistemi yükseltmek (ve geri almak) için "A / B" bölümleme şemasını kullanır. O sırada yalnızca sınırlı sayıda sürümü (tipik olarak iki) destekler.
Buna karşılık, NixOS (Nix tabanlı Linux dağıtımı) oluşturan sıra Nix deposunda Nix paketlerinin dışarı taban sistemi ve çok daha güçlüdür. Henüz toplanmamış olan herhangi bir yapılandırmaya geri dönebilirsiniz. Ayrıca, nesiller arasında benzer sistem paketleri paylaşılabilir.
Her iki araç da ayrıcalıklı olmayan kullanıcı kurulumlarını destekler . Ancak, Snappy tüm dosyaları kullanıcının giriş dizininde saklar. İki kullanıcı aynı paketi yüklerse, sisteme iki kez yüklenirler.
Buna karşın, Nix paketleri aynı zamanda sıradan kullanıcıların paketleri merkezi Nix mağazasına kurmasına izin verir, böylece aynı paketler kullanıcılar arasında paylaşılabilir . Kısmen adlandırma kuralı nedeniyle (karma kullanarak) bu güvenli bir şekilde yapılabilir.
Snappy , kullanıma hazır paketlerin çalışma dışı davranışlarını kısıtlarken , Nix'in yapmaması
Snappy için fazla yardımcı olmak görünmüyor inşa kaynak kodundan paketleri. Ancak Nix, ihtiyaç duyulduğunda insanların kolayca ve otomatik olarak tüm çalışma zamanı bağımlılıklarını (derleyiciler, oluşturma araçları, kütüphaneler vb.) Kurmalarını sağlayan bir DSL'ye sahiptir.
Snappy modülerleşmeyi ve yeniden kullanımı pek desteklemez . Örnek paketlerde, tüm kütüphane bağımlılıkları statik olarak daha fazla disk alanı ve RAM tüketen paketlenmiştir. Ayrıca, belgeler çerçeveler dışında herhangi bir kolaylık sağlamaz. Ancak, çerçeveler dokümantasyona göre yeniden kullanım için uygun değildir.
Nix'in modüler hale getirme paketleri ve bağımlılıkları güvenli bir şekilde yönetme bazı önemli özellikleridir.
Umarım okumayı ilginç bulursunuz ve belki de üzerinde düşünmeye değer bulduğunuz bazı şeyler vardır.