GNU Guix

Vikipedi, özgür ansiklopedi
Şuraya atla: kullan, ara
GNU Guix
Guix-logo.svg
Geliştirici(ler) GNU Tasarısı
İlk yayınlanma 22 Kasım 2012 (5 yıl önce) (2012-11-22)
Kararlı sürüm 0.14.0 / 7 Aralık 2017 (41 saat önce) (2017-12-07)[1]
Programlama dili Guile Scheme, C++ (Nix çekirdeği)
Tür Paket yönetim sistemi
Lisans GNU Genel Kamu Lisansı
Resmî sitesi gnu.org/software/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.[2][3]

Tarihçesi[değiştir | kaynağı değiştir]

  • GNU Guix tasarısı Haziran 2012'de bir GNU Guile programcısı olan Ludovic Courtès tarafından başlatılmıştır.[4]
  • GNU Tasarısı Kasım 2012'de GNU Guix'in ilk sürümünü duyurmuştur.
  • 20 Ağustos 2015'te Guix'in GNU Hurd'a uyarlandığı duyurulmuştur[5] ve Hurd'ün ilk yerli paket yöneticisi olmuştur.[6]

Özellikler[değiştir | kaynağı değiştir]

  • 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.[7]

Guix System Distribution[değiştir | kaynağı değiştir]

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.

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Courtès, Ludovic. "GNU Guix and GuixSD 0.14.0 released". https://www.gnu.org/software/guix/blog/2017/gnu-guix-and-guixsd-0.14.0-released/. Erişim tarihi: 8 Aralık 2017. 
  2. ^ Ludovic Courtès (2013). "Functional Package Management with Guix". Madrid, İspanya: European Lisp Symposium. 10 Ekim 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20151010051503/https://en.wikisource.org/wiki/Functional_Package_Management_with_Guix. 
  3. ^ "Introducing GNU Guix". 13 Mayıs 2013 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20130513205034/http://lists.gnu.org/archive/html/gnu-system-discuss/2012-11/msg00000.html. Erişim tarihi: 26 Ocak 2016. 
  4. ^ "Re: A GNU Distribution". 13 Mayıs 2013 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20130513221044/http://lists.gnu.org/archive/html/gnu-system-discuss/2012-06/msg00003.html. Erişim tarihi: 26 Ocak 2016. 
  5. ^ "[GSoC update Porting Guix to GNU/Hurd"]. 3 Kasım 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20151103061326/https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00379.html. Erişim tarihi: 26 Ocak 2016. 
  6. ^ "GNU Guix Package Manager Ported To GNU Hurd". Phoronix. 25 Eylül 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20150925141717/https://www.phoronix.com/scan.php?page=news_item&px=GNU-Hurd-Gets-Guix. Erişim tarihi: 26 Ocak 2016. 
  7. ^ "GNU Guix Reference Manual: Features". GNU. 24 Temmuz 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20150724095514/http://www.gnu.org:80/software/guix/manual/html_node/Features.html. Erişim tarihi: 26 Ocak 2016.