Nixでインストールしたいパッケージの名前がわからない問題
はじめに
Kubernetes用のパッケージマネージャーであるHelmのインストールを試したところ、目的とは異なるパッケージがインストールされてしまったため、その原因と解決方法を記事にしました。
環境
- OS: NixOS 23.11
- Home Manager: 23.11-pre
発生した問題
Helmをインストールするために、以下のようにファイルを編集しました。ここではhelm
に関しての記述しかありませんが、本来はそのほかの開発ツールなども記述しています。
{pkgs, ...}: {
home.packages = with pkgs; [
helm
];
}
上記の設定内容を有効化し、helm
パッケージをインストールします。
そしてHelmドキュメントのクイックスタートガイドを参考にコマンドを実行しました。
$ helm repo add stable https://charts.helm.sh/stable
すると、期待とは異なる音楽ツールが立ち上がりました。
問題の原因
問題の原因はパッケージ名が誤っていたことでした。同名の別パッケージを指定してしまったため目的と異なるパッケージがインストールされてしまったようです。
インストールしようとしていたhelm
パッケージについてnix search
コマンドで調べてみると、目的のパッケージとはあきらかに異なる説明が表示されます。
$ nix search nixpkgs#helm
* legacyPackages.x86_64-linux.helm (0.9.0)
A free, cross-platform, polyphonic synthesizer
問題の解決方法
問題の原因が誤っているパッケージ名を指定したことだと判明したため、正しいパッケージ名に変更してそちらをインストールすれば解決します。
nix search
コマンドでそれらしいパッケージがないか検索を行ないます。こちらのコマンドの詳細については、Nix Reference Manual - 7.5.63. nix searchから確認できます。
$ nix search nixpkgs helm kubernetes
# 省略
* legacyPackages.x86_64-linux.kubernetes-helm (3.12.2)
A package manager for kubernetes
# 省略
helm
とkubernetes
という単語が含まれるパッケージをNixpkgsから検索してみたところ、kubernetes-helm
というパッケージが見つかりました。説明文からもこちらが今回インストールしたいと考えているHelmではないかと推測できます。
今回はnix search
コマンドを使用しましたが、NixOS Search - Packagesからも検索できます。
目的のパッケージ名がkubernetes-helm
だと判明したため、パッケージ名を修正します。
{pkgs, ...}: {
home.packages = with pkgs; [
# helm
kubernetes-helm
];
}
変更後、設定の有効化を行ない、本当に目的のHelmがインストールされているのかを確認します。
$ helm --help
The Kubernetes package manager
Common actions for Helm:
# 省略
$ helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories
無事、目的のHelmパッケージをインストールできました。
まとめ
今回はKubernetes用パッケージマネージャーHelmをインストールする際に、パッケージ名の競合で上手く行かなかったため、nix search
コマンドで目的のパッケージを検索をしてインストールを行ないました。
Discussion