Nixがgitをgit-fullにアップグレードしないようにする


8

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を実行する方法はありますか?

回答:


4

質問に答える前に、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

1
IRCの議論に基づく:--set-flag priority実際にはここでは役に立たないため、Nixpkgsのパッケージバリアントの命名規則を変更することは理にかなっています:github.com/NixOS/nixpkgs/issues/1756
Miikka

3
github.com/NixOS/nixpkgs/issues/1756#issuecomment-37316142を参照してください。これは修正されています。
iElectric 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.