Como invalidar um arquivo de origem no repositório nix

3

Acabei com a fonte errada para um pacote na minha loja nix. Isso aconteceu há algum tempo, então não consigo rastrear o arquivo de log para descobrir como isso aconteceu. Qualquer tentativa que eu faça para reconstruir a mesma versão do pacote resulta em usar a mesma fonte incorreta. Existe uma maneira de invalidar um arquivo de origem ou forçar uma nova busca?

Eu poderia montar a loja rw e excluir o arquivo, mas parece que deveria haver uma solução que não subverta o projeto ro do nixos.

    
por Ryne Everett 30.04.2017 / 19:39

1 resposta

3

Você sempre pode nix-store --delete /nix/store/path se não mantiver o caminho ativo por algumas referências, mas deve anotar alguns detalhes. Presumo que suas fontes sejam obtidas por fetchurl ou uma derivação de saída fixa similar. Estes especificam o hash da saída, e o caminho que você tem no nix store corresponde ao hash, então é realmente a fonte correta (considerando o que você pediu do nix).

O caminho fácil típico é sobrescrever o hash em fetchurl para algum valor incorreto, por exemplo, substitua alguns caracteres por zeros, e o nix tentará re-buscar e imprimir o hash resultante (incompatível) que você pode atualizar. Há também nix-prefetch-url para evitar fazer buscas duas vezes, etc.

    
por 01.05.2017 / 11:46

Tags