Как сделать исходный архив недействительным в магазине nix

Как сделать исходный архив недействительным в магазине nix

Я оказался с неправильным источником для пакета в моем магазине nix. Это произошло некоторое время назад, поэтому я не могу отследить файл журнала, чтобы выяснить, как это произошло. Любые попытки пересобрать ту же версию пакета приводят к использованию того же неправильного источника. Есть ли способ сделать архив исходников недействительным или принудительно выполнить повторную загрузку?

Я мог бы смонтировать хранилище rwи удалить архив, но, похоже, должно быть решение, которое не подрывает roзамысел nixos.

решение1

Вы всегда можете nix-store --delete /nix/store/path, если не поддерживаете путь в активном состоянии некоторыми ссылками, но вы должны отметить некоторые детали. Я предполагаю, что ваши источники получены с помощью fetchurlили аналогичного фиксированного вывода. Они указывают хэш вывода, и путь, который у вас есть в хранилище nix, соответствует этому хешу, так что это на самом деле правильный источник (учитывая то, что вы просили у nix).

Типичный простой путь — перезаписать хэш на fetchurlкакое-то неправильное значение, например, заменить некоторые символы нулями, и nix затем попытается повторно извлечь и вывести полученный (несоответствующий) хэш, который вы затем можете обновить. Также есть nix-prefetch-urlспособ избежать выполнения извлечения дважды и т. д.

Связанный контент