COSCUP 2025

Nix 介紹:程式設計、打包軟體和可重複的開發環境
10/08/2025 , TR213

Nix 是一個開源的套件管理系統,主要針對 Unix 類系統所設計。它不僅僅是一個套件管理器,更是一個讓軟體構建與部署過程變得可預測、可重複的完整生態系統。

這次演講我會聚焦在三個主題上:
1. Nix 程式設計語言
2. 使用 Nix 打包軟體
3. 利用 Nix flakes 建立可重複的開發環境
我們會先從 Nix 的基本概念開始談起,理解它是如何管理軟體與環境,然後再深入這三個主題。

首先,來看看 Nix 語言本身。這是一種純函數式語言,它具有延遲求值、動態型別的特性,最主要的用途是用來描述軟體套件的內容。等一下我會透過一些簡單的程式碼範例,帶大家一步一步認識這門語言。

接著,我們會討論 Nix 如何處理軟體打包。在 Nix 的世界裡,每個軟體包被定義為一個「衍生品」,英文叫 derivation。你可以把它想像成一個建構配方,它描述了如何從一組輸入建構出一個特定的軟體。這些衍生品是用 Nix 語言來撰寫的,而當我們執行構建命令時,Nix 會根據這些描述產出一個「儲存元素」(store path)。這些儲存元素是不可變的,而且是根據建構輸入的雜湊值來命名的,這也意味著:如果你看到兩個名稱相同的儲存元素,那它們的內容幾乎可以確定是一模一樣的。

最後,我們會談到可重複的環境建構。這是 Nix 最令人驚艷的地方之一。因為所有衍生結果都是不可變、且唯一命名的,我們可以精確地還原出一個開發或執行環境,不管是在你的筆電、同事的電腦,還是幾個月後的伺服器上——效果都是一樣的。我會以 Nix flakes 為例,這是一種新穎但仍在實驗階段的打包方式,來示範如何定義並重現一個完整的開發環境。


Public cible:

所有對軟體套件管理有興趣的人

Niveau de difficulté:

初學者

呂艾倫是博通 Tanzu 部門的主任工程師。在 2023 年加入博通之前,他是 VMware 的機器學習 staff 工程師,專注於雲端安全的異常檢測。此前,呂先生曾在 Prudential、PIMCO、Activision 和波音公司擔任資料科學、數理金融和軟體工程方面的職位。他在科技和金融領域擁有 20 年的經驗,並擁有加州大學洛杉磯分校安德森管理學院金融工程碩士和哥倫比亞大學電腦科學學士。

Autre(s) intervention(s) de l'orateur :