Nix - Den rent funksjonelle pakkebehandleren for Linux


Nix er et kraftig, rent funksjonelt pakkehåndteringssystem designet for pålitelig og reproduserbar pakkeadministrasjon, utgitt under vilkårene i GNU LGPLv2.1. Det er det primære pakkehåndteringssystemet i NixOS, en mindre kjent Linux-distribusjon.

Nix tilbyr atomiske oppgraderinger og tilbakeføringer, flere versjoner av pakkeinstallasjon, flerbrukerpakkeadministrasjon og uanstrengt oppsett av byggemiljøer for en pakke, uavhengig av hvilke programmeringsspråk og verktøy en utvikler bruker.

Under Nix bygges pakker fra et funksjonelt pakkespråk kalt «Nix-uttrykk ». Denne funksjonelle tilnærmingen til pakkeadministrasjon garanterer at installasjon eller oppgradering av en pakke ikke kan bryte andre pakker.

Nix har også flerbrukerstøtte, noe som innebærer at vanlige (eller ikke-privilegerte) systembrukere kan installere pakker på en sikker måte, og hver bruker identifiseres av en profil (en samling pakker i Nix-butikken som vises i brukerens PATH).

I tilfelle en bruker har installert en pakke, hvis en annen bruker prøver å installere den samme pakken, vil pakken ikke bygges eller lastes ned en gang til.

Den støtter for øyeblikket Linux (i686, x86_64) og Mac OS X (x86_64). Imidlertid er den ganske bærbar, du kan prøve den på de fleste plattformer som støtter POSIX-tråder og har en C++11-kompilator.

I denne artikkelen vil vi vise hvordan du installerer (i flerbrukermodus) og bruker Nix-pakkebehandling i Linux. Vi vil diskutere noen av de grunnleggende pakkehåndteringsoppgavene i forhold til de mest brukte verktøyene.

Hvordan installere Nix Package Manager i Linux

Vi vil installere den nyeste versjonen av Nix (v2.1.3 i skrivende stund) i flerbrukermodus. Heldigvis finnes det et klargjort installasjonsskript som du kan kjøre fra skallet ditt som en vanlig bruker ved å bruke følgende curl-kommando på systemet ditt.

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

Å kjøre kommandoen ovenfor vil laste ned den nyeste nix binære tarballen, og du vil lande i flerbruker nix installasjonsskjermen som vist på skjermbildet.

For å se en detaljert liste over hva som vil skje under installasjonsprosessen, skriv y og trykk Enter. Hvis du er fornøyd og klar til å fortsette, skriv y og trykk Enter.

Skriptet vil påkalle sudo-kommando mange ganger etter behov. Du må tillate at den bruker sudo ved å svare y og trykke Enter.

Installasjonsprogrammet vil deretter kjøre noen tester og generere en Nix-konfigurasjonsrapport, opprette build-brukere mellom bruker-ID-ene 30001 og 30032 og en gruppe med gruppe-ID-en 30 000. Skriv inn y for å fortsette når du blir bedt om det. Det vil sette opp byggegruppene for de forskjellige byggebrukerne, lage den grunnleggende katalogstrukturen til Nix.

Det vil endre filen /etc/bashrc, (og /etc/zshrc for zsh) hvis de eksisterer. Merk at den først sikkerhetskopierer de nevnte filene med en .backup-before-nix-utvidelse, og installasjonsprogrammet oppretter også filen /etc/profile.d/nix.sh.

Installasjonsprogrammet vil også sette opp nix-daemon-tjenesten og nix-daemon socket-tjenesten, laster systemd-enheten for nix-daemon og starter de to nevnte tjenestene.

Når installasjonen er fullført, må du åpne et nytt terminalvindu for å begynne å bruke Nix. Alternativt kan du lukke og åpne skallet på nytt for å bruke de siste endringene. Kilde deretter filen /etc/profile.d/nix.sh (fordi den ikke er en oppstartsfil for et skall, vil det ikke gi kilden til den ved å åpne et nytt skall).

source /etc/profile.d/nix.sh

Deretter kjører du følgende kommando for å laste ned noen baner fra det offisielle prosjektnettstedet, som kreves for at Nix skal fungere. Etter at alle stier er lastet ned og kopiert til de riktige stedene, vil du se et sammendrag av system- og nix-installasjonstype som vist på skjermbildet.

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

Slik bruker du Nix Package Manager i Linux

Under Nix utføres pakkebehandling av verktøyet nix-env. Den brukes til å installere, oppgradere og fjerne/slette pakker, og for å spørre hvilke pakker som er installert eller tilgjengelig for installasjon.

Alle pakkene er plassert i en Nix-kanal, som er en URL som peker til et depot som består av både en samling av Nix-uttrykk og en peker til en binær cache.

Standardkanalen er Nixpkgs og listen over abonnenter er lagret i ~/.nix-channels, du kan liste dem ved å bruke følgende kommando (ingen utgang betyr ingen kanaler) .

nix-channel --list

For å legge til Nix-kanalen, bruk følgende kommando.

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

Før du installerer noen pakker, start med å oppdatere Nix-kanalen; dette ligner på å kjøre apt update under APT-pakkebehandlingen.

nix-channel --update

Du kan spørre hvilke pakker som er tilgjengelige for installasjon ved å bruke følgende kommando.

nix-env -qa

I dette eksemplet vil vi installere Apache Tomcat-serveren ved å bruke den forrige kommandoen i forbindelse med grep for å finne at pakken er tilgjengelig for installasjon som vist.

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

For å installere en pakke, bruk følgende kommando ved å spesifisere pakkeversjonen, for eksempel apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

På det lokale systemet lagrer Nix pakker i Nix-butikken, som som standard er /nix/store-katalogen, der hver pakke har sin egen unike underkatalog. For eksempel er apache-tomcat-pakkene lagret i:

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

I denne banen er de tilfeldige tegnene 95gmgnxlrcpkhlm00fa5ax8kvd6189py en unik identifikator for pakken som tar hensyn til alle dens avhengigheter.

Du kan liste installerte pakker med følgende kommando.

nix-env -q

For å oppgradere apache-tomcat-pakken kan du bruke -u oppgraderingsbryteren som vist.

nix-env -u apache-tomcat

Hvis du vil fjerne/slette apache-tomcat, bruk -e-flagget. Her slettes ikke en pakke fra systemet umiddelbart, den blir bare ubrukt. Dette er nyttig fordi du vil gjøre en tilbakestilling, eller det kan være i profiler til andre brukere.

nix-env -e apache-tomcat

Etter å ha fjernet en pakke, kan du samle søppel med nix-collect-garbage-verktøyet.

nix-collect-garbage

Slik fjerner du Nix Package Manager i Linux

For å avinstallere Nix, fjern alle nix-relaterte filer på en 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, kjør følgende kommandoer for å stoppe all nix-relaterte 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

I tillegg må du fjerne eventuelle referanser til Nix i disse filene: /etc/profile, /etc/bashrc og /etc/zshrc .

For mer informasjon, se man-sidene til verktøyene ovenfor vi har sett på.

man nix-channel
man nix-env

Du finner Nix Package Manager-dokumentasjonen på prosjektets nettside: https://nixos.org/nix/.

Sammendrag

Nix er en rent funksjonell pakkebehandling designet for pålitelig og reproduserbar pakkehåndtering. Det gir et interessant konsept for pakkehåndtering, veldig forskjellig fra vanlig brukte verktøy i Linux som YUM, APT og mange andre.

I denne artikkelen viste vi hvordan du installerer nix i flerbrukermodus og diskuterte hvordan du gjør pakkehåndtering med Nix. Del dine tanker med oss eller still spørsmål via kommentarskjemaet nedenfor. Til slutt, i en kommende artikkel, vil vi forklare flere Nix-pakkeadministrasjonskommandoer. Inntil da, hold kontakten.