nix-env -u すると名前衝突の警告がでる
経緯
nix-env -u
すると以下の警告がでる。
warning: name collision in input Nix expressions, skipping '/home/xxx/.nix-defexpr/channels_root/nixpkgs'
結論
nixはrootユーザのチャンネル引き継いでおり、ユーザがnixpkgsチャンネルを自ら追加すると複数の同じprefixのチャンネルが登録されている状態になるため、発生する。
解決方法としては nix-channel --remove nixpkgs
すれば改善される。
注意点として、チャンネルを更新する場合は sudo nix-channel --update
としなければチャンネルが更新されない点である。
もうちょっと詳しく
- macOSで利用する場合nixのマルチユーザモードが利用される
- マルチユーザモードの場合rootユーザのチャンネルを引き継ぐ
- その状態は
~/.nix-defexpr/channels_root
に保持される - この状態のとき
nix-channel --list
を実行したときチャンネル一覧には現れない - このためchannelを登録していないと勘違いして
nix-channel --add
してしまうことでこの問題がおきる。 - ただし、動作しないわけではない&ユーザのチャンネルが優先されると思われるので問題は起きないが警告が出る状態である
結論にはチャンネルを削除することで解決すると書いたが、あえて解決させないという選択肢もあるだろう。これならsudoを付与しなくてもchannelの更新が可能である。
参考リンク
Author And Source
この問題について(nix-env -u すると名前衝突の警告がでる), 我々は、より多くの情報をここで見つけました https://zenn.dev/eiel/articles/e27707435840e0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol