nix 스토어에서 소스 아카이브를 무효화하는 방법

nix 스토어에서 소스 아카이브를 무효화하는 방법

결국 내 nix 스토어의 패키지 소스가 잘못되었습니다. 이런 일이 얼마 전에 일어났기 때문에 로그 파일을 추적하여 어떻게 이런 일이 일어났는지 파악할 수 없습니다. 동일한 버전의 패키지를 다시 빌드하려고 하면 동일한 잘못된 소스가 사용됩니다. 소스 아카이브를 무효화하거나 강제로 다시 가져오는 방법이 있습니까?

스토어를 마운트 rw하고 아카이브를 삭제할 수도 있지만 nixos의 디자인을 전복하지 않는 솔루션이 있어야 할 것 같습니다 ro.

답변1

nix-store --delete /nix/store/path일부 참조를 통해 경로를 활성 상태로 유지하지 않으면 언제든지 가능 하지만 몇 가지 세부 사항을 기록해야 합니다. 귀하의 소스는 fetchurl유사한 고정 출력 파생을 통해 얻은 것으로 가정합니다 . 이는 출력의 해시를 지정하고 nix 저장소에 있는 경로가 해당 해시와 일치하므로 실제로는 올바른 소스입니다(nix에 대해 요청한 내용을 고려).

일반적인 쉬운 방법은 해시를 fetchurl일부 잘못된 값으로 덮어쓰는 것입니다(예: 일부 문자를 0으로 대체하면 nix는 업데이트할 수 있는 결과(일치하지 않는) 해시를 다시 가져오고 인쇄하려고 시도합니다. nix-prefetch-url가져오기를 두 번 수행하는 등의 작업을 피하는 방법 도 있습니다 .

관련 정보