Como o Chocolatey sabe quais pacotes já estão instalados e quais não estão?

2

Chocolatey é um sistema de gerenciamento de pacotes para Windows. Primeiro, baixe e instale o Chocolatey; está disponível gratuitamente sob a licença Apache 2.0. Você diz qual software você quer, então (normalmente) responde uma ou mais perguntas. O Chocolatey fará o download e instalará silenciosamente o software para você.

Estou tentando entender melhor como o Chocolatey sabe o que ele já instalou. Isso está em ordem para que eu possa entender se interromper ou não uma operação de "instalação de chocolate" pode fazer com que o Chocolate fique permanentemente confuso, para sempre.

Usando o Chocolatey 0.9.9.8, quando tento instalar um pacote (7zip) duas vezes seguidas, a primeira vez é bem-sucedida e a segunda vez nada mais além de imprimir uma mensagem de aviso. A mensagem diz:

7zip v9.38 already installed.
Use --force to reinstall, specify a version to install, or try upgrade.

Chocolatey installed 0/1 package(s).
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Eu examinei o código-fonte do Chocolatey para tentar encontrar a resposta. Parece que a chamada de método que verifica se um pacote já está ou não instalado é este . Mas não consegui encontrar o código-fonte para o método FindPackage.

Como o Chocolatey sabe quais pacotes ele já instalou? Ele mantém um banco de dados central em algum lugar da minha máquina, que controla o que ele instalou e o que não tem?

    
por unforgettableid 24.08.2015 / 04:33

1 resposta

2

Ele rastreia isso com base nos pacotes reais no disco. Observe que há uma pasta lib em %ChocolateyInstall% , por exemplo. 'C:\ProgramData\chocolatey\lib' no local de instalação padrão.

Nessa pasta estão as pastas de pacotes, em cada uma delas está o arquivo *.nupkg . Cada arquivo *.nupkg representa um pacote instalado.

Para onde você está procurando, observe o seguinte -

Além disso, o GitHub sugere que você não precisa de links da webarchive. Depois de encontrar o bit do código-fonte, pressione y para obter o link permanente .

    
por 24.08.2015 / 16:27