🔖

Nixでインストールしたいパッケージの名前がわからない問題

2023/08/20に公開

はじめに

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
# 省略

helmkubernetesという単語が含まれるパッケージを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