Evitar que Nix actualice git a git-full

8

Estoy usando Nix en Ubuntu para tener versiones más modernas de algunos paquetes, uno de ellos es git. Cuando estoy corriendo nix-env -u, esto es lo que sucede:

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

Esto no es lo que quiero: prefiero la versión simple git-1.9.0sobre la -fullversión. Sé que puedo actualizar manualmente a la versión simple con nix-env -i git-1.9.0, pero ¿hay alguna manera de hacer nix-env -ulo que quiero?

Miikka
fuente

Respuestas:

4

Antes de ir y responder a este, me gustaría explicar cómo funciona la denominación de paquetes en Nix.

El nombre al que se refiere es el nombre de derivación, que no es único (pueden ser múltiples paquetes compilados de diferentes maneras git-1.9.0).

Si desea hacer referencia a un paquete de manera única, el nombre del conjunto de atributos es el camino.

Para imprimir el nombre del conjunto de atributos durante la consulta (nota -P:

nix-env -qaP | grep git

Para actualizar un paquete con un nombre único:

nix-env -uA git

En su caso, esto es el resultado del hecho de que se llaman ambos paquetes git-version. Nix resuelve cuál es elegido por prioridad. Para reducir la prioridad de la actual, configure:

nix-env --set-flag priority 10 git
nix-env -u
iElectric
fuente
1
Basado en la discusión del IRC: en --set-flag priorityrealidad no ayuda aquí, y podría tener sentido cambiar la convención de nomenclatura de las variantes del paquete en Nixpkgs: github.com/NixOS/nixpkgs/issues/1756
Miikka
3
Consulte github.com/NixOS/nixpkgs/issues/1756#issuecomment-37316142 , esto se ha solucionado.
iElectric