Tea 正在创造将改变代码分发方式的新技术
广受欢迎的 macOS 自制软件包管理系统brew的作者 Max Howell宣布,他正在开发一款名为 Tea 的新软件包管理器,该管理器定位为 brew 开发的延续,超越了软件包管理器本身,提供了一个与去中心化存储库协同工作的统一软件包管理基础架构。
Tea 在概念上与传统的包管理器不同,它不是“我想安装一个包”,而是“我想使用一个包”。
具体来说,Tea 本身并没有软件包安装命令;它使用环境生成来运行与当前系统不冲突的软件包内容。软件包被放置在单独的 ~/.tea 目录中,并且没有分配绝对路径(它们可以被移动)。
Tea 提供两种基本操作模式:跳转到包含已安装软件包的环境的命令行 shell,以及直接调用与软件包相关的命令。例如,运行“tea +gnu.org/wget”将使软件包管理器下载 wget 工具及其所有必要的依赖项,然后提供一个包含已安装 wget 工具的环境的 shell 访问权限。
第二种方法是直接运行:` tea +gnu.org/wget -qO- tea.xyz/white-paper | tea +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。
该文件还描述了依赖关系并为支持的平台提供构建脚本。 安装的依赖项是不可变的(版本是固定的),这消除了类似左垫事件的重复情况。
未来计划创建不依赖于任何独立存储的去中心化代码库,并使用分布式区块链存储元数据,以及使用去中心化基础设施存储软件包。版本将由维护者直接认证,并由利益相关者审核。未来可能会分发加密货币代币,用于支持软件包的维护、支持、分发和验证。
最后值得一提的是,该项目目前正在开发为跨平台应用程序(目前支持 macOS 和 Linux,Windows 支持正在开发中)。项目代码使用 TypeScript 编写,并以 Apache 2.0 许可证发布(brew 使用 Ruby 编写,并以 BSD 许可证发布)。
如果您有兴趣了解更多信息,可以点击以下链接查看 Tea 的详细信息和用户手册。