Nix - Linux 用の純粋に機能的なパッケージ マネージャー
Nix は、信頼性が高く再現可能なパッケージ管理を目的として設計された、強力で純粋に機能するパッケージ管理システムであり、GNU LGPLv2.1 の条件に基づいてリリースされています。これは、あまり知られていない Linux ディストリビューションであるNixOS の主要なパッケージ管理システムです。
Nix は、開発者が使用しているプログラミング言語やツールに関係なく、アトミック アップグレードとロールバック、複数バージョンのパッケージ インストール、マルチユーザー パッケージ管理、パッケージのビルド環境の簡単なセットアップを提供します。
Nix では、パッケージは「Nix 式 」と呼ばれる関数型パッケージ言語から構築されます。パッケージ管理に対するこの機能的なアプローチにより、1 つのパッケージのインストールまたはアップグレードによって他のパッケージが破損することがないことが保証されます。
Nix にはマルチユーザー サポートもあります。これは、通常の (または特権のない) システム ユーザーがパッケージを安全にインストールでき、各ユーザーがプロファイル (ユーザーの PATH に表示される Nix ストア内のパッケージのコレクション) によって識別されることを意味します。
あるユーザーがパッケージをインストールした場合、別のユーザーが同じパッケージをインストールしようとすると、パッケージは再度ビルドまたはダウンロードされません。
現在、Linux (i686、x86_64) と Mac OS X (x86_64) をサポートしています。ただし、移植性はかなり高く、POSIX スレッドをサポートし、C++11 コンパイラを備えたほとんどのプラットフォームで試すことができます。
この記事では、Linux に Nix パッケージ マネージャーをインストールして (マルチ ユーザー モードで) 使用する方法を説明します。一般的に使用されるツールに関連して、基本的なパッケージ管理タスクのいくつかについて説明します。
Linux に Nix パッケージ マネージャーをインストールする方法
最新バージョンのNix (執筆時点ではv2.1.3) をマルチ ユーザー モードでインストールします。幸いなことに、システム上で次のcurlコマンドを使用して通常のユーザーとしてシェルから実行できる、準備済みのインストール・スクリプトがあります。
sh <(curl https://nixos.org/nix/install) --daemon
上記のコマンドを実行すると、最新の nix バイナリ tarball がダウンロードされ、スクリーンショットに示すように、マルチユーザー nix インストール画面が表示されます。
インストールプロセス中に何が起こるかの詳細なリストを表示するには、y
と入力して Enter を押します。満足して続行する準備ができている場合は、y
と入力して Enter を押します。
スクリプトは必要に応じて sudo コマンドを何度も呼び出します。 y
と答えて Enter を押して、sudo の使用を許可する必要があります。
次に、インストーラーはいくつかのテストを実行して Nix 構成レポートを生成し、ユーザー ID 30001 と 30032 の間のビルド ユーザーと、グループ ID のグループを作成します。 3 万です。プロンプトが表示されたら、「y
」と入力して続行します。さまざまなビルド ユーザーにビルド グループを設定し、Nix の基本的なディレクトリ構造を作成します。
ファイル /etc/bashrc (zsh の場合は /etc/zshrc) が存在する場合はそれを変更します。まず、.backup-before-nix 拡張子が付いた前述のファイルがバックアップされ、インストーラーによってファイル /etc/profile.d/nix.sh も作成されることに注意してください。
インストーラーは、nix-daemon サービスと nix-daemon ソケット サービスもセットアップし、nix-daemon の systemd ユニットをロードし、前述の 2 つのサービスを開始します。
インストールが完了したら、新しいターミナル ウィンドウを開いて Nix の使用を開始する必要があります。あるいは、シェルを閉じて再度開き、最近の変更を適用します。次に、ファイル /etc/profile.d/nix.sh をソースします (これはシェル起動ファイルではないため、新しいシェルを開いてもソースになりません)。
source /etc/profile.d/nix.sh
次に、次のコマンドを実行して、Nix が動作するために必要なパスを公式プロジェクト Web サイトからダウンロードします。すべてのパスがダウンロードされ、正しい場所にコピーされると、スクリーンショットに示すように、システムと nix インストール タイプの概要が表示されます。
nix-shell -p nix-info --run "nix-info -m"
Linux で Nix パッケージ マネージャーを使用する方法
Nix では、パッケージ管理は nix-env ユーティリティによって行われます。これは、パッケージのインストール、アップグレード、および削除/消去に使用され、また、どのパッケージがインストールされているか、またはインストール可能であるかを照会するために使用されます。
すべてのパッケージは Nix チャネル内にあります。これは、Nix 式のコレクションとバイナリ キャッシュへのポインタの両方で構成されるリポジトリを指す URL です。
デフォルトのチャネルは Nixpkgs で、サブスクライブしたチャネルのリストは ~/.nix-channels に保存されます。次のコマンドを使用してそれらをリストできます (出力がないことはチャネルがないことを意味します)。 。
nix-channel --list
Nix チャネルを追加するには、次のコマンドを使用します。
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
パッケージをインストールする前に、まず Nix チャネルを更新します。これは、APT パッケージ マネージャーで apt update を実行するのと似ています。
nix-channel --update
次のコマンドを使用して、インストールに使用できるパッケージを照会できます。
nix-env -qa
この例では、前述のコマンドを grep と組み合わせて使用して Apache Tomcat サーバーをインストールし、示されているようにインストール可能なパッケージを確認します。
nix-env -qa | grep "apache-tomcat"
パッケージをインストールするには、パッケージのバージョン (apache-tomcat-9.0.2 など) を指定して次のコマンドを使用します。
nix-env -i apache-tomcat-9.0.2
ローカル システムでは、Nix はパッケージをNix ストアに保存します。これはデフォルトでは /nix/store ディレクトリであり、各パッケージには独自の固有のサブディレクトリがあります。たとえば、apache-tomcat パッケージは次の場所に保存されます。
/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2
このパスのランダムな文字 95gmgnxlrcpkhlm00fa5ax8kvd6189py は、すべての依存関係を考慮したパッケージの一意の識別子です。
次のコマンドを使用して、インストールされているパッケージを一覧表示できます。
nix-env -q
apache-tomcat パッケージをアップグレードするには、次のように -u
アップグレード スイッチを使用できます。
nix-env -u apache-tomcat
apache-tomcat を削除/消去する場合は、-e
フラグを使用します。ここで、パッケージはシステムからすぐには消去されず、未使用になるだけです。これは、ロールバックを実行したい場合、または他のユーザーのプロファイルに含まれている可能性がある場合に便利です。
nix-env -e apache-tomcat
パッケージを削除した後、nix-collect-garbage ユーティリティを使用してガベージ コレクションを実行できます。
nix-collect-garbage
Linux で Nix パッケージ マネージャーを削除する方法
Nix をアンインストールするには、すべての nix 関連ファイルを一度に削除します。
sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels
systemd を備えたシステムでは、次のコマンドを実行して、すべての nix 関連サービスを停止し、無効にします。
sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload
さらに、次のファイル内の Nix への参照をすべて削除する必要があります: /etc/profile、/etc/bashrc、および /etc/zshrc >。
詳細については、これまでに説明した上記のユーティリティのマニュアル ページを参照してください。
man nix-channel
man nix-env
Nix Package Manager のドキュメントは、プロジェクト Web サイト https://nixos.org/nix/ で見つけることができます。
まとめ
Nix は、信頼性が高く再現可能なパッケージ管理を目的として設計された純粋に機能的なパッケージ マネージャーです。これは、YUM、APT、その他多くの Linux で一般的に使用されるツールとは非常に異なる、パッケージ管理の興味深い概念を提供します。
この記事では、マルチ ユーザー モードで nix をインストールする方法を示し、Nix を使用してパッケージ管理を行う方法について説明しました。ご意見やご質問がございましたら、以下のコメント フォームからお聞かせください。最後に、今後の記事で、Nix パッケージ管理コマンドについてさらに説明します。それまでは、接続を維持してください。