Guix:最先進的作業系統?

banq發表於2021-08-20

Guix 支援多種架構(截至 2019 年 1 月的i686、x86 64、ARMv7 和 AArch64),並且計劃支援 Linux 以外的更多核心。Nix 是作業系統研究的歷史性突破,Guix 幾乎所有的想法都歸功於它。
Guix 深受 Nix 的啟發,借用了它的大部分想法並解決了Nix 沒有做對的主要問題:

1.沒有定製語言
Guix 沒有提出自制的領域特定語言(DSL),而是使用了一個完整的-成熟的程式語言。在這方面做得很好,因為它是 Guile Scheme,一種基於 Lisp 的語言。
“推出自己的程式語言”是軟體開發中一個非常普遍的謬誤。它對許多配置或程式語言的專案造成了沉重打擊:

  • 表現力和特徵有限;
  • 另一種需要學習的語言(但不是非常有用和可重用的語言),它需要使用者端付出一些努力,從而造成進入障礙;
  • 更難閱讀(至少在開始時);
  • 並且經常表現不佳。

重新發明輪子通常不是一個好主意,當涉及到像程式語言這樣的核心工具時,它會產生相當大的後果。它會產生不必要的摩擦和錯誤。它分散了周圍的社群。更整合的社群可以更高效,並更好地利用他們的時間來改進現有的、設計良好的程式語言。
 

2.USB可攜帶
它允許在 USB 盤上重新生成當前系統。這使得建立我當前系統的USB克隆變得相當容易,USB可以插入任何地方並複製我的確切計算環境(減去硬體)。我可以包含自定義資料,例如我的 PGP 金鑰,並擁有所有內容,包括電子郵件,從啟動時就可以直接使用。
 
Guix 可以替代任何包管理器,尤其是程式語言的包管理器。它有幾個好處:

  • 它帶來了無處不在的再現性。
  • 它允許在任何地方回滾。
  • 它使您無需學習另一個包管理器。

 

3.核心
許多作業系統僅提供對自定義核心的有限支援。如果使用者希望避開預設核心,則必須手動維護自定義核心,這可能會很痛苦。
Gentoo 以“需要”自定義核心作為推薦(強制?)安裝步驟而聞名。然而,這幾乎不是宣告性的,使用者必須自己維護核心的配置。
使用 Guix,核心是一個完全可定製的包,就像其他任何包一樣。可以自定義所有內容並將自定義核心配置檔案傳遞給包定義。
 

4. 適合遊戲
由於 Guix 軟體包是最先進的(例如,最新版本的 Mesa 隨時可用),同時它允許完整的核心定製,因此它可以成為遊戲的理想平臺,尤其是打包遊戲!
雖然 Guix 代表自由軟體並且不會在其儲存庫中接受任何非自由的東西,但具有諷刺意味的是,Guix 的許多高階功能使其成為專有軟體最理想的包管理器之一。
Guix 將成為打包和分發閉源遊戲的理想工具。
 

5. 介面
Guix 的一個驚人優勢是它的 Emacs 介面:Emacs-Guix允許您安裝和刪除包、有選擇地升級、搜尋、轉到包定義、管理代、列印它們之間的“差異”等等。
 

6. 儲存管理
由於 Guix 允許您保留幾代系統配置(包括所有包歷史記錄),因此與其他作業系統相比,它對磁碟使用的要求更高。
 
最喜歡的功能:

  • 牢不可破的系統:Guix 維護系統和使用者級別的所有更改的歷史記錄。如果更新破壞了任何東西,總是可以回滾的。這有效地使系統牢不可破
  • 系統完整性:因為系統配置是宣告性的,這為使用者或系統管理員提供了對正在發生的事情的完整保證。在其他 Unices 上,很難判斷某些隨機配置檔案何時被修改。
  • 完全可程式設計的作業系統:對您的系統配置進行程式設計並將其置於版本控制之下。Guile Scheme 可以配置很多系統服務,從 udev 規則到 Xorg、PAM 等等。感謝 Guile,配置可以以硬體甚至主機名為條件!
  • 直接替換其他(不太好)的包管理器:無需單獨管理 Emacs、Python 或 TeXlive 包,您可以使用一個統一的介面來管理它們!它使使用者配置檔案宣告更容易編寫和維護。
  • 使用 Guile 的包定義:集體制定包(重新)定義要高效得多。它有利地取代了諸如 Portage 的 USE 標誌之類的概念。
  • 部分升級:100% 支援。這可能是Arch Linux 和 Gentoo等滾動釋出系統出現故障的主要原因:因為一次只支援幾個版本(大多數只有一個),整個系統必須一起更新。這意味著每次升級都會使用更多頻寬。使用 Guix,完全可以單獨更新任何包。
  • “持續整合”或“為什麼 Guix 可以在沒有包維護者的情況下工作”:由於可複製的構建和部分升級支援,一旦包在 Guix 中工作,它“永遠”工作,它不會在某些依賴項的下一次升級時中斷。相比之下,大多數其他 GNU/Linux 社群需要幾十名維護人員來保持數千個軟體包的最新狀態。這不能擴充套件:最終這些作業系統停滯在幾千個包上。使用 Guix,包裹數量可以安全地保持增長,而不必擔心破產。同時,可以更好地利用貢獻者的時間。
    使用 Guix,從原始碼構建和直接安裝預構建包同樣簡單。事實上,區別對終端使用者來說並不那麼重要:如果沒有可用的預構建包,Guix 可以透明地回退到從源構建。
  • guix import和guix refresh:自動和遞迴地生成或更新包定義。可以同時處理數百個包定義。像這樣的功能突出了手頭擁有真正的程式語言的好處。大多數作業系統上的難題透過 Guix 變得相對容易實現。
  • Guix 頻道:最喜歡的功能之一!在 Arch Linux 或 Gentoo 上,必須建立一個本地儲存庫。因為它們不支援部分升級,這意味著使用者必須偶爾做一些維護(即確保依賴升級不會破壞使用者的包。)包繼承使得使用補丁自定義包變得非常容易,例如。Guix 頻道有利地取代了 Arch Linux 的 AUR 和 Gentoo 的覆蓋層,允許任何人從例如 Git 儲存庫分發他們的包定義。同樣,這保證了完全透明(回滾、歷史記錄等)。
  • Emacs-Guix:Guix 是我所知道的唯一一個帶有最強大的 Emacs 使用者介面的發行版!
  • Guix 包:它們允許替代像 Docker 這樣的容器。大多數容器系統都存在關鍵問題:它們不可重現,而且確實是不透明的二進位制檔案,這對於關心信任、安全和隱私的使用者來說是一個很大的禁忌。相反,Guix 包是完全指定的、可複製的和透明的。
  • guix system vm和guix system disk-image:Guix 使得將自身(整個當前系統)複製為實時 USB、在虛擬機器內或在遠端機器上變得微不足道。




 

相關文章