ホームページ > システムチュートリアル > Linux > LinuxのNix-Shellを使用して開発環境を作成する方法

LinuxのNix-Shellを使用して開発環境を作成する方法

Jennifer Aniston
リリース: 2025-03-19 10:11:08
オリジナル
627 人が閲覧しました

Nix-Shell:孤立した環境で開発ワークフローを合理化します

異なるプロジェクトで矛盾するソフトウェアバージョンをジャグリングするのにうんざりしていませんか? Nix-Shellは強力なソリューションを提供します!このツールを使用すると、それぞれが特定のプロジェクトのニーズに合わせて調整された孤立した開発環境を作成し、スムーズで競合のないワークフローを確保できます。

これらの孤立した環境は、プロジェクト間の干渉を防ぎ、ソフトウェアバージョンが衝突したときにしばしば遭遇するイライラする「依存関係」を排除します。 Nix-Shellは、環境の作成と切り替えを簡素化し、さまざまなマシンで一貫したセットアップを確保し、チームのコラボレーション効率を高めます。

このガイドは、Linux上のNix-Shellを使用して、孤立した開発環境を作成および管理する段階的なウォークスルーを提供します。

目次

  • nix-shellを使用することの利点
  • Nix-Shellを使用した開発環境の作成と管理
    • nix式で依存関係を定義します
      • 迅速なアドホック環境
    • nixシェルへのアクセス
    • nixシェル内で作業します
    • nixシェルを終了します
  • よくある質問(FAQ)
  • 結論

Nix-Shellとは何ですか?

Nixは、依存関係の管理に対する機能的で宣言的なアプローチを採用した堅牢なパッケージマネージャーおよびビルドシステムです。パッケージを機能的なプログラミングパラダイム内の値として扱います。

NIXパッケージマネージャーにバンドルされたコマンドラインツールであるNix-Shellは、NIX式を活用して孤立した開発環境を生成します。これらの環境は、特定のプロジェクトに必要なすべてのツール、ライブラリ、依存関係をカプセル化します。

各依存関係を独立して構築し、干渉を防ぐことにより、nix-shellは「依存関係の地獄」を根絶し、開発と生産の両方の設定で依存関係をきれいに制御します。この分離と再現性は、さまざまなシステム全体で一貫したセットアップを保証し、シームレスな開発者コラボレーションを促進します。

nix-shellを使用することの利点

  • 分離:各nix-shell環境は、システムや他の環境から分離されており、依存関係の競合を防ぎます。
  • 再現性:環境はコードで定義されており、NIXを実行しているシステムで一貫した複製を確保します。
  • アトミックアップグレードとロールバック: NIXはアトミックアップグレードとロールバックをサポートし、依存関係を使用した安全な実験を可能にします。
  • インストールなしでのテスト:ローカルインストールなしのテストパッケージ、一時的なアプリケーションの使用に最適です。

Nix-Shellを使用した開発環境の作成と管理

Nix-Shellは、プロジェクトの依存関係を管理するために、個別の再現可能な環境を作成し、対立を防ぎます。

nix式で依存関係を定義します

まず、プロジェクトの依存関係を定義する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シェルへのアクセス

以下を使用して、孤立した環境を入力します。

 $ nix-shell
ログイン後にコピー

または

$ nix-shell shell.nix
ログイン後にコピー

最大分離のために、使用--pure

 $ nix-shell-pure shell.nix
ログイン後にコピー

これにより、指定された依存関係を使用したシェルセッションが作成されます。

nixシェル内で作業します

nix-shell環境内で、通常どおり開発ツールを使用します。孤立した環境は、ホストシステムに関係なく、一貫した依存関係を保証します。

インストールされているバージョンを確認します。

 [nix -shell:〜/myproject] $ python -v
[nix -shell:〜/myproject] $ node -v
[nix -shell:〜/myproject] $ ruby​​ -v 
ログイン後にコピー

LinuxのNix-Shellを使用して開発環境を作成する方法

nixシェルを終了します

exitまたはCTRL Dを使用して終了します。終了すると、一時的な環境が削除され、システムに影響を与えることなくシェル設定を以前の状態に戻します。プロジェクトファイルは変更されていません。 Nixストアの未使用のパッケージは、Garbage Collection( nix-collect-garbage -d )を介して削除できます。

よくある質問(FAQ)

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は、孤立したプロジェクトワークスペースを提供することにより、開発を合理化します。これにより、競合が防止され、マシン全体の一貫した環境が保証され、依存管理ではなくコーディングに集中できます。

リソース:

  • Nix-Shell公式文書

関連記事:

  • LinuxでCondaを使用してNodeJS仮想環境を作成します
  • LinuxでCondaを使用してRust Virtual環境を作成します
  • LinuxでCondaを使用してGolang仮想環境を作成します
  • PIPを使用してPythonパッケージを管理する方法
  • PIPX - 孤立した環境でPythonアプリケーションをインストールして実行する
  • Pipenv - 正式に推奨されるPythonパッケージツール

以上がLinuxのNix-Shellを使用して開発環境を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート