首页 > 系统教程 > 操作系统 > 如何在Linux中使用Nix-Shell创建开发环境

如何在Linux中使用Nix-Shell创建开发环境

Jennifer Aniston
发布: 2025-03-19 10:11:08
原创
625 人浏览过

尼克斯 - 塞尔:用孤立的环境简化您的开发工作流程

厌倦了在不同项目中杂乱无章的软件版本? Nix-Shell提供了强大的解决方案!该工具使您可以创建孤立的开发环境,每个环境都根据特定项目的需求进行量身定制,以确保平稳且无冲突的工作流程。

这些孤立的环境阻止了项目之间的干扰,从而消除了软件版本冲突时经常遇到的令人沮丧的“依赖地狱”。 Nix-Shell简化了环境的创造和切换,确保了各种机器的一致设置,并提高了团队协作效率。

本指南提供了使用Linux上的Nix-Shell创建和管理隔离开发环境的分步演练。

目录

  • 使用Nix-shell的好处
  • 使用Nix-Shell创建和管理开发环境
    • 用nix表达式定义依赖关系
      • 快速,临时的环境
    • 访问Nix Shell
    • 在尼克斯外壳中工作
    • 退出尼克斯·壳
  • 常见问题(常见问题解答)
  • 结论

什么是尼克斯·希尔?

NIX是一个强大的软件包管理器,并采用功能性和声明性方法来依赖性管理。它将软件包视为功能编程范式中的值。

尼克斯·塞尔(Nix-Shell)是一种与Nix软件包管理器捆绑在一起的命令行工具,利用Nix表达式生成孤立的开发环境。这些环境封装了给定项目的所有必要工具,库和依赖项。

通过独立建立每个依赖性并防止干扰,Nix-shell消除了“依赖性地狱”,并提供了对开发和生产环境中依赖关系的颗粒状控制。这种隔离和可重复性确保了不同系统之间一致的设置,并促进了无缝开发人员的协作。

使用Nix-shell的好处

  • 隔离:每个Nix-Shell环境都与您的系统和其他环境隔离,以防止依赖性冲突。
  • 可重复性:环境是在代码中定义的,可确保对运行NIX的任何系统的一致复制。
  • 原子升级和回滚: NIX支持原子升级和回滚,从而可以通过依赖项进行安全的实验。
  • 无需安装的测试:未经本地安装的测试软件包,非常适合临时应用程序使用。

使用Nix-Shell创建和管理开发环境

Nix-Shell创建了独立的可重现环境,以管理项目依赖性,以防止冲突。

用nix表达式定义依赖关系

首先,创建一个定义项目依赖性的NIX表达式。这通常是一个名为default.nixshell.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
登录后复制

或者

$ 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 
登录后复制

如何在Linux中使用Nix-Shell创建开发环境

退出尼克斯·壳

使用exitCTRL 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中的conda创建nodejs虚拟环境
  • 在Linux中使用Conda创建Rust虚拟环境
  • 在Linux中使用CONDA创建Golang虚拟环境
  • 如何使用PIP管理Python软件包
  • PIPX - 在隔离环境中安装和运行Python应用程序
  • PIPENV - 正式推荐的Python包装工具

以上是如何在Linux中使用Nix-Shell创建开发环境的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板