Zoeken op website

Nix - De puur functionele pakketbeheerder voor Linux


Nix is een krachtig, puur functioneel pakketbeheersysteem ontworpen voor betrouwbaar en reproduceerbaar pakketbeheer, uitgebracht onder de voorwaarden van GNU LGPLv2.1. Het is het primaire pakketbeheersysteem in NixOS, een minder bekende Linux-distributie.

Nix biedt atomaire upgrades en rollbacks, meerdere versies van pakketinstallatie, pakketbeheer voor meerdere gebruikers en moeiteloze installatie van bouwomgevingen voor een pakket, ongeacht welke programmeertalen en tools een ontwikkelaar gebruikt.

Onder Nix worden pakketten opgebouwd uit een functionele pakkettaal genaamd “Nix expressions”. Deze functionele benadering van pakketbeheer garandeert dat het installeren of upgraden van één pakket andere pakketten niet kapot kan maken.

Nix biedt ook ondersteuning voor meerdere gebruikers, wat inhoudt dat normale (of niet-bevoorrechte) systeemgebruikers veilig pakketten kunnen installeren en dat elke gebruiker wordt geïdentificeerd door een profiel (een verzameling pakketten in de Nix-winkel die verschijnen in het PATH van de gebruiker).

Als een gebruiker een pakket heeft geïnstalleerd en een andere gebruiker hetzelfde pakket probeert te installeren, zal het pakket niet voor de tweede keer worden gebouwd of gedownload.

Het ondersteunt momenteel Linux (i686, x86_64) en Mac OS X (x86_64). Het is echter redelijk draagbaar, je kunt het proberen op de meeste platforms die POSIX-threads ondersteunen en een C++11-compiler hebben.

In dit artikel laten we zien hoe u Nix pakketbeheer in Linux installeert (in de modus voor meerdere gebruikers) en gebruikt. We zullen enkele basistaken voor pakketbeheer bespreken in relatie tot de veelgebruikte tools.

Hoe Nix Package Manager onder Linux te installeren

We zullen de nieuwste versie van Nix (v2.1.3 op het moment van schrijven) installeren in de modus voor meerdere gebruikers. Gelukkig is er een kant-en-klaar installatiescript dat u als normale gebruiker vanuit uw shell kunt uitvoeren met behulp van de volgende curl-opdracht op uw systeem.

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

Als u de bovenstaande opdracht uitvoert, wordt de nieuwste nix binaire tarball gedownload en komt u terecht in het nix-installatiescherm voor meerdere gebruikers, zoals weergegeven in de schermafbeelding.

Om een gedetailleerde lijst te bekijken van wat er tijdens het installatieproces zal gebeuren, typt u y en drukt u op Enter. Als u tevreden bent en klaar om door te gaan, typt u y en drukt u op Enter.

Het script zal indien nodig de opdracht sudo vele malen aanroepen. Je moet toestemming geven om sudo te gebruiken door y te beantwoorden en op Enter te drukken.

Het installatieprogramma voert vervolgens een paar tests uit en genereert een Nix-configuratierapport, maakt build-gebruikers aan tussen de gebruikers-ID's 30001 en 30032, en een groep met de groeps-ID 30000. Voer y in om door te gaan wanneer daarom wordt gevraagd. Het zal de build-groepen instellen voor de verschillende build-gebruikers, en de basisdirectorystructuur van Nix maken.

Het zal het bestand /etc/bashrc aanpassen (en /etc/zshrc voor de zsh) als deze bestaan. Houd er rekening mee dat er eerst een back-up wordt gemaakt van de genoemde bestanden met de extensie .backup-before-nix en dat het installatieprogramma ook het bestand /etc/profile.d/nix.sh aanmaakt.

Het installatieprogramma zal ook de nix-daemon-service en de nix-daemon-socketservice instellen, de systemd-eenheid voor nix-daemon laden en de twee bovengenoemde services starten.

Zodra de installatie is voltooid, moet u een nieuw terminalvenster openen om Nix te kunnen gebruiken. U kunt ook uw shell sluiten en opnieuw openen om de recente wijzigingen toe te passen. Bron vervolgens het bestand /etc/profile.d/nix.sh (omdat het geen shell-opstartbestand is, zal het openen van een nieuwe shell het niet sourcen).

source /etc/profile.d/nix.sh

Voer vervolgens de volgende opdracht uit om enkele paden van de officiële projectwebsite te downloaden, die nodig zijn om Nix te laten werken. Nadat alle paden zijn gedownload en naar de juiste locaties zijn gekopieerd, ziet u een samenvatting van het systeem en het nix-installatietype, zoals weergegeven in de schermafbeelding.

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

Hoe Nix Package Manager onder Linux te gebruiken

Onder Nix wordt het pakketbeheer gedaan door het hulpprogramma nix-env. Het wordt gebruikt om pakketten te installeren, te upgraden en te verwijderen/wissen, en om op te vragen welke pakketten zijn geïnstalleerd of beschikbaar zijn voor installatie.

Alle pakketten bevinden zich in een Nix-kanaal, wat een URL is die verwijst naar een repository die zowel een verzameling Nix-expressies bevat als een verwijzing naar een binaire cache.

Het standaardkanaal is Nixpkgs en de lijst met geabonneerde kanalen wordt opgeslagen in ~/.nix-channels. Je kunt ze weergeven met de volgende opdracht (geen uitvoer betekent geen kanalen) .

nix-channel --list

Gebruik de volgende opdracht om het Nix-kanaal toe te voegen.

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

Voordat je pakketten installeert, begin je met het updaten van het Nix-kanaal; dit is vergelijkbaar met het uitvoeren van apt update onder APT-pakketbeheer.

nix-channel --update

Met de volgende opdracht kunt u opvragen welke pakketten beschikbaar zijn voor installatie.

nix-env -qa

In dit voorbeeld zullen we de Apache Tomcat-server installeren met behulp van de vorige opdracht in combinatie met grep om te ontdekken dat het pakket beschikbaar is om te installeren, zoals weergegeven.

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

Om een pakket te installeren, gebruikt u de volgende opdracht door de pakketversie op te geven, bijvoorbeeld apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

Op het lokale systeem slaat Nix pakketten op in de Nix store, wat standaard de map /nix/store is, waar elk pakket zijn eigen unieke submap heeft. De apache-tomcat-pakketten worden bijvoorbeeld opgeslagen in:

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

In dit pad vormen de willekeurige tekens 95gmgnxlrcpkhlm00fa5ax8kvd6189py een unieke identificatie voor het pakket, waarbij rekening wordt gehouden met al zijn afhankelijkheden.

U kunt geïnstalleerde pakketten weergeven met de volgende opdracht.

nix-env -q

Om het apache-tomcat pakket te upgraden, kunt u de upgradeschakelaar -u gebruiken, zoals weergegeven.

nix-env -u apache-tomcat

Als je apache-tomcat wilt verwijderen/wissen, gebruik dan de vlag -e. Hierbij wordt een pakket niet onmiddellijk uit het systeem gewist, maar alleen ongebruikt gemaakt. Dit is handig omdat u een rollback wilt uitvoeren, of omdat dit mogelijk in de profielen van andere gebruikers staat.

nix-env -e apache-tomcat

Nadat u een pakket heeft verwijderd, kunt u wat afval verzamelen met het hulpprogramma nix-collect-garbage.

nix-collect-garbage

Hoe Nix Package Manager in Linux te verwijderen

Om Nix te verwijderen, verwijdert u alle nix-gerelateerde bestanden in één keer.

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

Op systemen met systemd voert u de volgende opdrachten uit om alle aan nix gerelateerde services te stoppen en uit te schakelen.

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

Bovendien moet u alle verwijzingen naar Nix in deze bestanden verwijderen: /etc/profile, /etc/bashrc en /etc/zshrc >.

Voor meer informatie, zie de manpagina's van de bovenstaande hulpprogramma's die we hebben bekeken.

man nix-channel
man nix-env

U kunt de Nix Package Manager-documentatie vinden op de projectwebsite: https://nixos.org/nix/.

Samenvatting

Nix is een puur functionele pakketbeheerder, ontworpen voor betrouwbaar en reproduceerbaar pakketbeheer. Het biedt een interessant concept van pakketbeheer, heel anders dan veelgebruikte tools in Linux zoals YUM, APT en vele andere.

In dit artikel lieten we zien hoe je nix installeert in de modus voor meerdere gebruikers en bespraken we hoe je pakketbeheer met Nix kunt doen. Deel uw mening met ons of stel uw vraag via het onderstaande opmerkingenformulier. Ten slotte zullen we in een aankomend artikel meer Nix-pakketbeheeropdrachten uitleggen. Blijf tot die tijd verbonden.