ウェブサイト検索

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 3000130032 の間のビルド ユーザーと、グループ 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 パッケージ管理コマンドについてさらに説明します。それまでは、接続を維持してください。