Impedire a Nix di aggiornare git a git-full


8

Sto usando Nix su Ubuntu per avere versioni più moderne di alcuni pacchetti, uno dei quali è git. Quando corro nix-env -u, ecco cosa succede:

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

Questo non è quello che voglio - preferisco la versione normale git-1.9.0rispetto alla -fullversione. So che posso aggiornare manualmente alla versione normale con nix-env -i git-1.9.0, ma c'è un modo nix-env -uper fare quello che voglio?

Risposte:


4

Prima di andare a rispondere a questo, vorrei spiegare come funziona la denominazione dei pacchetti in Nix.

Il nome a cui ti riferisci è il nome di derivazione, che non è univoco (possono essere più pacchetti compilati in diversi modi git-1.9.0).

Se si desidera fare riferimento a un pacchetto in modo univoco, il nome del set di attributi è il modo.

Per stampare il nome del set di attributi durante l'interrogazione (nota -P:

nix-env -qaP | grep git

Per aggiornare un pacchetto con un nome univoco:

nix-env -uA git

Nel tuo caso, questo è il risultato del fatto che entrambi i pacchetti vengono chiamati git-version. Nix risolve quale viene preso per priorità. Per ridurre la priorità per quella corrente, impostare:

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

1
Basato sulla discussione IRC: in --set-flag priorityrealtà non aiuta qui, e potrebbe avere senso cambiare la convenzione di denominazione delle varianti del pacchetto in Nixpkgs: github.com/NixOS/nixpkgs/issues/1756
Miikka

3
Vedi github.com/NixOS/nixpkgs/issues/1756#issuecomment-37316142 , questo problema è stato risolto.
iElectric
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.