Nix - Den rent funktionelle pakkehåndtering til Linux


Nix er et kraftfuldt, rent funktionelt pakkehåndteringssystem designet til pålidelig og reproducerbar pakkehåndtering, frigivet under vilkårene i GNU LGPLv2.1. Det er det primære pakkehåndteringssystem i NixOS, en mindre kendt Linux-distribution.

Nix tilbyder atomopgraderinger og tilbagesendelser, flere versioner af pakkeinstallation, flerbrugerpakkehåndtering og ubesværet opsætning af byggemiljøer til en pakke, uanset hvilke programmeringssprog og værktøjer en udvikler bruger.

Under Nix er pakker bygget fra et funktionelt pakkesprog kaldet “Nix-udtryk”. Denne funktionelle tilgang til pakkehåndtering garanterer, at installation eller opgradering af en pakke ikke kan bryde andre pakker.

Nix har også support til flere brugere, hvilket indebærer, at normale (eller ikke-privilegerede) systembrugere sikkert kan installere pakker, og hver bruger identificeres af en profil (en samling af pakker i Nix-butikken, der vises i brugerens PATH).

Hvis en bruger har installeret en pakke, hvis en anden bruger forsøger at installere den samme pakke, vil pakken ikke blive bygget eller downloadet endnu en gang.

Den understøtter i øjeblikket Linux (i686, x86_64) og Mac OS X (x86_64). Det er dog ret bærbart, du kan prøve det på de fleste platforme, der understøtter POSIX-tråde og har en C ++ 11-kompilator.

I denne artikel viser vi, hvordan du installerer (i multibrugertilstand) og bruger Nix-pakkehåndtering i Linux. Vi vil diskutere nogle af de grundlæggende pakkehåndteringsopgaver i forhold til de almindeligt anvendte værktøjer.

Sådan installeres Nix Package Manager i Linux

Vi installerer den nyeste version af Nix (v2.1.3 i skrivende stund) i multibrugertilstand. Heldigvis er der et klar forberedt installationsscript, som du kan køre fra din shell som en normal bruger ved hjælp af følgende curl-kommando på dit system.

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

At køre ovenstående kommando downloader den nyeste nix binære tarball, og du lander i multi-user nix installationsskærmen som vist på skærmbilledet.

For at se en detaljeret liste over, hvad der vil ske under installationsprocessen, skriv y og tryk på Enter. Hvis du er tilfreds og klar til at fortsætte, skal du skrive y og trykke på Enter.

Scriptet påberåber sudo-kommando mange gange efter behov. Du skal tillade det at bruge sudo ved at svare y og trykke Enter.

Installationsprogrammet kører derefter et par tests og genererer en Nix-konfigurationsrapport, opretter build-brugere mellem bruger-id'erne 30001 og 30032 og en gruppe med gruppe-ID 30000. Indtast y for at fortsætte, når du bliver bedt om det. Det opretter byggegrupperne til de forskellige buildbrugere, gør Nixs basale bibliotekstruktur.

Det vil ændre filen/etc/bashrc, (og/etc/zshrc for zsh), hvis de findes. Bemærk, at det først sikkerhedskopierer de nævnte filer med en .backup-before-nix-udvidelse, og installationsprogrammet opretter også filen /etc/profile.d/nix.sh.

Installationsprogrammet opsætter også nix-daemon-tjenesten og nix-daemon-sokkeltjenesten, indlæser systemd-enheden til nix-daemon og starter de to ovennævnte tjenester.

Når installationen er afsluttet, skal du åbne et nyt terminalvindue for at begynde at bruge Nix. Alternativt kan du lukke og åbne din shell igen for at anvende de seneste ændringer. Kild derefter filen /etc/profile.d/nix.sh (fordi det ikke er en startfil til en shell, åbner en ny skal ikke kilde til den).

$ source /etc/profile.d/nix.sh

Kør derefter følgende kommando for at downloade nogle stier fra det officielle projektwebsted, der kræves for at Nix skal fungere. Når alle stier er downloadet og kopieret til de korrekte placeringer, vil du se en oversigt over system- og nixinstallationstypen som vist på skærmbilledet.

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

Sådan bruges Nix Package Manager i Linux

Under Nix udføres pakkehåndtering af nix-env-hjælpeprogrammet. Det bruges til at installere, opgradere og fjerne/slette pakker og til at spørge, hvilke pakker der er installeret eller er tilgængelige til installation.

Alle pakker er placeret i en Nix-kanal, som er en URL, der peger på et lager, der både indeholder en samling af Nix-udtryk og en markør til en binær cache.

Standardkanalen er Nixpkgs, og listen over kanaler, der abonnerer på, er gemt i ~/.nix-kanaler, du kan liste dem ved hjælp af følgende kommando (ingen output betyder ingen kanaler).

$ nix-channel --list

For at tilføje Nix-kanalen skal du bruge følgende kommando.

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

Før du installerer pakker, skal du starte med at opdatere Nix-kanalen; dette svarer til at køre apt-opdatering under APT-pakkehåndteringen.

$ nix-channel --update

Du kan spørge, hvilke pakker der er tilgængelige til installation ved hjælp af følgende kommando.

$ nix-env -qa

I dette eksempel installerer vi grep for at finde, at pakken er tilgængelig til installation som vist.

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

For at installere en pakke skal du bruge følgende kommando ved at angive pakkeversionen, for eksempel apache-tomcat-9.0.2.

$ nix-env -i apache-tomcat-9.0.2

På det lokale system gemmer Nix pakker i Nix-butikken, hvilket som standard er/nix/store-biblioteket, hvor hver pakke har sin egen unikke underkatalog. For eksempel er apache-tomcat-pakkerne gemt i:

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

I denne sti er de tilfældige tegn 95gmgnxlrcpkhlm00fa5ax8kvd6189py en unik identifikator for pakken, der tager hensyn til alle dens afhængigheder.

Du kan liste installerede pakker med følgende kommando.

$ nix-env -q

For at opgradere apache-tomcat-pakken kan du bruge -u opgraderingsomskifteren som vist.

$ nix-env -u apache-tomcat

Hvis du vil fjerne/slette apache-tomcat, skal du bruge flagget -e . Her slettes en pakke ikke straks fra systemet, den gøres kun ubrugt. Dette er nyttigt, fordi du vil foretage en tilbageførsel, eller det kan være i andre brugeres profiler.

$ nix-env -e apache-tomcat

Når du har fjernet en pakke, kan du lave noget affaldssamling med hjælpeprogrammet nix-collect-garbage.

$ nix-collect-garbage

Sådan fjernes Nix Package Manager i Linux

For at afinstallere Nix skal du fjerne alle nix-relaterede filer på én gang.

$ 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

På systemer med systemd skal du køre følgende kommandoer for at stoppe alle nix-relaterede tjenester og deaktivere dem.

$ 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

Derudover skal du fjerne alle referencer til Nix i disse filer:/etc/profile,/etc/bashrc og/etc/zshrc.

For mere information, se mandsiderne til ovenstående værktøjer, vi har set på.

$ man nix-channel
$ man nix-env

Du kan finde dokumentationen til Nix Package Manager på projektets websted: https://nixos.org/nix/.

Nix er en rent funktionel pakkehåndtering designet til pålidelig og reproducerbar pakkehåndtering. Det giver et interessant koncept for pakkehåndtering, der er meget adskilt fra almindeligt anvendte værktøjer i Linux som APT og mange andre.

I denne artikel viste vi, hvordan du installerer nix i multibrugertilstand, og diskuterede, hvordan man laver pakkehåndtering med Nix. Del dine tanker med os eller still spørgsmål ved hjælp af nedenstående kommentarformular. Endelig vil vi i en kommende artikel forklare flere Nix-pakkehåndteringskommandoer. Indtil da skal du forblive forbundet.