Sapphire:一個基於 Rust 的新包管理器挑戰 Homebrew 在 macOS 上的主導地位

BigGo Editorial Team
Sapphire:一個基於 Rust 的新包管理器挑戰 Homebrew 在 macOS 上的主導地位

Sapphire,一個用 Rust 編寫的新型實驗性包管理器,已經成為 macOS 上流行的 Homebrew 包管理器的潛在替代品。儘管仍處於 alpha 階段,這個專案在開發者社群中引發了關於 Apple 平臺上包管理未來以及用效能更高的語言重寫已有工具的優勢的廣泛討論。

Sapphire 背後的動機

Sapphire 的建立者,在討論中以 alexykn 為名,最初是為個人使用而開始構建這個工具。他們的主要目標並非一定要與 Homebrew 競爭,而是為 macOS 建立一個宣告式包管理和系統管理解決方案的基礎。這位開發者表達了對 Homebrew 在封裝其命令時效能不佳的失望,這促使他們使用 Rust 從頭開始構建 Sapphire。

「我想要,現在仍然想要,在此基礎上構建一個宣告式的包管理和系統管理解決方案。這個想法是透過這個專案學習 Rust。使用相同語言編寫基礎部分而不是封裝命令也提供了更多的靈活性。」

這凸顯了開源社群中的一個常見模式,開發者經常建立工具來解決他們的特定需求,然後這些工具才演變成更廣泛的解決方案。

效能考慮和技術方法

許多評論者關注 Sapphire 和 Homebrew 之間的效能比較。雖然 Homebrew 操作有時感覺緩慢,但一些使用者甚至 Homebrew 維護者指出,瓶頸不一定與 Ruby 作為實現語言有關。相反,它們源於架構決策和禮貌性限制。

一位 Homebrew 維護者解釋說,Homebrew 沒有實現並行下載不是因為技術限制,而是出於擔心過多的併發請求會使下載源負擔過重。隨著包管理器使用者群的增長,這種考慮變得越來越重要。

Sapphire 目前實現了並行下載和安裝,這有助於其感知上的速度優勢。該專案主要專注於支援 bottle 安裝(預編譯包)和 casks(應用程式),這涵蓋了 macOS 使用者的大多數用例。

社群反應和功能請求

社群對 Sapphire 的反應是熱情和懷疑的混合體。許多使用者對 Homebrew 的術語表達了不滿,它使用與釀造相關的術語如 casks、kegs 和 cellars,而不是更標準的包管理術語。幾位評論者敦促 Sapphire 開發者採用更清晰的命名約定。

命令名稱長度是另一個爭議點,多位使用者認為 sapphire 相比 brew 太長,並建議使用更短的替代方案以改善使用者體驗。

一些使用者還請求 Homebrew 目前缺乏的功能,如更好的多使用者支援、按使用者安裝和更宣告式的包管理方法。這些請求突顯了新包管理器可能與 Homebrew 區分開來的領域。

開發狀態和路線圖

Sapphire 明確標記為 alpha 軟體,開發者警告說它是實驗性的,正在大力開發中,可能不穩定。該專案當前的功能包括 bottle 安裝和解除安裝、cask 管理、並行下載和安裝、自動依賴解析,以及從原始碼構建 formulae 的早期實現。

路線圖包括實現升級和清理命令,新增重新安裝功能,支援字首隔離,以及建立初始化助手。開發者對專案進度保持透明,指出由於他們主要在週末工作,同時還有全職工作,進展可能會很慢。

雖然 Sapphire 目前可以處理許多包安裝任務,但在完全複製 Homebrew 的功能方面面臨重大挑戰,特別是在從原始碼構建包方面。開發者承認,完整的 Ruby 到 Rust 轉譯器超出了範圍,表示他們可能會選擇基於歸檔結構的自動構建系統檢測作為替代。

Sapphire 當前狀態

  • 瓶裝軟體的安裝和解除安裝
  • 木桶軟體的安裝和解除安裝
  • 並行下載和安裝以提高速度
  • 自動依賴解析和安裝
  • 從原始碼構建配方的早期實現
  • 僅支援 ARM 架構(可能最終會新增 x86 支援)

專案結構

  • sapphire-core:用於獲取、依賴解析、歸檔提取等的核心庫
  • sapphire-cli:包裝核心庫的命令列介面

路線圖

  1. Upgrade 命令用於更新已安裝的軟體包
  2. Cleanup 用於清理舊下載、版本和快取
  3. Reinstall 命令用於快速重新傾倒
  4. 字首隔離:支援 /opt/sapphire 作為獨立佈局
  5. sapphire init 輔助程式引導環境
  6. 持續的錯誤修復和穩定性改進

包管理的更廣泛背景

圍繞 Sapphire 的討論突顯了 macOS 上包管理的持續演變。Homebrew 本身透過提供許多人認為是更好的使用者體驗,儘管有技術上的權衡,取代了早期的解決方案如 MacPorts 和 Fink。

幾位評論者指出,理想的包管理器將結合編譯語言如 Rust 的效能優勢與 Homebrew 基於 Ruby 的 formula 系統提供的靈活性和易於貢獻的特點。其他人指向替代方法如 Nix 或 pkgx(另一個由 Homebrew 的原始建立者開發的基於 Rust 的包管理器)。

隨著 macOS 繼續發展,特別是向 Apple Silicon 的過渡,顯然市場需要能夠適應這些變化同時解決長期痛點的包管理解決方案。

雖然 Sapphire 仍處於早期階段,在真正替代 Homebrew 之前面臨重大挑戰,但其開發代表了保持開發者工具不斷發展的健康創新生態系統。無論它最終是成功成為 Homebrew 的替代品,還是僅僅引入改進更廣泛包管理領域的想法,像 Sapphire 這樣的專案在推動技術進步方面扮演著重要角色。

參考:Sapphire