Selepas dua tahun sejak pembentukan versi utama terakhir, pelancaran versi baharu GNU Shepherd service manager 0.9 (dahulunya dikenali sebagai dmd) telah diumumkan kepada umum . Ia sedang dibangunkan oleh pembangun pengedaran GNU Guix sebagai alternatif kepada permulaan SysV-init yang menyedari kebergantungan sistem.
Shepherd menyediakan fungsi ruang pengguna secara tak segerak sebagai perkhidmatan , yang dalam Shepherd merupakan fungsi generik dan jenis data objek yang dieksport untuk Shepherd gunakan dalam melanjutkan sistem pengendalian asas dengan cara yang ditentukan. Tidak seperti systemd, proses pemantauan ruang pengguna berjalan sebagai pengguna tersebut.
Mengenai Shepherd
Teras model permulaan ruang pengguna Shepherd ialah konsep peluasan, satu bentuk kebolehkomposan di mana perkhidmatan direka bentuk untuk bertindih dengan perkhidmatan lain, menambahnya dengan tingkah laku yang lebih terperinci atau khusus seperti yang dikehendaki. Ini menyatakan hubungan kebergantungan berasaskan instansiasi yang terdapat dalam banyak sistem init moden, menjadikan sistem modular, tetapi juga membenarkan perkhidmatan berinteraksi secara berubah-ubah dengan perkhidmatan lain dengan cara yang sewenang-wenangnya.
Shepherd juga menyediakan apa yang dipanggil perkhidmatan maya yang membolehkan penghantaran dinamik ke atas kelas objek perkhidmatan berkaitan, seperti semua yang mencipta contoh ejen pemindahan mel (MTA) untuk sistem.
Sistem yang ditadbir oleh daemon Shepherd boleh mewakili ruang penggunanya sebagai graf akiklik terarah, dengan "perkhidmatan sistem" (bertanggungjawab untuk fasa but awal dan permulaan) sebagai akar dan semua perkhidmatan yang dimulakan berikutnya sebagai lanjutan kefungsian perkhidmatan sistem , sama ada secara langsung atau transitif berbanding perkhidmatan lain.
Oleh kerana ia ditulis dan dikonfigurasikan dalam Guile Scheme, GNU Shepherd direka bentuk untuk diprogramkan dengan sangat baik oleh pentadbir sistem, tetapi ia juga boleh digunakan untuk mengurus profil setiap pengguna bagi daemon dan perkhidmatan yang tidak bernasib baik.
Perkhidmatan dan konfigurasinya disimpan secara seragam sebagai kod Skim berorientasikan objek, dan walaupun satu set teras perkhidmatan disediakan dengan sistem Guix asas, perkhidmatan baharu sewenang-wenangnya boleh diisytiharkan secara fleksibel, dan melalui sistem objek Guile, GOOPS, perkhidmatan sedia ada boleh ditakrifkan semula mengikut budi bicara pengguna dengan meminta Shepherd menulis semula perkhidmatan secara dinamik dengan cara tertentu semasa instansiasi.
GNU Shepherd pada asalnya direka untuk bekerja dengan GNU Hurd dan kemudiannya diterima pakai oleh Sistem Guix.
Ciri baharu utama GNU Shepherd 0.9
Versi baharu ini mengetengahkan pelaksanaan konsep perkhidmatan sementara (sementara), yang diputuskan sambungannya secara automatik selepas penamatan disebabkan oleh penamatan proses atau panggilan kepada kaedah "berhenti", yang mungkin diperlukan untuk perkhidmatan yang disintesis yang tidak boleh dimulakan semula selepas penamatan.
Satu lagi perubahan ketara ialah untuk perkhidmatan tanpa parameter "#:log-file" , output diberikan kepada syslog , dan untuk perkhidmatan dengan parameter "#:log-file", log ditulis ke fail berasingan yang menunjukkan masa log dalam proses Shepherd yang tidak bernasib baik, yang disimpan dalam direktori $XDG_DATA_DIR.
Di samping itu, perlu diperhatikan bahawa prosedur "make-inetd-constructor" telah ditambahkan untuk mencipta perkhidmatan yang serupa dengan inetd dan prosedur "make-systemd-constructor" telah ditambah untuk mencipta perkhidmatan yang diaktifkan dalam aktiviti rangkaian (style systemd socket pengaktifan).
Perubahan ketara lain dalam versi baharu ini termasuk:
- Menambah prosedur untuk memulakan perkhidmatan latar belakang:
- Menambahkan parameter ":suplementary-groups", "#:create-session" dan "#:resource-limits" pada prosedur "make-forkexec-constructor".
- Dijamin operasi bebas kunci sementara menunggu fail PID.
- Mengalih keluar sokongan untuk menyusun dengan Guile 2.0. Memperbaiki isu apabila menggunakan Guile versi 3.0.5-3.0.7.
- Fibers library 1.1.0 atau lebih baru kini diperlukan untuk berfungsi.
- Dokumentasi dan contoh yang lebih baik
- Shepherd tidak lagi boleh dibina dengan Guile 2.0
- Betulkan pepijat pengkompil Guile 3.0.[5-7]
- Terjemahan yang dikemas kini
Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut atau ingin mendapatkan versi baharu ini, anda boleh merujuk butiran, dokumentasi dan muat turun daripada pautan berikut.