Nix-Shell:孤立した環境で開発ワークフローを合理化します
異なるプロジェクトで矛盾するソフトウェアバージョンをジャグリングするのにうんざりしていませんか? Nix-Shellは強力なソリューションを提供します!このツールを使用すると、それぞれが特定のプロジェクトのニーズに合わせて調整された孤立した開発環境を作成し、スムーズで競合のないワークフローを確保できます。
これらの孤立した環境は、プロジェクト間の干渉を防ぎ、ソフトウェアバージョンが衝突したときにしばしば遭遇するイライラする「依存関係」を排除します。 Nix-Shellは、環境の作成と切り替えを簡素化し、さまざまなマシンで一貫したセットアップを確保し、チームのコラボレーション効率を高めます。
このガイドは、Linux上のNix-Shellを使用して、孤立した開発環境を作成および管理する段階的なウォークスルーを提供します。
目次
Nixは、依存関係の管理に対する機能的で宣言的なアプローチを採用した堅牢なパッケージマネージャーおよびビルドシステムです。パッケージを機能的なプログラミングパラダイム内の値として扱います。
NIXパッケージマネージャーにバンドルされたコマンドラインツールであるNix-Shellは、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ストアの未使用のパッケージは、Garbage Collection( nix-collect-garbage -d
)を介して削除できます。
Q:nix-shellとは何ですか? A:特定のソフトウェアパッケージを備えた一時的な孤立したシェル環境を作成するコマンドラインツール。
Q:インストールするにはどうすればよいですか? A:NIXパッケージマネージャーの一部です。 Nixを最初にインストールします。
Q:孤立した環境を作成するにはどうすればよいですか? A:依存関係を指定するshell.nix
ファイルを使用するか、アドホック環境にnix-shell -p ...
を使用します。
Q:どのOSをサポートしていますか? A:ほとんどのUNIX様システム(Linux、MacOS); WindowsユーザーはWSLを使用できます。
Q:出口でどうなりますか? A:環境が削除されます。シェル設定が戻ります。プロジェクトファイルは残ります。
Q:「依存関係地獄」をどのように回避しますか? A:NIXの機能的アプローチにより、孤立したパッケージの構築が保証され、競合が防止されます。
Q:環境状態を保存できますか? A: shell.nix
ファイルが再現可能です。より複雑なシナリオについては、NIXのパッケージと構成機能を調べてください。
Q:パッケージを追加/削除するにはどうすればよいですか? A: shell.nix
ファイルのbuildInputs
リストを変更するか、 -p
フラグを調整します。
Q:ゴミコレクションを実行するにはどうすればよいですか? A: nix-collect-garbage -d
を使用します。
Nix-Shellは、孤立したプロジェクトワークスペースを提供することにより、開発を合理化します。これにより、競合が防止され、マシン全体の一貫した環境が保証され、依存管理ではなくコーディングに集中できます。
リソース:
関連記事:
以上がLinuxのNix-Shellを使用して開発環境を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。