
Я оказался с неправильным источником для пакета в моем магазине nix. Это произошло некоторое время назад, поэтому я не могу отследить файл журнала, чтобы выяснить, как это произошло. Любые попытки пересобрать ту же версию пакета приводят к использованию того же неправильного источника. Есть ли способ сделать архив исходников недействительным или принудительно выполнить повторную загрузку?
Я мог бы смонтировать хранилище rw
и удалить архив, но, похоже, должно быть решение, которое не подрывает ro
замысел nixos.
решение1
Вы всегда можете nix-store --delete /nix/store/path
, если не поддерживаете путь в активном состоянии некоторыми ссылками, но вы должны отметить некоторые детали. Я предполагаю, что ваши источники получены с помощью fetchurl
или аналогичного фиксированного вывода. Они указывают хэш вывода, и путь, который у вас есть в хранилище nix, соответствует этому хешу, так что это на самом деле правильный источник (учитывая то, что вы просили у nix).
Типичный простой путь — перезаписать хэш на fetchurl
какое-то неправильное значение, например, заменить некоторые символы нулями, и nix затем попытается повторно извлечь и вывести полученный (несоответствующий) хэш, который вы затем можете обновить. Также есть nix-prefetch-url
способ избежать выполнения извлечения дважды и т. д.