Guix:最先进的操作系统?


Guix 支持多种架构(截至 2019 年 1 月的i686、x86 64、ARMv7 和 AArch64),并且计划支持 Linux 以外的更多内核。Nix 是操作系统研究的历史性突破,Guix 几乎所有的想法都归功于它。
Guix 深受 Nix 的启发,借用了它的大部分想法并解决了Nix 没有做对的主要问题:
1.没有定制语言
Guix 没有提出自制的领域特定语言(DSL),而是使用了一个完整的-成熟的编程语言。在这方面做得很好,因为它是 Guile Scheme,一种基于 Lisp 的语言。
“推出自己的编程语言”是软件开发中一个非常普遍的谬误。它对许多配置或编程语言的项目造成了沉重打击:

  • 表现力和特征有限;
  • 另一种需要学习的语言(但不是非常有用和可重用的语言),它需要用户端付出一些努力,从而造成进入障碍;
  • 更难阅读(至少在开始时);
  • 并且经常表现不佳。

重新发明轮子通常不是一个好主意,当涉及到像编程语言这样的核心工具时,它会产生相当大的后果。它会产生不必要的摩擦和错误。它分散了周围的社区。更整合的社区可以更高效,并更好地利用他们的时间来改进现有的、设计良好的编程语言。
 
2.USB可携带
它允许在 USB 盘上重新生成当前系统。这使得创建我当前系统的USB克隆变得相当容易,USB可以插入任何地方并复制我的确切计算环境(减去硬件)。我可以包含自定义数据,例如我的 PGP 密钥,并拥有所有内容,包括电子邮件,从启动时就可以直接使用。
 
Guix 可以替代任何包管理器,尤其是编程语言的包管理器。它有几个好处:
  • 它带来了无处不在的再现性。
  • 它允许在任何地方回滚。
  • 它使您无需学习另一个包管理器。

 
3.内核
许多操作系统仅提供对自定义内核的有限支持。如果用户希望避开默认内核,则必须手动维护自定义内核,这可能会很痛苦。
Gentoo 以“需要”自定义内核作为推荐(强制?)安装步骤而闻名。然而,这几乎不是声明性的,用户必须自己维护内核的配置。
使用 Guix,内核是一个完全可定制的包,就像其他任何包一样。可以自定义所有内容并将自定义内核配置文件传递给包定义。
 
4. 适合游戏
由于 Guix 软件包是最先进的(例如,最新版本的 Mesa 随时可用),同时它允许完整的内核定制,因此它可以成为游戏的理想平台,尤其是打包游戏!
虽然 Guix 代表自由软件并且不会在其存储库中接受任何非自由的东西,但具有讽刺意味的是,Guix 的许多高级功能使其成为专有软件最理想的包管理器之一。
Guix 将成为打包和分发闭源游戏的理想工具。
 
5. 界面
Guix 的一个惊人优势是它的 Emacs 界面:Emacs-Guix允许您安装和删除包、有选择地升级、搜索、转到包定义、管理代、打印它们之间的“差异”等等。
 
6. 存储管理
由于 Guix 允许您保留几代系统配置(包括所有包历史记录),因此与其他操作系统相比,它对磁盘使用的要求更高。
 
最喜欢的功能:
  • 牢不可破的系统:Guix 维护系统和用户级别的所有更改的历史记录。如果更新破坏了任何东西,总是可以回滚的。这有效地使系统牢不可破
  • 系统完整性:因为系统配置是声明性的,这为用户或系统管理员提供了对正在发生的事情的完整保证。在其他 Unices 上,很难判断某些随机配置文件何时被修改。
  • 完全可编程的操作系统:对您的系统配置进行编程并将其置于版本控制之下。Guile Scheme 可以配置很多系统服务,从 udev 规则到 Xorg、PAM 等等。感谢 Guile,配置可以以硬件甚至主机名为条件!
  • 直接替换其他(不太好)的包管理器:无需单独管理 Emacs、Python 或 TeXlive 包,您可以使用一个统一的界面来管理它们!它使用户配置文件声明更容易编写和维护。
  • 使用 Guile 的包定义:集体制定包(重新)定义要高效得多。它有利地取代了诸如 Portage 的 USE 标志之类的概念。
  • 部分升级:100% 支持。这可能是Arch Linux 和 Gentoo等滚动发布系统出现故障的主要原因:因为一次只支持几个版本(大多数只有一个),整个系统必须一起更新。这意味着每次升级都会使用更多带宽。使用 Guix,完全可以单独更新任何包。
  • “持续集成”或“为什么 Guix 可以在没有包维护者的情况下工作”:由于可复制的构建和部分升级支持,一旦包在 Guix 中工作,它“永远”工作,它不会在某些依赖项的下一次升级时中断。相比之下,大多数其他 GNU/Linux 社区需要几十名维护人员来保持数千个软件包的最新状态。这不能扩展:最终这些操作系统停滞在几千个包上。使用 Guix,包裹数量可以安全地保持增长,而不必担心破产。同时,可以更好地利用贡献者的时间。
    使用 Guix,从源代码构建和直接安装预构建包同样简单。事实上,区别对最终用户来说并不那么重要:如果没有可用的预构建包,Guix 可以透明地回退到从源构建。
  • guix import和guix refresh:自动和递归地生成或更新包定义。可以同时处理数百个包定义。像这样的功能突出了手头拥有真正的编程语言的好处。大多数操作系统上的难题通过 Guix 变得相对容易实现。
  • Guix 频道:最喜欢的功能之一!在 Arch Linux 或 Gentoo 上,必须建立一个本地存储库。因为它们不支持部分升级,这意味着用户必须偶尔做一些维护(即确保依赖升级不会破坏用户的包。)包继承使得使用补丁自定义包变得非常容易,例如。Guix 频道有利地取代了 Arch Linux 的 AUR 和 Gentoo 的覆盖层,允许任何人从例如 Git 存储库分发他们的包定义。同样,这保证了完全透明(回滚、历史记录等)。
  • Emacs-Guix:Guix 是我所知道的唯一一个带有最强大的 Emacs 用户界面的发行版!
  • Guix 包:它们允许替代像 Docker 这样的容器。大多数容器系统都存在关键问题:它们不可重现,而且确实是不透明的二进制文件,这对于关心信任、安全和隐私的用户来说是一个很大的禁忌。相反,Guix 包是完全指定的、可复制的和透明的。
  • guix system vm和guix system disk-image:Guix 使得将自身(整个当前系统)复制为实时 USB、在虚拟机内或在远程机器上变得微不足道。