Empêcher Nix de mettre à niveau git vers git-full


8

J'utilise Nix sur Ubuntu pour avoir des versions plus modernes de certains packages, l'un d'eux étant git. Quand je cours nix-env -u, c'est ce qui se passe:

% nix-env -u --dry-run '*'
(dry run; not doing anything)
upgrading `git-1.8.5.4' to `git-1.9.0-full'

Ce n'est pas ce que je veux - je préfère la version simple git-1.9.0à la -fullversion. Je sais que je peux passer manuellement à la version standard avec nix-env -i git-1.9.0, mais existe-t-il un moyen de faire nix-env -uce que je veux?

Réponses:


4

Avant de répondre à celle-ci, je voudrais expliquer comment le nommage des packages fonctionne dans Nix.

Le nom auquel vous faites référence est un nom de dérivation, qui n'est pas unique (plusieurs packages compilés de différentes manières peuvent l'être git-1.9.0).

Si vous souhaitez référencer un package de manière unique, le nom du jeu d'attributs est le chemin.

Pour imprimer le nom du jeu d'attributs pendant la requête (remarque -P:

nix-env -qaP | grep git

Pour mettre à jour un package par un nom unique:

nix-env -uA git

Dans votre cas, cela est dû au fait que les deux packages sont appelés git-version. Nix décide lequel est choisi par priorité. Pour réduire la priorité de celui en cours, définissez:

nix-env --set-flag priority 10 git
nix-env -u

1
Basé sur la discussion IRC: --set-flag priorityn'aide pas vraiment ici, et il pourrait être logique de changer la convention de dénomination des variantes de package dans Nixpkgs: github.com/NixOS/nixpkgs/issues/1756
Miikka

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.