2

Chocolatey - это система управления пакетами для Windows. Сначала вы скачиваете и устанавливаете Chocolatey; он доступен бесплатно под лицензией Apache 2.0. Вы говорите ему, какое программное обеспечение вы хотите, затем (обычно) отвечаете на один или несколько вопросов. Затем Chocolatey загрузит и установит программное обеспечение для вас.

Я пытаюсь лучше понять, как Шоколад знает, что он уже установил. Это сделано для того, чтобы я мог понять, может ли прерывание операции "Chocolatey Install" привести к тому, что Chocolatey навсегда запутается.

Используя Chocolatey 0.9.9.8, когда я пытаюсь установить пакет (7zip) два раза подряд, первый раз завершается успешно, а второй раз ничего не делает, кроме печати предупреждающего сообщения. В сообщении говорится:

7zip v9.38 уже установлен.
Используйте --force для переустановки, укажите версию для установки или попробуйте обновить.

Шоколадно установлено 0/1 пакета (ов).
Подробности смотрите в журнале (C:\ProgramData\chocolatey\logs\chocolatey.log).

Я заглянул в исходный код Chocolatey, чтобы попытаться найти ответ. Похоже , что вызов метода , который проверяет , является ли пакет уже установлен этот один. Но я не смог найти исходный код для метода FindPackage.

Как Chocolatey узнает, какие пакеты уже установлены? Хранит ли он где-нибудь на моей машине центральную базу данных, которая отслеживает, что он установил, а что нет?

1 ответ1

3

Он отслеживает это на основе фактических пакетов на диске. Обратите внимание, что в папке %ChocolateyInstall% есть папка lib, например 'C:\ProgramData\chocolatey\lib' в установленном по умолчанию месте.

В этой папке находятся папки с пакетами, в каждой из которых находится файл *.nupkg . Каждый файл *.nupkg представляет собой установленный пакет.

Для того, где вы ищете, обратите внимание на следующее -

Кроме того, GitHub трюк, чтобы вам не нужны ссылки на веб-архивы - как только вы найдете бит исходного кода, нажмите y чтобы получить постоянную ссылку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .