次のようなこの以前の回答これは私に与えられ、私はこのリポジトリのgit cloneを使ってnixpkgs-unstableチャンネルに従い始めました。https://github.com/NixOS/nixpkgs-channels/
私のクローンがあります~/nixpkgs
。nix-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-caches
manifest.nix
nixos
私は何が間違っていましたか?
注:コマンドを実行して問題を解決できましたが、最初の解決策が機能しなかった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ディレクトリが見つからない場合は、このオプションを試してみてください。