【2024-02-12 00:19:20爱思瑞网快讯】
Mac上有几个第三方包管理器可用于安装其他软件。以下是如何在macOS上使用Nix包管理器的方法。
什么是Nix?
Nix是一个提供基于容器的跨平台开发环境的包管理器。与Docker和Kubernetes等容器系统类似,Nix允许您安装在机器和网络之间配置的开发环境,无需进行复杂的配置。
在Mac上,传统上用户使用MacPorts或Homebrew来安装第三方软件包。这两个系统都有其优点和缺点。
由于Homebrew易于使用和安装,它在Mac社区中非常受欢迎:可以使用macOS的终端应用程序只需几个命令即可安装软件包,更新也是自动化和简单的。
然而,无论是Homebrew还是MacPorts,在不同机器之间缺乏可移植性。您可以编写终端(shell)脚本以跨系统安装Homebrew或MacPorts软件包,但脚本维护可能变得复杂,并且往往很难编写脚本以适应所有可能的机器配置。
Nix通过将开发环境容器化并使其在不同系统之间更具可移植性来解决这个问题。
使用Nix的代价是稍微复杂的配置和较陡的学习曲线。
Nix生态系统
NixOS来自NixOS Foundation,实际上是几个东西:它是一个使用Nix包管理器的Linux发行版。Nixpkgs是一个包含80,000多个软件包的集合,可以使用Nix包管理器进行安装。
Nix有三个分开的手册:Nix手册、Nixpkgs手册和NixOS手册。
还有一个Nix参考手册。
提供了一个由社区维护的非官方NixOS Wiki,而Nix开发网站位于nix.dev。NixOS Wiki上有关于包管理器、Nix语言、Nixpkgs和NixOS本身的信息。
还有一个Nix语言,您可以使用它来创建和复制软件包的部分,以进行新安装。
在开始安装和使用Nix之前,您可能需要至少阅读完整的Nix手册。
定义
您需要了解一些新术语才能使用Nix。
Nix基于声明式编程,即基于描述软件应该做什么而不是如何做的方式创建程序。简而言之,声明式编程试图避免基于状态和改变状态来实现某种结果的软件。
表达式。Nix表达式基本上是可安装软件的预定义子组件,以供以后检索和安装。表达式的思想是组件已经被定义,因此当它被安装时,在所有系统上都能起到相同的作用。
每个表达式还有一个搜索路径。
通道。Nix通道是特定路径,用于远程检索和安装一个或多个预定义的Nix表达式。在channels.nixos.org上有一个官方通道列表。
大多数通道都有版本。通道还可以订阅或取消订阅。
每个通道都有可下载的内容,当安装通道时会安装这些内容。
存储。与Homebrew和UNIX本身不同,Nix不会将软件包安装到标准的UNIX目录(如/usr、/bin、/sbin或/opt)。
相反,它创建了自己的存储-一个特殊的目录和卷,用于存储所有已安装的软件包。通过使用存储,Nix软件包更具可移植性,因为整个存储可以作为一个单元移动。
Nix确实将配置文件安装到/etc/nixos/configuration.nix
,默认情况下,除非您打开macOS Finder的隐藏文件功能,否则该文件是不可见的。
Flakes是Nix的一个实验性功能,用于定义和控制软件包之间的依赖关系。尽管很受欢迎,但Nix flakes仍然是实验性的,并缺乏强大的文档,因此请自行承担使用它们的风险。
垃圾回收。与某些编程环境一样,在删除Nix软件包时,它并不立即被卸载。为此,您需要运行Nix 垃圾回收器。
您可以在安装后的任何时间在终端中调用Nix垃圾回收器:
Nix安装包括几个命令行工具(CLI),您可以从终端应用程序中运行这些工具。这些工具包括:
nix-env
– 用于操作Nix用户环境nix-build
– 用于构建Nix表达式nix-shell
– 基于Nix表达式的交互式命令环境nix-store
– 操作或查询Nix存储
Nix用户环境只是由Nix安装的一组软件和工具。
安装Nix
Nix通常安装在/nix
,但自macOS Catalina以来,macOS启动磁盘的根目录是只读的。
因此,在Catalina之后的系统上,Nix将创建一个新的卷来保存Nix存储,并将其作为卷挂载在隐藏的macOS文件夹Volumes
中,位于启动磁盘的根目录处。
如果您具有管理员访问权限,安装程序在运行时会要求您输入sudo(超级用户)权限,以便创建新的卷。
curl -L | sh
Nix安装程序会将对Nix存储卷的引用存储在/etc/fstab
中。
store文件夹和一个var文件夹。
store文件夹包含NIX下载和安装的所有软件包和通道,var文件夹包含一个日志文件夹和一个包含DB、配置文件、与后台守护程序的连接、用户池和其他部分的nix文件夹。
fstab
是文件系统表文件,告诉UNIX文件系统和它们的卷位于哪里。
Return。
etc文件夹中的隐藏用户配置文件中,即:
/etc/bashrc /etc/profile.d/nix.sh /etc/zshrc /etc/bash.bashrc /etc/zsh/zshrc
这些配置文件在您登录时由macOS加载,它们包含环境变量和已安装软件的路径。
nix-daemon的后台进程或守护进程,该进程在后台静默管理Nix存储。
nix-shell -p nix-info --run "nix-info -m"
nix-env –install命令后跟软件包名称在终端中手动安装任何现有的Nix软件包。例如:
nix-env --install firefox
–uninstall标志与nix-env
命令。
其他资源
Zero-to-nix.com是一个使用Nix的指南,包括快速入门和概念部分,对Nix的每个部分及其如何配合使用进行了很好的概述。
Determinate.systems是一个以Nix为中心的网站,包含许多Nix教程,以及一个独立的Nix安装程序,以防您不想使用基于终端的安装。
Nix and Flakes Book来自Ryan Yin,它是一个面向初学者的在线教程和GitHub存储库,包含了有用的与Nix相关的信息。
nix-darwin repo包含了Darwin(macOS)版本的Nix软件包管理器的所有模块、软件包和文档。
Nixpacks是一个实用工具,可以将任何目录的文件进行容器化以供重用。
Nix的优点和缺点