Tea 正在創造將改變代碼分發方式的新技術
馬克斯·豪厄爾,作者 流行的包管理系統 釀造 (Homebrew) 的 macOS,透露 正在開發一個名為 Tea 的新包管理器, 它被定位為 brew 開發的延續,超越包管理器並提供與分散存儲庫一起工作的統一包管理基礎架構。
Tea 在概念上不像傳統的包管理器。,而不是“我想安裝一個包”的範式,它使用“我想使用一個包”的方法。
特別是 Tea 沒有包安裝命令 因此,而是使用環境生成來運行不與當前系統重疊的包內容。 包放在一個單獨的 ~/.tea 目錄中,並且沒有分配給絕對路徑(它們可以移動)。
Tea中提供了兩種基本模式 操作:跳轉到一個命令外殼,可以訪問安裝了包的環境,並直接調用與包相關的命令。 例如,通過運行“tea +gnu.org/wget”,包管理器將下載 wget 實用程序和所有必要的依賴項,然後在安裝的 wget 實用程序可用的環境中提供 shell 訪問。
第二種選擇涉及直接啟動:«tea +gnu.org/wget -qO- tea.xyz/white-paper | 茶 +charm.sh/glow glow – ",這將安裝 wget 實用程序並立即在單獨的環境中運行它,下載一個將使用 glow 呈現的文件。 複雜的鏈接是可能的,例如,要下載 white-paper.pdf 文件並使用 glow 實用程序處理它,您可以使用以下結構(如果 wget 和 glow 不存在,它們將被安裝)。
同樣的, 你可以直接運行腳本、代碼示例和單行代碼,自動加載工作所需的工具。
舉個例子,運行:
tea https://gist.githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go --yellow
tea: installing go 1.18.3
go: installing deps
go: running colors.go
…
它將安裝 Go 語言工具包並以“–yellow”作為參數運行 colors.go 腳本。
為了不每次都調用tea命令,可以連接成萬能管理器 虛擬環境和缺失程序的驅動程序。 在這種情況下,如果正在運行的程序不可用,它將被安裝,如果以前安裝過,它將在您的環境中啟動。
以目前的形式, 可用於 Tea 的包裝分為兩個系列, pantry.core 和 pantry.extra,其中包括描述包下載源、構建腳本和依賴項的元數據。
集合 pantry.core 包括 Tea 開發人員可以使用的核心庫和實用程序 保持最新和測試。 pantry.extra 包含不穩定的包 或者社區建議的。 提供了一個 Web 界面來瀏覽這些包。
為 Tea 創建包的過程大大簡化並簡化為創建一個通用的 package.yml 文件(示例),不需要為每個新版本調整包。 要發現新版本並下載其代碼,可以將包鏈接到 GitHub。
該文件還描述了依賴關係並為支持的平台提供構建腳本。 安裝的依賴項是不可變的(版本是固定的),這消除了類似左墊事件的重複情況。
在未來,計劃創建去中心化的存儲庫ue 不依賴於任何單獨的存儲,並使用分佈式區塊鏈存儲元數據和分散的基礎架構來存儲包。 版本將由維護者直接認證並由相關方審查。 可以分發加密貨幣令牌以促進包的維護、支持、分發和驗證。
最後,值得一提的是,目前 該項目最初是作為跨平台開發的 (目前支持 macOS 和 Linux,Windows 支持正在開發中。) 該項目的代碼是用 TypeScript 編寫的,並在 Apache 2.0 許可下發布(brew 是用 Ruby 編寫的,並在 BSD 許可下發布)。
如果您有興趣能夠了解更多信息,可以在以下位置查閱 Tea 的詳細信息和用戶手冊 以下鏈接。