Evitando que o Nix atualize o git para git-full

8

Estou usando o Nix no Ubuntu para ter versões mais modernas de alguns pacotes, sendo um deles o git. Quando eu estou correndo nix-env -u , isso é o que acontece:

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

Não é isso que eu quero - prefiro a versão simples git-1.9.0 sobre a versão -full . Eu sei que posso atualizar manualmente para a versão simples com nix-env -i git-1.9.0 , mas existe uma maneira de fazer nix-env -u fazer o que eu quero?

    
por Miikka 16.02.2014 / 10:32

1 resposta

4

Antes de eu responder a este, gostaria de explicar como a nomeação de pacotes funciona no Nix.

O nome ao qual você está se referindo é o nome da derivação, que não é exclusivo (vários pacotes compilados de maneiras diferentes podem ser git-1.9.0 ).

Se você quiser referenciar um pacote de maneira única, o atributo set name é o caminho.

Para imprimir o nome do conjunto de atributos durante a consulta (note -P :

nix-env -qaP | grep git

Para atualizar um pacote por nome exclusivo:

nix-env -uA git

No seu caso, isso é resultado do fato de ambos os pacotes serem chamados de git-version . Nix resolve qual deles é escolhido por prioridade. Para menor prioridade para o único, defina:

nix-env --set-flag priority 10 git
nix-env -u
    
por 16.02.2014 / 10:59