Weboldal keresés

Nix – A tisztán funkcionális csomagkezelő Linuxhoz


A Nix egy hatékony, tisztán funkcionális csomagkezelő rendszer, amelyet megbízható és reprodukálható csomagkezelésre terveztek, a GNU LGPLv2.1 feltételei szerint. Ez az elsődleges csomagkezelő rendszer a NixOSben, egy kevésbé ismert Linux disztribúcióban.

A Nix atomi frissítéseket és visszaállításokat, a csomagtelepítés több verzióját, a többfelhasználós csomagkezelést és az összeállítási környezetek egyszerű beállítását kínálja egy csomaghoz, függetlenül attól, hogy a fejlesztő milyen programozási nyelveket és eszközöket használ.

A Nix alatt a csomagok a „Nix kifejezések” nevű funkcionális csomagnyelvből épülnek fel. A csomagkezelésnek ez a funkcionális megközelítése garantálja, hogy egy csomag telepítése vagy frissítése ne törjön meg más csomagokat.

A Nix többfelhasználós támogatással is rendelkezik, ami azt jelenti, hogy a normál (vagy nem privilegizált) rendszerfelhasználók biztonságosan telepíthetik a csomagokat, és minden felhasználót egy profil azonosít (a Nix áruházban található csomagok gyűjteménye, amelyek a felhasználó PATH-jában jelennek meg).

Ha az egyik felhasználó telepített egy csomagot, ha egy másik felhasználó megpróbálja telepíteni ugyanazt a csomagot, a csomag nem épül fel vagy nem töltődik le másodszor.

Jelenleg támogatja a Linuxot (i686, x86_64) és a Mac OS X-et (x86_64). Viszont meglehetősen hordozható, kipróbálható a legtöbb olyan platformon, amely támogatja a POSIX szálakat és rendelkezik C++11 fordítóval.

Ebben a cikkben bemutatjuk, hogyan kell telepíteni (többfelhasználós módban) és használni a Nix csomagkezelőt Linuxon. Az általánosan használt eszközökhöz kapcsolódóan néhány alapvető csomagkezelési feladatot tárgyalunk.

A Nix Package Manager telepítése Linux alatt

A Nix legújabb verzióját (az írás idején v2.1.3) többfelhasználós módban telepítjük. Szerencsére van egy készen elkészített telepítőszkript, amelyet normál felhasználóként futtathat a shellből a következő curl paranccsal a rendszeren.

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

A fenti parancs futtatása letölti a legújabb nix bináris tarballt, és a képernyőképen látható többfelhasználós nix-telepítési képernyőre kerül.

A telepítési folyamat során bekövetkező események részletes listájának megtekintéséhez írja be az y kifejezést, és nyomja meg az Enter billentyűt. Ha elégedett, és készen áll a folytatásra, írja be az y kifejezést, és nyomja meg az Enter billentyűt.

A szkript szükség szerint többször meghívja a sudo parancsot. Engedélyeznie kell a sudo használatát az y megválaszolásával és az Enter lenyomásával.

A telepítő ezután lefuttat néhány tesztet, és létrehoz egy Nix konfigurációs jelentést, létrehozza a build felhasználókat a 30001 és 30032 felhasználói azonosítók között, valamint egy csoportot a csoportazonosítóval. 30 000et. A folytatáshoz írja be az y parancsot. Ez beállítja a build csoportokat a különböző build felhasználók számára, létrehozza a Nix alapvető könyvtárszerkezetét.

Módosítja a /etc/bashrc fájlt (és a /etc/zshrc fájlt a zsh esetén), ha létezik. Vegye figyelembe, hogy először készít biztonsági másolatot az említett fájlokról .backup-before-nix kiterjesztéssel, és a telepítő létrehozza a /etc/profile.d/nix.sh fájlt is.

A telepítő beállítja a nix-daemon szolgáltatást és a nix-daemon socket szolgáltatást is, betölti a rendszeregységet a nix-démonhoz, és elindítja a két fent említett szolgáltatást.

A telepítés befejezése után meg kell nyitnia egy új terminálablakot a Nix használatának megkezdéséhez. Alternatív megoldásként zárja be, majd nyissa meg újra a héjat a legutóbbi módosítások alkalmazásához. Ezután szerezze be a /etc/profile.d/nix.sh fájlt (mivel ez nem egy shell indítófájl, új parancsértelmező megnyitása nem adja meg a forrást).

source /etc/profile.d/nix.sh

Ezután futtassa a következő parancsot, hogy letölthessen néhány elérési utat a projekt hivatalos webhelyéről, amelyek szükségesek a Nix működéséhez. Miután az összes elérési utat letöltötte és a megfelelő helyre másolta, megjelenik a rendszer és a nix telepítési típusának összefoglalója, ahogy a képernyőképen is látható.

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

A Nix Package Manager használata Linux alatt

A Nix alatt a csomagkezelést a nix-env segédprogram végzi. Csomagok telepítésére, frissítésére és eltávolítására/törlésére szolgál, valamint arra, hogy lekérdezze, milyen csomagok vannak telepítve vagy állnak rendelkezésre.

Minden csomag egy Nix csatornában található, amely egy olyan tárra mutat, amely Nix kifejezések gyűjteményét és egy bináris gyorsítótárra mutató mutatót is tartalmaz.

Az alapértelmezett csatorna a Nixpkgs, és a feliratkozott csatornák listája a ~/.nix-channels mappában van tárolva, listázhatja őket a következő paranccsal (nincs kimenet, azt jelenti, hogy nincsenek csatornák) .

nix-channel --list

A Nix csatorna hozzáadásához használja a következő parancsot.

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

Mielőtt bármilyen csomagot telepítene, kezdje a Nix csatorna frissítésével; ez hasonló az apt frissítés futtatásához az APT csomagkezelő alatt.

nix-channel --update

A következő paranccsal lekérdezheti, hogy milyen csomagok érhetők el a telepítéshez.

nix-env -qa

Ebben a példában az Apache Tomcat kiszolgálót az előző paranccsal és a grep-pel együtt telepítjük, hogy megtaláljuk a csomagot az ábrán látható módon.

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

Csomag telepítéséhez használja a következő parancsot a csomag verziójának megadásával, például apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

A helyi rendszeren a Nix a csomagokat a Nix store-ban tárolja, amely alapértelmezés szerint a /nix/store könyvtár, ahol minden csomagnak saját egyedi alkönyvtára van. Például az apache-tomcat csomagok a következő helyen vannak tárolva:

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

Ezen az útvonalon a 95gmgnxlrcpkhlm00fa5ax8kvd6189py véletlenszerű karakterek a csomag egyedi azonosítói, amelyek figyelembe veszik annak összes függőségét.

A telepített csomagokat a következő paranccsal listázhatja.

nix-env -q

Az apache-tomcat csomag frissítéséhez használja a -u frissítési kapcsolót az ábrán látható módon.

nix-env -u apache-tomcat

Ha el szeretné távolítani/törölni az apache-tomcat fájlt, használja a -e jelzőt. Itt egy csomag nem törlődik azonnal a rendszerből, csak használaton kívül lesz. Ez azért hasznos, mert vissza szeretné állítani, de előfordulhat, hogy más felhasználók profiljában is szerepel.

nix-env -e apache-tomcat

Egy csomag eltávolítása után a nix-collect-garbage segédprogrammal szemétgyűjtést végezhet.

nix-collect-garbage

A Nix Package Manager eltávolítása Linux rendszerben

A Nix eltávolításához távolítsa el az összes nix-hez kapcsolódó fájlt egyszerre.

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

A systemd rendszerű rendszereken futtassa a következő parancsokat az összes nix-hez kapcsolódó szolgáltatás leállításához és letiltásához.

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

Ezenkívül el kell távolítania a Nix-re való hivatkozásokat a következő fájlokból: /etc/profile, /etc/bashrc és /etc/zshrc >.

További információkért tekintse meg az általunk megvizsgált fenti segédprogramok kézikönyvoldalait.

man nix-channel
man nix-env

A Nix Package Manager dokumentációja megtalálható a projekt weboldalán: https://nixos.org/nix/.

Összegzés

A Nix egy tisztán funkcionális csomagkezelő, amelyet megbízható és reprodukálható csomagkezelésre terveztek. Érdekes csomagkezelési koncepciót kínál, amely nagyon különbözik a Linuxban gyakran használt eszközöktől, mint például a YUM, APT és sok más.

Ebben a cikkben bemutattuk, hogyan telepíthető a nix többfelhasználós módban, és megvitattuk, hogyan lehet csomagkezelést végezni a Nix-szel. Ossza meg velünk gondolatait, vagy tegye fel kérdéseit az alábbi megjegyzés űrlapon keresztül. Végül egy következő cikkben további Nix csomagkezelési parancsokat fogunk elmagyarázni. Addig is maradjon kapcsolatban.