尼克斯 - 塞尔:用孤立的环境简化您的开发工作流程
厌倦了在不同项目中杂乱无章的软件版本? Nix-Shell提供了强大的解决方案!该工具使您可以创建孤立的开发环境,每个环境都根据特定项目的需求进行量身定制,以确保平稳且无冲突的工作流程。
这些孤立的环境阻止了项目之间的干扰,从而消除了软件版本冲突时经常遇到的令人沮丧的“依赖地狱”。 Nix-Shell简化了环境的创造和切换,确保了各种机器的一致设置,并提高了团队协作效率。
本指南提供了使用Linux上的Nix-Shell创建和管理隔离开发环境的分步演练。
目录
NIX是一个强大的软件包管理器,并采用功能性和声明性方法来依赖性管理。它将软件包视为功能编程范式中的值。
尼克斯·塞尔(Nix-Shell)是一种与Nix软件包管理器捆绑在一起的命令行工具,利用Nix表达式生成孤立的开发环境。这些环境封装了给定项目的所有必要工具,库和依赖项。
通过独立建立每个依赖性并防止干扰,Nix-shell消除了“依赖性地狱”,并提供了对开发和生产环境中依赖关系的颗粒状控制。这种隔离和可重复性确保了不同系统之间一致的设置,并促进了无缝开发人员的协作。
Nix-Shell创建了独立的可重现环境,以管理项目依赖性,以防止冲突。
首先,创建一个定义项目依赖性的NIX表达式。这通常是一个名为default.nix
或shell.nix
的文件。
让我们创建一个示例项目myproject
:
$ mkdir myproject $ cd myproject $ nano shell.nix
将以下内容添加到shell.nix
:
{pkgs?进口<nixpkgs> {}}: pkgs.mkshell { buildInputs = [ pkgs.python38 pkgs.nodejs pkgs.ruby ]; }</nixpkgs>
这定义了Python 3.8,Node.js和Ruby的环境。在此目录中运行nix-shell
将隔离安装。
更简洁的版本:
{pkgs?进口<nixpkgs> {}}:pkgs.mkshell {buildInputs = with pkgs.buildpackages; [python38 nodejs ruby]; }</nixpkgs>
保存并关闭文件。
快速,临时的环境
对于临时环境,请使用
nix-shell -p package1 package2 ...
例如:Nix -shell -P Python39packages.numpy Python39packages.scipy登录后复制
使用以下方式输入孤立的环境:
$ nix-shell
或者
$ nix-shell shell.nix
为了最大程度的隔离,请使用--pure
:
$ nix-shell-pure shell.nix
这将与指定的依赖关系创建外壳会话。
在Nix-Shell环境中,像往常一样使用开发工具。孤立的环境可确保一致的依赖关系,而不论主机系统如何。
验证已安装的版本:
[nix -shell:〜/myproject] $ python -v [nix -shell:〜/myproject] $ node -v [nix -shell:〜/myproject] $ ruby -v
使用exit
或CTRL D
出口。退出会删除临时环境,将外壳设置转移到其先前的状态而不会影响您的系统。项目文件保持不变。可以通过垃圾收集( nix-collect-garbage -d
)删除NIX商店中的未使用软件包。
问:什么是尼克斯·希尔?答:具有特定软件包的命令行工具创建临时的,孤立的外壳环境。
问:如何安装它?答:它是NIX软件包管理器的一部分;首先安装NIX。
问:如何创建一个孤立的环境?答:使用shell.nix
文件指定依赖项,或使用nix-shell -p ...
用于临时环境。
问:它支持什么?答:大多数类似Unix的系统(Linux,MacOS); Windows用户可以使用WSL。
问:出口会发生什么?答:删除环境;外壳设置还原;保留项目文件。
问:如何避免“依赖地狱”?答:NIX的功能方法可确保孤立的软件包构建,防止冲突。
问:我可以保存环境状态吗?答: shell.nix
文件可重现;对于更复杂的方案,请探索Nix的软件包和配置功能。
问:如何添加/删除软件包?答:修改shell.nix
文件的buildInputs
列表或调整-p
标志。
问:如何执行垃圾收集?答:使用nix-collect-garbage -d
。
Nix-Shell通过提供孤立的项目工作区来简化开发。这样可以防止冲突并确保整个机器之间的一致环境,从而使您可以专注于编码而不是依赖关系管理。
资源:
相关文章:
以上是如何在Linux中使用Nix-Shell创建开发环境的详细内容。更多信息请关注PHP中文网其他相关文章!