nix-env -fを使用した入力Nix式の名前の競合

nix-env -fを使用した入力Nix式の名前の競合

次のようなこの以前の回答これは私に与えられ、私はこのリポジトリのgit cloneを使ってnixpkgs-unstableチャンネルに従い始めました。https://github.com/NixOS/nixpkgs-channels/

私のクローンがあります~/nixpkgsnix-shellオプションを使って呼び出しましたが、-I ~うまく動作します。nix-envオプション-Iは存在しませんが、それを使用する必要があることを知っているからです-f。これは私がこれまで(2つの異なるコンピュータで)(nix-envオプション呼び出しを使用して-f ~)行ったことであり、うまく機能します。

今、私は3台目のコンピュータで同じプロセスを再現したいと思います。 nixpkgs-unstableにはありますが、システムチャネルnixos-16.09にはないパッケージをインストールするためにコマンドを使用しようとしましたが、nix-env -f ~ -iA nixpkgs.exercism次のエラーメッセージで失敗しました。

warning: name collision in input Nix expressions, skipping ‘/home/theo/nixpkgs’
error: attribute ‘exercism’ in selection path ‘nixpkgs.exercism’ not found

このエラーメッセージを検索すると、次のメッセージが表示されます。http://lists.science.uu.nl/pipermail/nix-dev/2013-October/011898.html しかし、私は説明された状況ではありません。私は通常のユーザーであり、どのチャンネルもフォローせず(nix-channel --list答えは空です)、システム全体の唯一のチャンネルはnixosと呼ばれています(、、および.nix-defexpr/nixosのみを含む追加の確認)。channels_root/binary-cachesmanifest.nixnixos

私は何が間違っていましたか?

注:コマンドを実行して問題を解決できましたが、最初の解決策が機能しなかったnix-env -f ~/nixpkgs -iA exercism理由をまだ知りたいです(他の2つのシステムでは機能していますが)。

ベストアンサー1

見ている源泉nixpkgsに属する可能性が高いです~

nix-envすべてのディレクトリを(繰り返し)検索して、default.nix親ディレクトリを最上位属性として追加します。

使うのは良くない考えのようですnix-env -f ~。多くの検索が必要で、そのような競合が発生する可能性があります。私が見逃したことがない場合は、シンボリックリンクが良い解決策~/nixpkgsのようです。~/.nix-defexpr

ただ使用しても問題はありませんnix-env -f nixpkgs -iA exercism。この形式では、nixは引数default.nixで直接aをチェックし、-fそれを最上位の属性セットとして使用します。

--show-trace他のnixpkgsディレクトリが見つからない場合は、このオプションを試してみてください。

おすすめ記事