Vad gör NixOS Package Manager?
De flesta pakethanterare använder en fil som innehåller den körbara eller källkoden. De beräknar sedan vad det behöver på systemet och ser sedan till att det finns. I Nix fungerar saker mycket liknande. Den stora skillnaden är att Nix skapar alla filer och sammanställer dem vid behov och sedan placerar dem på ett ställe; nix-butiken. Den första frågan du har kan vara: ”Kommer filerna inte att ha samma namn?”Systemet undviker detta genom att ha en katalog för varje version OCH namnge alla filer med en hash. För att göra applikationen "känns hemma" länkas sedan alla beroenden till sina rätta kataloger med vanliga symlänkar. En profil håller reda på vilken version varje användare kör.
NixOS-användarinstallationer
Med detta system kan du ha olika versioner installerade i varje användares katalog. Om de är desamma i flera användare kan administratören låta Nix återlänka binärer, så det finns bara en åt gången. Detta är användbart för att spara diskutrymme. Du kan också skapa specifika miljöer för varje version av paketet. Detta är särskilt användbart när du vill testa en ny version eller utveckla programvara.
Installerar för gemensam distribution
För de vanligaste plattformarna kan du installera Nix, pakethanteraren med ett enkelt skript. Det här skriptet finns tillgängligt på Nix-webbplatsen. Skriptet behöver root-användaråtkomst, men om du är mycket säkerhetsmedveten bör du läsa skriptet innan du använder det. Om du vill undvika att använda root i skriptet, skapar du bara / nix-katalogen på ditt system.
$ sh <(curl -L https://nixos.org/nix/install)Om du inte har någon root-åtkomst eller bara är super försiktig kan du ha Nix som enbart pakethanterare för användare.
$ sh <(curl -L https://nixos.org/nix/install) -no-daemonDenna binära fungerar bra för de flesta, om inte alla, distributioner. Plattformar är x8664, dvs?86, aarch64 och x8664-darwin, som täcker nästan alla tillgängliga plattformar. Om du använder andra plattformar kan du förmodligen använda källkoden och bygga din egen. När installationen är klar kommer du att ha en massa nya kommandon.
Lägga till ditt första program till NixOS
För att installera programvara och ställa in när den kan användas har du nix-env. Installationsalternativet (-i) är det vanligaste eftersom du alltid använder det och lägger ett paket som argument.
$ nix-env -i FirefoxDetta ser ut som i andra distributioner, så gör frågan argumentet. Installationen tar dock lite tid. Anledningen är att den måste kompilera programvaran såvida det inte finns en förkompilerad version i Nix Cache. Att nå cachen är inte alltid särskilt snabbt. Det är en skillnad som du bör notera; du kan välja en version! Om du vill ha en specialversion måste du hitta vilka som är tillgängliga med reguljära uttryck.
$ nix-env -qa 'firefox.* 'Du kommer att få en lista över alla tillgängliga paket. Du kan installera det på samma sätt men använda värdet i listan.
$ nix-env -installera 'firefox-78.4.0ser '-förvar-installeradDetta kan misslyckas om du redan har en installerad version. Alternativet '-preserve-installed' raderar inte den installerade versionen. Du kan sluta med två versioner av samma prioritet, som du kan fixa genom att ställa in prioriteten.
$ nix-env -set-flag prioritet 2 'firefox-82.0.2 'Nu kör du den gamla versionen nästa gång du startar Firefox. För att byta vilken du kör, kan du ställa in prioriteten därefter. Du kan också starta ett skal för att välja en binär. Detta är ett utvecklaralternativ, och kommandot är nix-shell.
Uppdaterar NixOS
När du har en samling programvara vill du hålla dig uppdaterad. Samma som alltid, du använder samma kommando med ett argument. Men du måste också hålla kanalen uppdaterad. Kommandot är nix-channel.
$ nix-kanal -uppdateringDetta läser ner de aktuella versionerna av alla tillgängliga paket. Därefter kan du börja uppgradera din programvara med nix-env.
$ nix-env -uppgraderingEn sådan uppgradering kommer att uppgradera din gamla version av programvaran. I det här fallet kommer den gamla Firefox att ersättas med den senaste versionen. Du kanske inte vill ha det av någon anledning, vanligtvis utveckling.
Ta bort applikationer från NixOS
Att ta bort applikationer är lika enkelt med en liten försiktighet. Inga applikationer tas bort av ett kommando för att ta bort.
$ nix-env -installera 'firefox-78.4.0ser 'Detta kommando tar bort länkarna till den aktuella versionen av den här versionen av Firefox. Alla filer förblir alltid på hårddisken. Du har dessa versioner tillgängliga för att göra en återställning. En återgång innebär att du går tillbaka till att använda den gamla versionen. Detta kan vara användbart om du har provat det senaste och det har oförutsedda problem.
$ nix-env -rollbackDu återställer en hel generation, vilket betyder alla program som har uppgraderats sedan förra generationen. Alternativet kör två kommandon; listan och byter sedan till de gamla generationerna. Alla installerade paket finns i en generation på disk.
NixOS Roll-back och städning
Återställningsfunktionen leder till att mycket diskutrymme används av gamla versioner. Du kan städa upp detta (du måste städa upp det här!). När du har haft en tillräckligt lång period, efter eget val, kan du också städa upp dessa gamla generationer för att spara diskutrymme.
$ nix-env -radera generationer gamlaMed det här kommandot raderar du alla generationer utom de två sista. Du kan gå fram och tillbaka i listan med mer komplexa parametrar för att lämna den specifika generation som fungerade bäst för dig. Om du inte har många test- eller utvecklingsprojekt som behöver många versioner för testning, bör du använda en schemalagd borttagning av alla gamla generationer.
Ett enkelt skript för att hålla dina generationer rena kommer med en installation av Nix-pakethanteraren.
$ nix-samla-skräpDu bör också ställa in samlaren så att den körs automatiskt med systemd eller andra system.
Slutsats
Nix-pakethanteraren är ett kraftfullt system som kan få dig att köra komplexa utvecklingsmiljöer på din maskin. Du kan också använda den för att hålla din programvara städad och ha ett enkelt sätt att återställa på en ny maskin om en katastrof av en diskkrasch skulle inträffa.