web-dev-qa-db-ja.com

Nixがgitをgit-fullにアップグレードするのを防ぐ

私は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を作成して必要な処理を実行する方法はありますか?

8
Miikka

これに答える前に、Ni​​xでパッケージの命名がどのように機能するかを説明したいと思います。

あなたが参照している名前は派生名であり、一意ではありません(異なる方法でコンパイルされた複数のパッケージは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
4
iElectric