GNU Guix

GNU Guix, GNU için bir paket yöneticisidir. Nix paket yöneticisini ve Guile Şeması uygulama programlama arayüzlerini taban almıştır. Tümüyle özgür yazılımdır.GNU Guix tasarısı Haziran 2012'de bir GNU Guile programcısı olan Ludovic Courtès tarafından başlatılmıştır.20 Ağustos 2015'te Guix'in GNU Hurd'a uyarlandığı duyurulmuştur ve Hurd'ün ilk yerli paket yöneticisi olmuştur.Guix kullanılırken her paket kendi dizinindeki bir paket deposunda son bulur, /gnu/store/xxx-package-1.2 gibi. xxx bir base32 değeridir. (Guix bu dosya isimlerini kısaltmak için bir Emacs eklentisiyle birlikte gelir.)Her kullanıcı bir profile sahiptir ve bu profiller hangi paketlerin kullanılacağını işaret eder. Profiller ayrı ayrı kullanıcıların ana dizininde depolanır, $HOME/.guix-profile gibi.Örneğin, orhan GCC 4.7.2'yi yükler. Bunun sonucunda, kendi dizininde oluşan /home/orhan/.guix-profile/bin/gcc dosyası /gnu/store/...-gcc-4.7.2/bin/gcc'yi işaret eder. Aynı makinede, inci de GCC 4.8.0 yüklemiştir. inci'nin profili /gnu/store/...-gcc-4.8.0/bin'i işaret etmektedir. Yani, GCC'nin her iki sürümü herhangi bir çatışma olmadan aynı sistem üzerinde bulunabilir.guix package komutu paketleri yönetmek için merkezi bir araçtır. Kullanıcı bazlı profiller üzerinde çalışır ve sıradan kullanıcı yetkileriyle birlikte kullanılabilir.Bu komut; kurma, silme ve yükseltme işlemlerinin tümünü gerçekleştirebilir. Belirtilen süreç başarılı olsa da olmasa da her bir yürütme aslında bir işlemdir. Böylelikle, eğer işlem sırasında guix package süreci sonlandırılırsa ya da işlem sırasında elektrik kesintisi yaşanırsa kullanıcı profili bir önceki duruma döner ve sistem kullanır halde kalır.Herhangi bir paket işlemi geri döndürülebilir. Örnek olarak, eğer bir yükseltme ciddi hatalar barındıran bir paketi yüklediyse, kullanıcı kendi profilinin gayet iyi çalışan bir önceki durumuna geri dönebilir. Benzer olarak, genel sistem yapılandırması da transaksiyonel yükseltme ve geri almaya dahildir.Paket deposundaki tüm bu paketler bir çöp yığını halini alabilir. Guix hangi paketin hala kullanıcı profilleri ile ilişkilendirildiğini bulur ve ilişkilendirilmeyen paketleri siler. Kullanıcılar profillerinin eski sürümlerini silebilir ve bunlarla bağıntılı olan eski paketler de silinmek için işaretlenebilir.Sonuçta, Guix tam anlamıyla işlevsel bir paket yöneticisidir. Her /gnu/store paket dizin ismi; derleyici, kütüphaneler, inşa betikleri gibi bu paketi inşa etmede kullanılan gereksinimlere yazılan girdilerin özetinden oluşur. Bu, belirlenen paket kurulumunun kullanıcının dağıtımın mevcut durumuna uygunluğunu denetleyebilmesini sağlar. Ayrıca bu, inşanın yeniden üretilebilirliğinin azami düzeye çıkmasına yardımcı olur.Bir /gnu/store öğesi için önceden derlenmiş ikili dosyanın harici bir kaynakta bulunması halinde Guix sadece indirir ve verileri dışa çıkartır, bunun dışında yerel olarak, bir paketi kaynağından inşa edebilir.İnşa ortamında denetim özelliği geliştiriciler için oldukça kullanışlıdır. guix environment komutu paket geliştiricilerinin paketleri için doğru inşa ortamını hızlıca kurmalarını sağlar, bu özellik sayesinde her geliştirici ayrı ayrı paket bağımlılıklarını kendi profiline kurmak zorunda kalmaz.Guix tasarısı ayrıca Guix System Distribution'ı geliştirir. Bu dağıtım Linux-libre çekirdeğini ve GNU Shepherd başlatma sistemini kullanır ve tümüyle yüklenebilir bir GNU sistemidir.