Nix - Ο καθαρά λειτουργικός διαχειριστής πακέτων για το Linux


Το Nix είναι ένα ισχυρό, καθαρά λειτουργικό σύστημα διαχείρισης πακέτων σχεδιασμένο για αξιόπιστη και αναπαραγώγιμη διαχείριση πακέτων, που κυκλοφορεί υπό τους όρους του GNU LGPLv2.1. Είναι το κύριο σύστημα διαχείρισης πακέτων στο NixOS , μια λιγότερο γνωστή διανομή Linux.

Το Nix προσφέρει ατομικές αναβαθμίσεις και επανατροφοδοτήσεις, πολλαπλές εκδόσεις εγκατάστασης πακέτου, διαχείριση πακέτων για πολλούς χρήστες και εύκολη εγκατάσταση περιβάλλοντα δημιουργίας για ένα πακέτο, ανεξάρτητα από τις γλώσσες προγραμματισμού και τα εργαλεία που χρησιμοποιεί ο προγραμματιστής.

Κάτω από το Nix , τα πακέτα κατασκευάζονται από μια λειτουργική γλώσσα πακέτων που ονομάζεται " Nix εκφράσεις ". Αυτή η λειτουργική προσέγγιση στη διαχείριση πακέτων εγγυάται ότι η εγκατάσταση ή η αναβάθμιση ενός πακέτου δεν μπορεί να σπάσει άλλα πακέτα.

Το Nix έχει επίσης υποστήριξη από πολλούς χρήστες, γεγονός που υποδηλώνει ότι οι κανονικοί (ή μη προνομιούχοι) χρήστες του συστήματος μπορούν να εγκαταστήσουν με ασφάλεια τα πακέτα και κάθε χρήστης αναγνωρίζεται από ένα προφίλ (μια συλλογή πακέτων στο κατάστημα Nix που εμφανίζεται στο PATH του χρήστη).

Σε περίπτωση που ένας χρήστης έχει εγκαταστήσει ένα πακέτο, αν κάποιος άλλος χρήστης προσπαθήσει να εγκαταστήσει το ίδιο πακέτο, το πακέτο δεν θα κατασκευαστεί ή θα μεταφορτωθεί για δεύτερη φορά.

Αυτή τη στιγμή υποστηρίζει Linux (i686, x86_64) και Mac OS X (x86_64). Ωστόσο, είναι αρκετά φορητό, μπορείτε να το δοκιμάσετε στις περισσότερες πλατφόρμες που υποστηρίζουν τα POSIX threads και έχουν έναν μεταγλωττιστή C ++ 11.

Σε αυτό το άρθρο, θα δείξουμε πώς να εγκαταστήσετε (σε λειτουργία πολλαπλών χρηστών) και να χρησιμοποιήσετε τον διαχειριστή πακέτων Nix στο Linux. Θα συζητήσουμε μερικά από τα βασικά καθήκοντα διαχείρισης πακέτων σε σχέση με τα κοινώς χρησιμοποιούμενα εργαλεία.

Πώς να εγκαταστήσετε το Nix Package Manager στο Linux

Θα εγκαταστήσουμε την τελευταία έκδοση του Nix ( v2.1.3 τη στιγμή της εγγραφής) σε λειτουργία πολλαπλών χρηστών. Ευτυχώς, υπάρχει ένα έτοιμο script για εγκατάσταση που μπορείτε να εκτελέσετε από το κέλυφος σας ως κανονικός χρήστης χρησιμοποιώντας την ακόλουθη εντολή curl στο σύστημά σας.

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

Με την εκτέλεση της παραπάνω εντολής θα κατεβάσετε το τελευταίο nix binary tarball και θα προσγειωθείτε στην οθόνη εγκατάστασης πολλαπλών χρηστών nix όπως φαίνεται στο στιγμιότυπο οθόνης.

Για να δείτε μια λεπτομερή λίστα με το τι θα συμβεί κατά τη διάρκεια της διαδικασίας εγκατάστασης, πληκτρολογήστε y και πατήστε Enter . Εάν είστε ικανοποιημένοι και είστε έτοιμοι να συνεχίσετε, πληκτρολογήστε y και πατήστε Enter .

Το σενάριο θα καλέσει την εντολή sudo πολλές φορές όπως απαιτείται. Θα πρέπει να επιτρέψετε τη χρήση του sudo απαντώντας στο y και πατώντας το Enter .

Στη συνέχεια, ο εγκαταστάτης θα εκτελέσει μερικές δοκιμασίες και θα δημιουργήσει μια αναφορά Nix config, θα δημιουργήσει χρήστες μεταξύ των αναγνωριστικών χρήστη 30001 και 30032 και μια ομάδα με αναγνωριστικό ομάδας 30000 . Εισαγάγετε y για να συνεχίσετε όταν σας ζητηθεί. Θα ρυθμίσει τις ομάδες δημιουργίας για τους διαφορετικούς κατασκευαστές χρηστών, θα κάνει τη βασική δομή καταλόγου του Nix.

Θα τροποποιήσει το αρχείο /etc/bashrc , (και /etc/zshrc για το zsh ). Σημειώστε ότι πρώτα υποστηρίζει τα αρχεία με μια επέκταση .backup-before-nix και ο εγκαταστάτης δημιουργεί επίσης το αρχείο /etc/profile.d/nix.sh .

Ο εγκαταστάτης θα ρυθμίσει επίσης την υπηρεσία nix-daemon και την υπηρεσία nix-daemon, φορτώνει τη συστημένη μονάδα για nix-daemon και ξεκινά τις δύο προαναφερθείσες υπηρεσίες.

Μόλις ολοκληρωθεί η εγκατάσταση, θα πρέπει να ανοίξετε ένα νέο παράθυρο τερματικού για να αρχίσετε να χρησιμοποιείτε το Nix. Εναλλακτικά, κλείστε και ανοίξτε ξανά το κέλυφος σας για να εφαρμόσετε τις πρόσφατες αλλαγές. Στη συνέχεια, δημιουργήστε το αρχείο /etc/profile.d/nix.sh (επειδή δεν είναι αρχείο εκκίνησης κελύφους, το άνοιγμα ενός νέου κελύφους δεν θα το προμηθεύσει).

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

Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να πραγματοποιήσετε λήψη ορισμένων διαδρομών από τον επίσημο ιστότοπο του έργου, που απαιτούνται για τη λειτουργία του Nix . Μετά την λήψη και αντιγραφή όλων των διαδρομών στις σωστές θέσεις, θα δείτε μια σύνοψη τύπου συστήματος και nix όπως φαίνεται στο στιγμιότυπο οθόνης.

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

Πώς να χρησιμοποιήσετε το Nix Package Manager στο Linux

Κάτω από το Nix , η διαχείριση των πακέτων γίνεται από το βοηθητικό πρόγραμμα nix-env . Χρησιμοποιείται για την εγκατάσταση, την αναβάθμιση και την αφαίρεση/διαγραφή πακέτων και για την ερώτηση των πακέτων που έχουν εγκατασταθεί ή είναι διαθέσιμα για εγκατάσταση.

Όλα τα πακέτα βρίσκονται σε ένα κανάλι Nix, το οποίο είναι μια διεύθυνση URL που δείχνει σε ένα αποθετήριο που περιλαμβάνει τόσο συλλογές εκφράσεων Nix όσο και δείκτη σε δυαδική κρυφή μνήμη.

Το προεπιλεγμένο κανάλι είναι Nixpkgs και η λίστα των εγγεγραμμένων καναλιών αποθηκεύεται σε κανάλια ~/.nix , μπορείτε να τα καταχωρίσετε χρησιμοποιώντας την ακόλουθη εντολή (καμία έξοδος δεν σημαίνει κανάλια) .

$ nix-channel --list

Για να προσθέσετε το κανάλι Nix, χρησιμοποιήστε την ακόλουθη εντολή.

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

Πριν εγκαταστήσετε τυχόν πακέτα, ξεκινήστε ενημερώνοντας το κανάλι Nix. αυτό είναι παρόμοιο με το apt update που βρίσκεται κάτω από τον διαχειριστή πακέτων APT.

$ nix-channel --update

Μπορείτε να αναζητήσετε ποια πακέτα είναι διαθέσιμα για εγκατάσταση χρησιμοποιώντας την ακόλουθη εντολή.

$ nix-env -qa

Σε αυτό το παράδειγμα, θα εγκαταστήσουμε τον server Apache Tomcat χρησιμοποιώντας την προηγούμενη εντολή σε συνδυασμό με το grep για να βρούμε ότι το πακέτο είναι διαθέσιμο για εγκατάσταση όπως φαίνεται.

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

Για να εγκαταστήσετε ένα πακέτο, χρησιμοποιήστε την ακόλουθη εντολή καθορίζοντας την έκδοση πακέτου, για παράδειγμα apache-tomcat-9.0.2 .

$ nix-env -i apache-tomcat-9.0.2

Στο τοπικό σύστημα, το Nix αποθηκεύει πακέτα στο κατάστημα Nix , το οποίο από προεπιλογή είναι ο κατάλογος /nix/store , όπου κάθε πακέτο έχει δικό του μοναδικό κατάλογο. Για παράδειγμα, τα πακέτα apache-tomcat αποθηκεύονται σε:

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

Σε αυτή τη διαδρομή, οι τυχαίοι χαρακτήρες 95gmgnxlrcpkhlm00fa5ax8kvd6189py είναι ένα μοναδικό αναγνωριστικό για το πακέτο που λαμβάνει υπόψη όλες τις εξαρτήσεις του.

Μπορείτε να εμφανίσετε τα εγκατεστημένα πακέτα με την ακόλουθη εντολή.

$ nix-env -q

Για να αναβαθμίσετε το πακέτο apache-tomcat , μπορείτε να χρησιμοποιήσετε το διακόπτη αναβάθμισης -u όπως φαίνεται.

$ nix-env -u apache-tomcat

Εάν θέλετε να καταργήσετε/διαγράψετε το apache-tomcat , χρησιμοποιήστε τη σημαία -e . Εδώ, ένα πακέτο δεν διαγράφεται από το σύστημα αμέσως, αλλά αποδίδεται μόνο αχρησιμοποίητο. Αυτό είναι χρήσιμο επειδή θέλετε να πραγματοποιήσετε μια επαναφορά ή μπορεί να είναι στα προφίλ άλλων χρηστών.

$ nix-env -e apache-tomcat

Αφού αφαιρέσετε ένα πακέτο, μπορείτε να κάνετε κάποια συλλογή απορριμμάτων με το βοηθητικό πρόγραμμα nix-collect-garbage .

$ nix-collect-garbage

Πώς να αφαιρέσετε το διαχειριστή πακέτων Nix στο Linux

Για να απεγκαταστήσετε το Nix, αφαιρέστε όλα τα αρχεία που σχετίζονται με το nix ταυτόχρονα.

$ 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

Σε συστήματα με systemd, εκτελέστε τις ακόλουθες εντολές για να σταματήσετε όλες τις σχετικές υπηρεσίες nix και να τις απενεργοποιήσετε.

$ 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

Επιπλέον, θα πρέπει να καταργήσετε τυχόν αναφορές σε Nix σε αυτά τα αρχεία: /etc/profile , /etc/bashrc και /etc/zshrc .

Για περισσότερες πληροφορίες, ανατρέξτε στις σελίδες ανθρώπων των παραπάνω βοηθητικών προγραμμάτων που εξετάσαμε.

$ man nix-channel
$ man nix-env

Μπορείτε να βρείτε την τεκμηρίωση του Nix Package Manager στην ιστοσελίδα του έργου: https://nixos.org/nix/.

Nix είναι ένας καθαρά λειτουργικός διαχειριστής πακέτων που έχει σχεδιαστεί για αξιόπιστη και αναπαραγώγιμη διαχείριση πακέτων. Παρέχει μια ενδιαφέρουσα ιδέα της διαχείρισης πακέτων, πολύ διαφορετική από τα κοινά χρησιμοποιούμενα εργαλεία στο Linux, όπως το YUM, το APT και πολλά άλλα.

Σε αυτό το άρθρο, παρουσιάσαμε πώς να εγκαταστήσουμε το nix σε λειτουργία πολλαπλών χρηστών και συζητήσαμε πώς να κάνουμε τη διαχείριση των πακέτων με τη Nix. Μοιραστείτε τις σκέψεις σας μαζί μας ή απαντήστε σε ερωτήσεις μέσω της παρακάτω φόρμας σχολίων. Τέλος, σε ένα επερχόμενο άρθρο, θα εξηγήσουμε περισσότερες εντολές διαχείρισης πακέτων Nix. Μέχρι τότε, μείνετε συνδεδεμένοι.