GNU Shepherd,由 Guix 開發的服務管理器

經過兩年最後一個大版本的形成, 在他發布發佈時宣布 新版服務管理器 GNU 牧羊人 0.9 (以前稱為 dmd),這是 由 GNU Guix 發行版的開發者開發 作為系統依賴感知 SysV-init 初始化的替代方案。

牧羊人 以服務的形式異步提供用戶空間功能,在 Shepherd 中是通用函數和對像數據類型,它們被導出以供 Shepherd 使用,以某種定義的方式擴展基本操作系統。 與 systemd 不同,用戶空間監視進程以該用戶身份運行。

關於牧羊人

用戶空間初始化的 Shepherd 模型的核心是擴展的概念,這是一種可組合性形式,其中服務旨在覆蓋其他服務,並根據需要使用更精細或更專業的行為來增強它們。 這表達了在許多現代引導系統中發現的基於實例化的依賴關係,它 使系統模塊化,但也允許服務之間進行可變交互 隨意服務。

牧羊人 還提供所謂的虛擬服務 允許對一類相關服務對象進行動態調度,例如那些為系統實例化郵件傳輸代理 (MTA) 的服務對象。

由 Shepherd 守護進程管理的系統可以將其用戶空間表示為有向無環圖,其中“系統服務”(負責早期引導和啟動階段)作為根,所有後續初始化的服務作為系統服務功能的擴展,直接或通過其他服務傳遞。

在 Guile Scheme 中編寫和配置, GNU Shepherd 被設計成高度可編程的 由系統管理員提供,但也可用於管理非特權守護程序和服務的每個用戶配置文件。

您的服務和設置統一存儲為方案代碼 面向對象,雖然基本的 Guix 系統提供了一組核心服務,但可以靈活地聲明任意新服務,通過 Guile 的對象系統 GOOPS,用戶可以通過詢問 Shepherd 動態重寫服務來重新定義現有服務實例化的具體方法。

GNU Shepherd 最初是為與 GNU Hurd 一起工作而設計的,後來被 Guix 系統採用。

GNU Shepherd 0.9 的主要新特性

在展示的這個新版本中,強調了 實施臨時服務的概念 (transient),由於進程終止或“stop”方法調用而終止後自動斷開,對於終止後無法重新啟動的合成服務可能需要。

另一個突出的變化是 對於沒有 ""#:log-file" 參數的服務, 提供到 syslog 的輸出 對於帶有“#:log-file”參數的服務,日誌被寫入一個單獨的文件中,該文件指示存儲在 $XDG_DATA_DIR 目錄中的非特權 Shepherd 進程中的日誌時間。

此外,值得注意的是,添加了“make-inetd-constructor”程序來創建類似於inetd的服務,並添加了“make-systemd-constructor”程序來創建在網絡活動中激活的服務(樣式systemd socket激活)。

其他變化 從這個新版本中脫穎而出:

  • 添加了啟動後台服務的過程:
  • 在“make-forkexec-constructor”過程中添加了“:supplementary-groups”、“#:create-session”和“#:resource-limits”參數。
  • 等待 PID 文件時保證無鎖操作。
  • 刪除了對使用 Guile 2.0 進行編譯的支持。 修復了使用 Guile 版本 3.0.5-3.0.7 時的問題。
  • 現在需要使用 Fibers library 1.1.0 或更高版本。
  • 改進的文檔和示例
  • 牧羊犬不能再用 Guile 2.0 建造
  • 修復 Guile 3.0 編譯器錯誤。[5-7]
  • 更新的翻譯

終於 如果您有興趣了解更多信息 或者您想獲得這個新版本,您可以查閱詳細信息、文檔並從 以下鏈接。


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。