Κυκλοφορία του συστήματος init GNU Shepherd 0.9

Δύο χρόνια μετά τη δημιουργία της τελευταίας σημαντικής έκδοσης, δημοσιεύτηκε ο διαχειριστής υπηρεσιών GNU Shepherd 0.9 (πρώην dmd), ο οποίος αναπτύσσεται από τους προγραμματιστές της διανομής GNU Guix System ως εναλλακτική λύση στο σύστημα αρχικοποίησης SysV-init που υποστηρίζει εξαρτήσεις . Ο δαίμονας ελέγχου Shepherd και τα βοηθητικά προγράμματα είναι γραμμένα στη γλώσσα Guile (μία από τις υλοποιήσεις της γλώσσας Scheme), η οποία χρησιμοποιείται επίσης για τον καθορισμό ρυθμίσεων και παραμέτρων για την εκκίνηση υπηρεσιών. Το Shepherd χρησιμοποιείται ήδη στη διανομή GuixSD GNU/Linux και στοχεύει επίσης στη χρήση στο GNU/Hurd, αλλά μπορεί να εκτελεστεί σε οποιοδήποτε λειτουργικό σύστημα συμβατό με POSIX για το οποίο είναι διαθέσιμη η γλώσσα Guile.

Ο Shepherd κάνει το έργο της έναρξης και της διακοπής των υπηρεσιών λαμβάνοντας υπόψη τις σχέσεις μεταξύ των υπηρεσιών, εντοπίζοντας και ξεκινώντας δυναμικά τις υπηρεσίες από τις οποίες εξαρτάται η επιλεγμένη υπηρεσία. Το Shepherd υποστηρίζει επίσης τον εντοπισμό διενέξεων μεταξύ των υπηρεσιών και την αποτροπή της ταυτόχρονης εκτέλεσης τους. Το έργο μπορεί να χρησιμοποιηθεί τόσο ως κύριο σύστημα αρχικοποίησης (init με PID 1) όσο και σε ξεχωριστή μορφή για τη διαχείριση των διαδικασιών παρασκηνίου μεμονωμένων χρηστών (για παράδειγμα, για εκτέλεση tor, privoxy, mcron, κ.λπ.) με εκτέλεση με τα δικαιώματα από αυτούς τους χρήστες.

Βασικές καινοτομίες:

  • Εφαρμόζεται η έννοια των προσωρινών υπηρεσιών (μεταβατικών), απενεργοποιείται αυτόματα μετά την ολοκλήρωση λόγω τερματισμού της διαδικασίας ή κλήσης της μεθόδου «stop», η οποία μπορεί να απαιτείται για τις συνθετικές υπηρεσίες που δεν μπορούν να επανεκκινηθούν μετά τον τερματισμό.
  • Για τη δημιουργία υπηρεσιών τύπου inetd, έχει προστεθεί η διαδικασία "make-inetd-constructor".
  • Για τη δημιουργία υπηρεσιών που ενεργοποιούνται κατά τη διάρκεια της δραστηριότητας δικτύου (στο στυλ ενεργοποίησης πρίζας systemd), έχει προστεθεί η διαδικασία "make-systemd-constructor".
  • Προστέθηκε διαδικασία για την έναρξη μιας υπηρεσίας στο παρασκήνιο - "start-in-the-background".
  • Προστέθηκαν οι παράμετροι ":supplementary-groups", "#:create-session" και "#:resource-limits" στη ρουτίνα "make-forkeexec-constructor".
  • Ενεργοποιήθηκε η λειτουργία χωρίς αποκλεισμό κατά την αναμονή για αρχεία PID.
  • Για υπηρεσίες χωρίς την παράμετρο "#:log-file", παρέχεται έξοδος στο syslog και για υπηρεσίες με την παράμετρο #:log-file, το αρχείο καταγραφής εγγράφεται σε ξεχωριστό αρχείο που υποδεικνύει την ώρα των εγγραφών. Τα αρχεία καταγραφής από τη διαδικασία μη προνομιούχου Shepherd αποθηκεύονται στον κατάλογο $XDG_DATA_DIR.
  • Η υποστήριξη για την κατασκευή με το Guile 2.0 έχει διακοπεί. Τα προβλήματα κατά τη χρήση των εκδόσεων Guile 3.0.5-3.0.7 επιλύθηκαν.
  • Η βιβλιοθήκη Fibers 1.1.0 ή νεότερη έκδοση απαιτείται πλέον για να λειτουργήσει.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο