商店
NixOS
0
2003年6月3日
概述
NixOS 是一個免費、開源的 Linux 發行版,基於 Nix 套件管理器,以其聲明式配置和可重現性而聞名。 NixOS 透過一個設定檔(通常為 /etc/nixos/configuration.nix)定義整個系統狀態,包括軟體包、系統服務和使用者配置,確保系統在不同裝置上具有一致性和可回滾性。 NixOS 適合開發者、系統管理員和研究人員,廣泛應用於開發環境、伺服器管理和學術實驗。
歷史與發展
- 起源:
- NixOS 起源於 2003 年,由 Eelco Dolstra 在荷蘭代爾夫特理工大學開發,基於 Nix 套件管理器,旨在解決傳統套件管理的依賴衝突和不可重現問題。
- 2004 年,首個 NixOS 版本發布,引入聲明式配置模型。
- 發展歷程:
- 2004-2010:NixOS 建立核心功能,如原子升級、回滾和隔離環境。
- 2015:引進 NixOps,支援聲明式雲端部署。
- 2020-2025:NixOS 24.11(2024 年 11 月) 最佳化 Flakes(版本鎖定機制),增強可重現性,支援容器(如 Podman)和桌面環境(如 Hyprland)。
- 社群專案:Home Manager(管理使用者配置) 和 Colmena(多主機部署)擴充 NixOS 功能。
- 社區與支持:
- 由 NixOS 社群維護,託管於 nixos.org 和 GitHub。
- 提供中文文件(wiki.nixos.org)和論壇(如 Discourse)。
- 開源授權:採用 GNU Lesser GPL v2.1(LGPL),允許自由使用和修改,衍生作品需開源。
主要特點
NixOS 以其聲明式配置和 Nix 套件管理器為核心,適合開發和生產環境。以下是其主要特點:
- 聲明式配置
- 配置模型:
- 透過 /etc/nixos/configuration.nix 或 Flakes 定義系統狀態,包括軟體包、服務和使用者設定。
- 使用 sudo nixos-rebuild switch 應用配置,產生新系統狀態。
- 配置模型:
- 可重現性與隔離
- Nix 套件管理器:
- 使用函數式套件管理,隔離每個套件的依賴。
- 套件安裝在 /nix/store(如 /nix/store/...-python3-3.11),避免衝突。
- 可重現性:
- 相同的 Nix 配置在不同裝置上產生一致環境,適合團隊合作。
- Nix 套件管理器:
- 原子升級與回滾
- 原子升級:
- 使用 sudo nixos-rebuild switch 升級系統,失敗不影響目前狀態。
- 復原:
- GRUB 選單保留歷史配置,允許回滾到舊狀態。
- X 用戶稱「回滾讓我無畏系統崩潰」。
- 原子升級:
- 靈活的套件管理
- Nixpkgs:
- 包含 80,000+ 軟體套件(如 Python,Django,PostgreSQL),社群維護。
- 使用 nix-env -iA nixos.python3 安裝套件。
- Flakes:
- 提供版本鎖定,確保配置可重現。
- Nixpkgs:
- 跨平台與工具
- 支援系統:支援 x86_64,ARM,VirtualBox。
- 工具:
- NixOps:聲明式雲端部署(AWS,VirtualBox)。
- Home Manager:管理使用者配置(如 .bashrc)。
- Podman:執行 Arch Linux 容器,解決非 Nix 套件問題。
優勢與限制
優勢
- 聲明式配置:
- 透過單一設定檔管理系統,簡化部署。
- X 貼文稱為「configuration.nix 讓系統管理如程式碼」。
- 可重現性:
- 確保開發環境一致,適合團隊協作專案。
- 原子升級與回滾:
- 安全升級,失敗可回滾,適合實驗性開發(如 Hyprland)。
- 隔離環境:
- 避免依賴衝突,適合執行 PostgreSQL/SQLite。
- 社區支持:
- 活躍社群(wiki.nixos.org)、GitHub 和 X。
限制
- 學習曲線:
- Nix 語言和聲明式配置對新手複雜,需學習。
- 解決:參考 nixos.org/learn 和 X 教學。
- 動態資料限制:
- 無法管理動態資料(如 PostgreSQL 資料庫內容)。
- 資源佔用:
- /nix/store 儲存多個套件版本,佔用磁碟空間(約 5GB+)。
- 解決:定期清理(nix-collect-garbage)或用 antiX 優化。
- 非主流體驗:
- NixOS 設定複雜。
- 解決:在 VirtualBox 測試 NixOS,熟悉後再部署。
總結
NixOS 是一個基於 Nix 套件管理器的開源 Linux 發行版,以聲明式配置、可重現性和原子升級著稱,適合開發環境、伺服器管理和學術研究。其隔離環境、回滾功能和 Flakes 使其成為強大的平台。 NixOS 更適合需要一致性和可重現性的專案。