私はUbuntuで Nix を使用して、いくつかのパッケージのより新しいバージョンを用意しています。そのうちの1つはgitです。 nix-env -u
を実行すると、次のようになります。
% nix-env -u --dry-run '*'
(dry run; not doing anything)
upgrading `git-1.8.5.4' to `git-1.9.0-full'
これは私が望んでいることではありません-私はgit-1.9.0
バージョンよりもプレーンバージョン-full
を好みます。 nix-env -i git-1.9.0
を使用して手動でプレーンバージョンにアップグレードできることは知っていますが、nix-env -u
を作成して必要な処理を実行する方法はありますか?
これに答える前に、Nixでパッケージの命名がどのように機能するかを説明したいと思います。
あなたが参照している名前は派生名であり、一意ではありません(異なる方法でコンパイルされた複数のパッケージはgit-1.9.0
になる可能性があります)。
独自の方法でパッケージを参照する場合は、属性セット名がその方法です。
クエリ中に属性セット名を出力するには(注-P
:
nix-env -qaP | grep git
一意の名前でパッケージを更新するには:
nix-env -uA git
あなたの場合、これは両方のパッケージがgit-version
と呼ばれているという事実の結果です。 Nixは、どちらが優先的にピックアップされるかを解決します。現在の1つの優先度を下げるには、次のように設定します。
nix-env --set-flag priority 10 git
nix-env -u