Nix - Linux için Tamamen İşlevsel Paket Yöneticisi


Nix, GNU LGPLv2.1 koşulları altında yayımlanan, güvenilir ve tekrarlanabilir paket yönetimi için tasarlanmış güçlü, tamamen işlevsel bir paket yönetim sistemidir. Daha az bilinen bir Linux dağıtımı olan NixOS'taki birincil paket yönetim sistemidir.

Nix, geliştiricinin kullandığı programlama dilleri ve araçları ne olursa olsun, atomik yükseltmeler ve geri almalar, paket kurulumunun birden çok sürümü, çok kullanıcılı paket yönetimi ve bir paket için derleme ortamlarının zahmetsiz kurulumu sunar.

Nix altında paketler, "Nix ifadeleri" adı verilen işlevsel bir paket dilinden oluşturulur. Paket yönetimine yönelik bu işlevsel yaklaşım, bir paketin kurulmasının veya yükseltilmesinin diğer paketleri bozmayacağını garanti eder.

Nix ayrıca çoklu kullanıcı desteğine de sahiptir; bu, normal (veya ayrıcalıklı olmayan) sistem kullanıcılarının paketleri güvenli bir şekilde kurabileceği ve her kullanıcının bir profil (Nix mağazasında kullanıcının PATH'inde görünen bir paket koleksiyonu) tarafından tanımlandığı anlamına gelir.

Bir kullanıcının bir paket kurması durumunda, başka bir kullanıcı aynı paketi kurmaya çalışırsa, paket ikinci kez oluşturulmayacak veya indirilmeyecektir.

Şu anda Linux (i686, x86_64) ve Mac OS X'i (x86_64) desteklemektedir. Ancak oldukça taşınabilirdir, POSIX iş parçacıklarını destekleyen ve C++ 11 derleyicisine sahip çoğu platformda deneyebilirsiniz.

Bu makalede, Linux'ta Nix paket yöneticisinin nasıl kurulacağını (çoklu kullanıcı modunda) ve kullanılacağını göstereceğiz. Yaygın olarak kullanılan araçlarla ilgili olarak temel paket yönetimi görevlerinden bazılarını tartışacağız.

Linux'ta Nix Paket Yöneticisi Nasıl Kurulur

Nix'in en son sürümünü (bu yazının yazıldığı sırada v2.1.3) çoklu kullanıcı modunda yükleyeceğiz. Neyse ki normal bir kullanıcı olarak sisteminizde aşağıdaki curl komutunu kullanarak kabuğunuzdan çalıştırabileceğiniz hazır bir kurulum scripti mevcut.

sh <(curl https://nixos.org/nix/install) --daemon

Yukarıdaki komutu çalıştırdığınızda en son nix ikili tarball'ı indirilecek ve ekran görüntüsünde gösterildiği gibi çok kullanıcılı nix kurulum ekranına ulaşacaksınız.

Kurulum işlemi sırasında ne olacağının ayrıntılı bir listesini görüntülemek için y yazın ve Enter'a basın. Memnunsanız ve devam etmeye hazırsanız y yazın ve Enter'a basın.

Betik, gerektiğinde birçok kez sudo komutunu çağıracaktır. y yanıtını verip Enter tuşuna basarak sudo kullanmasına izin vermeniz gerekir.

Yükleyici daha sonra birkaç test çalıştıracak ve bir Nix yapılandırma raporu oluşturacak, 30001 ve 30032 kullanıcı kimlikleri arasında derleme kullanıcıları ve grup kimliğine sahip bir grup oluşturacaktır. 30000. İstendiğinde devam etmek için y girin. Farklı yapı kullanıcıları için derleme grupları kuracak ve Nix'in temel dizin yapısını oluşturacaktır.

Varsa, /etc/bashrc dosyasını (ve zsh için /etc/zshrc) dosyasını değiştirir. İlk önce bahsedilen dosyaları .backup-before-nix uzantısıyla yedeklediğini ve yükleyicinin ayrıca /etc/profile.d/nix.sh dosyasını oluşturduğunu unutmayın.

Yükleyici ayrıca nix-daemon hizmetini ve nix-daemon soket hizmetini ayarlayacak, nix-daemon için systemd birimini yükleyecek ve yukarıda belirtilen iki hizmeti başlatacaktır.

Kurulum tamamlandıktan sonra Nix'i kullanmaya başlamak için yeni bir terminal penceresi açmanız gerekir. Alternatif olarak, son değişiklikleri uygulamak için kabuğunuzu kapatıp yeniden açın. Daha sonra /etc/profile.d/nix.sh dosyasını kaynaklayın (çünkü bu bir kabuk başlangıç dosyası değildir, yeni bir kabuk açmak onu kaynaklamaz).

source /etc/profile.d/nix.sh

Daha sonra, resmi proje web sitesinden Nix'in çalışması için gereken bazı yolları indirmek üzere aşağıdaki komutu çalıştırın. Tüm yollar indirilip doğru konumlara kopyalandıktan sonra ekran görüntüsünde gösterildiği gibi sistem ve nix kurulum türü özetini göreceksiniz.

nix-shell -p nix-info --run "nix-info -m"

Linux'ta Nix Paket Yöneticisi Nasıl Kullanılır

Nix altında paket yönetimi nix-env yardımcı programı tarafından gerçekleştirilir. Paketleri kurmak, yükseltmek ve kaldırmak/silmek ve hangi paketlerin kurulu olduğunu veya kurulum için uygun olduğunu sorgulamak için kullanılır.

Tüm paketler, hem Nix ifadeleri koleksiyonlarını hem de ikili önbelleğe yönelik bir işaretçiyi içeren bir depoya işaret eden bir URL olan bir Nix kanalında bulunur.

Varsayılan kanal Nixpkgs'dir ve abone olunan kanalların listesi ~/.nix-channels'da saklanır; aşağıdaki komutu kullanarak bunları listeleyebilirsiniz (çıkış yoksa kanal yok demektir) .

nix-channel --list

Nix kanalını eklemek için aşağıdaki komutu kullanın.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Herhangi bir paketi kurmadan önce Nix kanalını güncelleyerek başlayın; bu, APT paket yöneticisi altında apt update'i çalıştırmaya benzer.

nix-channel --update

Aşağıdaki komutu kullanarak kurulum için hangi paketlerin mevcut olduğunu sorgulayabilirsiniz.

nix-env -qa

Bu örnekte, gösterildiği gibi paketin kurulmaya uygun olduğunu bulmak için önceki komutu grep ile birlikte kullanarak Apache Tomcat sunucusunu kuracağız.

nix-env -qa | grep "apache-tomcat"

Bir paket yüklemek için paket sürümünü belirterek aşağıdaki komutu kullanın; örneğin apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Yerel sistemde Nix, paketleri varsayılan olarak /nix/store dizini olan ve her paketin kendi benzersiz alt dizinine sahip olduğu Nix mağazasında saklar. Örneğin, Apache-Tomcat paketleri şu konumda depolanır:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

Bu yolda, 95gmgnxlrcpkhlm00fa5ax8kvd6189py rastgele karakterleri, paketin tüm bağımlılıklarını hesaba katan benzersiz bir tanımlayıcıdır.

Kurulu paketleri aşağıdaki komutla listeleyebilirsiniz.

nix-env -q

Apache-Tomcat paketini yükseltmek için gösterildiği gibi -u yükseltme anahtarını kullanabilirsiniz.

nix-env -u apache-tomcat

Apache-Tomcat'i kaldırmak/silmek istiyorsanız -e işaretini kullanın. Burada bir paket sistemden hemen silinmez, sadece kullanılmaz hale getirilir. Bu, geri alma işlemi yapmak istediğiniz veya diğer kullanıcıların profillerinde olabileceği için kullanışlıdır.

nix-env -e apache-tomcat

Bir paketi kaldırdıktan sonra nix-collect-garbage yardımcı programını kullanarak bir miktar çöp toplama işlemi yapabilirsiniz.

nix-collect-garbage

Linux'ta Nix Paket Yöneticisi Nasıl Kaldırılır

Nix'i kaldırmak için nix ile ilgili tüm dosyaları tek seferde kaldırın.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Systemd bulunan sistemlerde, nix ile ilgili tüm hizmetleri durdurmak ve devre dışı bırakmak için aşağıdaki komutları çalıştırın.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Ayrıca şu dosyalardaki Nix referanslarını da kaldırmanız gerekir: /etc/profile, /etc/bashrc ve /etc/zshrc .

Daha fazla bilgi için yukarıda incelediğimiz yardımcı programların kılavuz sayfalarına bakın.

man nix-channel
man nix-env

Nix Paket Yöneticisi belgelerini proje web sitesinde bulabilirsiniz: https://nixos.org/nix/.

Özet

Nix, güvenilir ve tekrarlanabilir paket yönetimi için tasarlanmış tamamen işlevsel bir paket yöneticisidir. YUM, APT ve diğerleri gibi Linux'ta yaygın olarak kullanılan araçlardan çok farklı, ilginç bir paket yönetimi konsepti sağlar.

Bu yazımızda çoklu kullanıcı modunda nix kurulumunun nasıl yapıldığını gösterdik ve Nix ile paket yönetiminin nasıl yapılacağını anlattık. Aşağıdaki yorum formunu kullanarak düşüncelerinizi bizimle paylaşın veya sorularınızı sorun. Son olarak gelecek bir makalede daha fazla Nix paket yönetimi komutunu açıklayacağız. O zamana kadar bağlantıda kalın.