nix ストアのソース アーカイブを無効にする方法

nix ストアのソース アーカイブを無効にする方法

私の nix ストアのパッケージのソースが間違ってしまいました。これはしばらく前に起こったことなので、ログ ファイルを追跡して原因を突き止めることはできません。同じバージョンのパッケージを再構築しようとすると、同じ間違ったソースが使用されてしまいます。ソース アーカイブを無効にしたり、強制的に再取得したりする方法はありますか?

ストアをマウントしrwてアーカイブを削除することはできますが、nixos の設計を損なわない解決策があるはずですro

答え1

nix-store --delete /nix/store/pathいくつかの参照によってパスを存続させない場合はいつでも可能ですが、いくつかの詳細に注意する必要があります。ソースfetchurlは、または同様の固定出力派生によって取得されていると想定しています。これらは出力のハッシュを指定し、nix ストアにあるパスはそのハッシュと一致するため、実際には正しいソースです (nix に要求したことを考慮すると)。

一般的な簡単な方法は、ハッシュを間違った値に上書きすることです。たとえば、一部の文字をゼロに置き換えると、nix は結果の (不一致の) ハッシュを再取得して印刷し、それを更新します。また、2 回の取得などを回避する方法fetchurlもあります。nix-prefetch-url

関連情報