GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erste Schritte mit Nix Package Manager

In diesem Tutorial wird erläutert, wie Paketverwaltungsvorgänge wie das Installieren, Entfernen, Aktualisieren und Aktualisieren von Paketen mit dem Nix-Paketmanager durchgeführt werden. Wenn Sie den Nix-Paketmanager noch nicht installiert haben, lesen Sie unsere vorherige Anleitung „Nix – Ein leistungsstarker Paketmanager für Linux und Unix“ . Wie Sie vielleicht bereits wissen, müssen Sie kein Root- oder Sudo-Benutzer sein, um alle Paketverwaltungsoperationen mit Nix durchzuführen.

Erste Schritte mit Nix Package Manager

Nix hat viele Befehle. Der Hauptbefehl für die Paketverwaltung ist nix-env . Dieser Befehl wird zum Auflisten, Installieren, Aktualisieren, Zurücksetzen, Entfernen und Abfragen von Paketen verwendet. Sehen wir uns einige Befehle mit Beispielen an.

Nix-Kanäle aktualisieren

Ein Nix-Kanal ist nur eine URL, die auf einen Ort verweist, der eine Reihe von Nix-Ausdrücken und ein Manifest enthält. Standardmäßig Nixpkgs Der Kanal wird automatisch zu Ihrer Liste der „abonnierten“ Kanäle hinzugefügt, wenn Sie Nix installieren.

Führen Sie den folgenden Befehl aus, um über den Nix-Kanal auf dem Laufenden zu bleiben:

$ nix-channel --update

Beispielausgabe:

downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’...
downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s]
unpacking channels...

Sie können Ihrem System wie unten gezeigt auch manuell einen Kanal hinzufügen.

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

Vergessen Sie nach dem Abonnieren (Hinzufügen) eines Kanals nicht, den Kanal zu aktualisieren, um die neuesten verfügbaren Nix-Ausdrücke mit dem Befehl zu erhalten:

$ nix-channel --update

Um einen Kanal zu entfernen, führen Sie einfach Folgendes aus:

$ nix-channel --remove nixpkgs

Verfügbare Pakete suchen/abfragen

Um die Liste der verfügbaren Pakete im abonnierten Kanal anzuzeigen, führen Sie Folgendes aus:

$ nix-env -qa

Beispielausgabe des obigen Befehls wäre:

2048-in-terminal-2015-01-15
2bwm-0.2
389-ds-base-1.3.5.15
3dpong-0.5
4store-1.1.6
8086tiny-1.25
90secondportraits-1.01b
915resolution-0.5.3
9pfs
a2jmidid-8
a2ps-4.14
a52dec-0.7.4p4
aacgain-1.9.0
aacskeys-0.4.0e
aalib-1.4rc5
abc-verifier-20160818
abcde-2.7.2
abcl-1.4.0

[...]

Hier gibt "-q" die Abfrageoperation an. "-a" zeigt alle verfügbaren (d. h. installierbaren) Pakete an.

Sie können ein bestimmtes Paket wie unten gezeigt abfragen.

$ nix-env -qa chromium

Ausgabe:

chromium-58.0.3029.110

Sie können auch den folgenden Befehl verwenden, um nach einem bestimmten Paket zu suchen.

$ nix-env -qaP | grep python3-3

Beispielausgabe:

nixpkgs.python33 python3-3.3.6
nixpkgs.python33Full python3-3.3.6
nixpkgs.python34 python3-3.4.6
nixpkgs.python34Full python3-3.4.6
nixpkgs.python35 python3-3.5.3
nixpkgs.python35Full python3-3.5.3
nixpkgs.python3Full python3-3.6.1
nixpkgs.python36Full python3-3.6.1
nixpkgs.python3 python3-3.6.1

Um alle installierten Pakete aufzulisten, führen Sie einfach Folgendes aus:

$ nix-env -q

Es ist auch möglich, den Status des verfügbaren Pakets anzuzeigen. Sehen Sie sich das folgende Beispiel an.

$ nix-env -qas gcc

Beispielausgabe:

IPS gcc-5.4.0

Hier zeigt "I" an, dass das angegebene Paket installiert ist, "P" gibt an, dass das Paket auf unserem System vorhanden ist, und "S" zeigt an, ob es einen sogenannten Ersatz gibt für das Paket.

Sie können Pakete mit regulären Ausdrücken abfragen/auflisten. Hier sind einige Beispiele für reguläre Ausdrücke.

Chrom

Stimmt mit dem Paketnamen chromium und einer beliebigen Version überein.

Chrom-58,0

Entspricht dem Paketnamen Chromium und Version 58.0.

Beispiel:

$ nix-env -qa chromium-58.0

gtk\\+

Stimmt mit dem Paketnamen gtk+ überein . Das +-Zeichen muss mit einem Backslash maskiert werden, damit es nicht als Quantor interpretiert wird, und der Backslash muss wiederum mit einem weiteren Backslash maskiert werden, damit die Shell es weitergibt.

.\*

Stimmt mit jedem Paketnamen überein. Dies ist die Standardeinstellung für die meisten Befehle.

'.*zip.*'

Entspricht jedem Paketnamen, der die Zeichenfolge zip enthält . Beachten Sie die Punkte:'*zip*' funktioniert nicht, da in einem regulären Ausdruck das Zeichen * als Quantifizierer interpretiert wird.

'.*(firefox|chrom).*'

Entspricht jedem Paketnamen, der die Zeichenfolgen firefox enthält oder Chrom .

Pakete installieren

Wie ich im vorherigen Tutorial erwähnt habe, werden alle Pakete im Nix Store gespeichert , normalerweise das Verzeichnis /nix/store .

Um ein Paket zu installieren, führen Sie einfach Folgendes aus:

$ nix-env --install gcc

Oder,

$ nix-env -i gcc

Der obige Befehl installiert das neueste verfügbare gcc-Paket.

Beispielausgabe des obigen Befehls wäre:

installing ‘gcc-5.4.0’
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds...
download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds...
these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked):
 /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin
 /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0
 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11
 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25
 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man
 /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10
 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev
 /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib
 /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info
fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’...

[...]

fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...

*** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’...
 % Total % Received % Xferd Average Speed Time Time Time Current
 Dload Upload Total Spent Left Speed
100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k

building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’
created 78 symlinks in user environment

Lassen Sie uns mit dem Befehl prüfen, ob gcc installiert ist oder nicht:

$ gcc -v

Beispielausgabe:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: 
Thread model: posix
gcc version 5.4.0 (GCC)

Wie Sie in der obigen Ausgabe bemerkt haben, befindet sich gcc in einem Unterverzeichnis namens "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0" unter /nix/store . Hier nennen wir dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 als eindeutige Kennung. Dieses Unterverzeichnis enthält alle erforderlichen Abhängigkeiten und Bibliotheken des gcc-Pakets.

Pakete ohne Installation testen

Eine weitere bemerkenswerte Funktion des Nix-Paketmanagers ist, dass Sie ein Paket testen können, ohne es auf Ihrem System zu installieren. In der folgenden Anleitung erfahren Sie, wie Sie ein Paket testen, ohne es zu installieren.

  • Wie man ein Paket testet, ohne es unter Linux zu installieren

Upgrade von Paketen

Um ein Paket auf die nächste verfügbare Version zu aktualisieren, führen Sie einfach Folgendes aus:

$ nix-env --upgrade vim

Oder einfach:

$ nix-env -u vim

Der obige Befehl aktualisiert nur vim Paket, wenn es eine „neuere“ Version gibt.

Außerdem können Sie alle installierten Pakete auf einmal aktualisieren, indem Sie den folgenden Befehl ausführen:

$ nix-env -u

Rollback-Pakete

Sie haben ein Paket installiert, aber es ist nicht nützlich oder funktioniert nicht richtig. Sie benötigen die niedrigere Version desselben Pakets. Was wirst du tun? Einfach. Setzen Sie einfach mit dem folgenden Befehl auf die vorherige funktionierende Version zurück:

$ nix-env --rollback

Pakete deinstallieren

Führen Sie zum Deinstallieren eines Pakets Folgendes aus:

$ nix-env -e gcc

Der obige Befehl deinstalliert das Paket namens gcc von Ihrem System.

Sie können mehrere Pakete wie unten gezeigt entfernen.

$ nix-env -e gcc vim

Beispielausgabe:

uninstalling ‘vim-8.0.0442’
uninstalling ‘gcc-5.4.0’
building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’
created 6 symlinks in user environment

Unbenutzte Pakete entfernen

Wenn ein Paket deinstalliert wird, wird es nicht aus Nix Store (d. h. /nix/store/-Verzeichnis) entfernt. Nur die Symlinks werden aus Ihrem Profil entfernt.

Um deinstallierte Pakete tatsächlich zu entfernen, führen Sie Folgendes aus:

$ nix-collect-garbage -d

Beispielausgabe:

finding garbage collector roots...
deleting garbage...
deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’
deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’
deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’

[...]

deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’
deleting ‘/nix/store/trash’
deleting unused links...
note: currently hard linking saves -0.00 MiB
1447 store paths deleted, 12.65 MiB freed

Sie sollten diesen Befehl regelmäßig ausführen, um ungenutzte Pakete von Ihrem System zu entfernen.

Und das ist alles für jetzt. Ich hoffe, Sie haben eine Vorstellung von der grundlegenden Verwendung des Nix-Paketmanagers. Was ich hier gerade behandelt habe, reicht aus, um mit dem Nix-Paketmanager zu beginnen. Natürlich gibt es viele Befehle. Weitere Informationen zu Nix-Befehlen finden Sie im offiziellen Nix-Handbuch am Ende dieser Anleitung.

Wenn Sie diesen Leitfaden nützlich finden, teilen Sie ihn bitte in Ihren sozialen, beruflichen Netzwerken und unterstützen Sie OSTechNix. Weitere gute Sachen folgen. Bleiben Sie dran!

Prost!


Linux
  1. Erste Schritte mit Zsh

  2. Erste Schritte mit dem Plesk File Manager

  3. Erste Schritte mit ls

  4. Erste Schritte mit Samba für Interoperabilität

  5. Erste Schritte mit PostgreSQL unter Linux

Erste Schritte mit GIT unter Linux

Erste Schritte mit dem Linux-Betriebssystem

Erste Schritte mit GitHub

Erste Schritte mit systemctl

Erste Schritte mit Alpine Linux Apk-Befehlsbeispielen

Erste Schritte mit dem Tar-Befehl