FOSDEM Flox 旨在让新手更容易使用 Nix,简化在 Linux 和 macOS 上安装相同开发环境的工作。
Reg之前曾研究过 Nix 打包系统,并在一年后使用它构建了发行版。
Nix 是一种完全不同的在类 Unix 操作系统上管理软件的方式。它解决了很多传统方法带来的问题,但代价是打破了很多假设和惯例。因此,自从 21 年前发明以来,更多主流发行版的维护者发明了 Snap、Flatpak、AppImage 等,所有这些都是为了解决几乎相同的问题。
科技初创公司 Flox希望简化并揭开 Nix 的神秘面纱,并且刚刚发布了其同名产品的 1.0 版,该产品被称为虚拟环境和包管理器合二为一。
除了 Flox 命令行工具外,该公司还提供FloxHub ,这是一个用于共享和管理Flox 环境的在线存储库。该名称是对 GitHub 的回调,以及处理它的命令(上传 Flox 环境定义、管理它们以及下载和部署它们)有意类似于大多数 Linux 和 Mac 开发人员已经熟悉的 Git 和本地包管理命令。
Flox 平台基于 Nix,它从包含 80,000 多个软件包的庞大Nixpkgs 存储库中提取组件。该计划是提供比 Nix 本身更简单、更熟悉的界面,Nix 使用自己的纯函数式语言来管理软件。 去年,Reg FOSS 部门在 FOSDEM 与 Flox 首席执行官 Ron Efroni 和首席技术官 Michael Brantley 进行了几个小时的交谈。
纯函数式编程有很多优点,例如声明性编码——您可以指定想要的结果,而不是设计如何计算结果的逻辑。(想想 SQL:SELECT name FROM students WHERE age >= 12- 您不需要告诉数据库如何排序、搜索或匹配;您只需告诉它您正在寻找什么答案,它就为您完成了困难的部分。)但是,函数式编程这是一种与传统命令式语言如此不同的工作方式,以至于很多人觉得它非常困难,以至于有很多关于它的笑话。
Flox 封装了所有复杂的 Nix 内容,因此您只需在TOML 格式清单中列出所需的组件以及要设置的任何环境变量或要运行的命令。您不需要指定包、版本、架构或任何细节——它会为您处理所有这些。然后,Flox 会安装或构建在目标系统上创建确切环境所需的任何内容 - 无论操作系统是什么。Flox 目前有.deb和.rpm两种格式,适用于 x86-64 和 ARM64 Linux 以及 ARM64 macOS。
得益于 OpenELA,Linux 内核 4.14 的寿命得以延长 TrueNAS CORE 13 是 FreeBSD 版本的终结 Raspberry Pi OS 5.2 现已发布,对基于 Wayland 的桌面进行了令人愉快的调整 新版本的 Windows 用户友好型 Zorin 操作系统来吸引对 Linux 持谨慎态度的人正如Flox 开发人员 Zach Mitchell在他对 Flox 1 的清晰且不太技术性的介绍中所说:
由于所有这些都是使用 Nix 构建的,因此这些环境是防弹的,并且可以跨不同操作系统和架构移植。
[…]
借助 Flox,您无需了解Nix 即可从 Nix 中受益。
Flox 抽象并取代了任何特定发行版的包管理器或附加包管理器(例如 macOS 上的 Homebrew)的功能。它还取代了 Docker 等容器管理系统,并为开发人员取代了Red Hat 的 Ansible等附加配置管理软件。
该公司关于该版本的博客文章讨论了声明性规范和可重复性等质量。这些都是 Flox 从 Nix 基础上继承的东西。Flox 环境是可重复的,这意味着您将在每台计算机上获得相同组件的完全相同版本,无论底层操作系统或其提供什么,包括自环境创建以来这些组件是否已更改。
它是声明性的,这意味着您只需指定所需的结果,而不是如何实现它。您不需要指定检查现有组件、存储库或其他软件源或包处理命令是否存在。
它是可组合的,这意味着环境不像容器映像那样具有排他性。如果您同时需要前端和后端环境,只需activate两者都可以,剩下的由 Flox 完成。该公司还声称其工具比 Nix 本身更快,后者性能缓慢是我们经常听到的少数抱怨之一。
这只秃鹫从来都不是软件开发人员,所以对我们来说,大部分内容完全是理论性的。然而,我们与相当多的 Nix 用户交谈过,他们的热情始终闪耀着。不过,他们也承认这很难掌握,而且速度可能很慢,而且非常耗费资源。
Flox 似乎直面这个问题,并在非常陌生的 Nix 世界之上强加了一个更简单、更熟悉的模型,以及用于共享清单和环境的工具。对于这个初始版本,Flox 仅使用一个 CLI 工具和一个在线存储库来让事情变得简单……但该公司对未来有更大、更雄心勃勃的计划。
责任编辑:野哥
图片版权归原作者所有,如有侵权请联系我们,我们立刻删除。
随机文章