Chocolatey Logo

Chocolatey: Um gerenciador de pacotes Windows (similar ao apt-get e yum)

Em DevOps, Sistemas operacionais por Jonathan Maia

Quem usa Linux já está super acostumado a utilizar gerenciadores de pacotes como o yum e apt-get para baixar, instalar, remover ou atualizar os pacotes do seu sistema operacional. No Windows, é aquela trabalheira: temos que baixar manualmente os softwares, alguns possuem atualizações automáticas enquanto outros ficam lá desatualizados para sempre. Para resolver esse problema, temos o excelente Chocolatey em ação:

Chocolatey em ação

Fonte: https://raw.githubusercontent.com/wiki/chocolatey/choco/images/gifs/choco_install.gif

O Chocolatey é um gerenciador de pacotes para Windows (muito similar ao apt-get ou yum), com mais de 5.000 pacotes únicos disponíveis (os softwares mais utilizados para Windows estão lá), além de 170 milhões de instalações de pacotes já realizadas. Como exemplo, para instalar o Libre Office no Linux com apt-get, você utilizaria:

apt-get install libreoffice

No Windows, o comando equivalente do Chocolatey é:

choco install libreoffice

Utilizo o Linux desde 2004, já compilei “muito kernel” e muitos softwares na época em que os gerenciadores de pacotes do Linux ainda eram bem limitados, mas antes que apareça um fanboy me mandando usar Linux, segue minha réplica. 😉

Stop crying and grow up

Brincadeiras à parte, como profissionais de TI, devemos estar preparados para ambientes organizacionais heterogêneos e prontos para trabalhar em ambientes de desenvolvimento diversos. Tais ambientes, por muitas vezes, envolvem o Windows. Então, que façamos um uso profissional dele.

Instalação do Chocolatey

Os pré-requisitos para a instalação do Chocolatey são:

  • Windows 7 ou 10 / Windows Server 2003 (ou superior);
  • PowerShell v2+ (já vem instalado no Windows 7 e 10);
  • .NET Framework 4+ (o próprio instalador do Chocolatey tentará instalá-lo caso não esteja presente).

Você pode instalar o Chocolatey diretamente a partir do cmd ou do PowerShell.

Para instalar através do cmd, abra uma janela como administrador:

Execute o cmd como administrador

Execute o cmd como administrador

Utilize o comando:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Simples assim. Agora, o comando choco já está disponível para utilização.

Utilização do Chocolatey

Ainda em um cmd como administrador (ou no PowerShell), vamos buscar pelo software Audacity (editor de áudio).

Basta usar o comando search:

C:\>choco search audacity
Chocolatey v0.10.7
audacity 2.1.3 [Approved]
audacity-lame 3.99.3 [Approved] Downloads cached for licensed users
mobalivecd 2.1 - Possibly broken
3 packages found.

Para instalar o Audacity, utilize o comando install:

C:\>choco install audacity
Chocolatey v0.10.7
Installing the following packages:
audacity
By installing you accept licenses for the packages.
Progress: Downloading audacity 2.1.3... 100%

audacity v2.1.3 [Approved]
audacity package files install completed. Performing other installation steps.
The package audacity wants to run 'chocolateyInstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[N]o/[P]rint): Y

Installing audacity...
audacity has been installed.
audacity installed to 'C:\Program Files (x86)\Audacity'
audacity registered as audacity
audacity can be automatically uninstalled.
The install of audacity was successful.
Software installed to 'C:\Program Files (x86)\Audacity\'

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

Pronto, o Audacity já está instalado na sua máquina.

Observe que durante a instalação tive que confirmar com Y a execução do script de instalação do Audacity. Para remover essa confirmação, é execute o comando install com o argumento -y:

C:\>choco install -y keepass

Também é possível já deixar o Chocolatey configurado para sempre autorizar as instalações:

C:\>choco feature enable -n allowGlobalConfirmation
Chocolatey v0.10.7
Enabled allowGlobalConfirmation

Seguem os comandos que podem ser utilizados com o choco:

C:\>choco -?
This is a listing of all of the different things you can pass to choco.

Commands

* list - lists remote or local packages
* search - searches remote or local packages (alias for list)
* info - retrieves package information. Shorthand for choco search pkgname --exact --verbose
* install - installs packages from various sources
* pin - suppress upgrades for a package
* outdated - retrieves packages that are outdated. Similar to upgrade all --noop
* upgrade - upgrades packages from various sources
* uninstall - uninstalls a package
* pack - packages up a nuspec to a compiled nupkg
* push - pushes a compiled nupkg
* new - generates files necessary for a chocolatey package from a template
* sources - view and configure default sources (alias for source)
* source - view and configure default sources
* config - Retrieve and configure config file settings
* feature - view and configure choco features
* features - view and configure choco features (alias for feature)
* apikey - retrieves or saves an apikey for a particular source
* setapikey - retrieves or saves an apikey for a particular source (alias for apikey)
* unpackself - have chocolatey set it self up
* version - [DEPRECATED] will be removed in v1 - use `choco outdated` or `cup <pkg|all> -whatif` instead
* update - [DEPRECATED] RESERVED for future use (you are looking for upgrade, these are not the droids you are looking for)

Para atualizar um pacote, utilize o upgrade:

choco upgrade audacity

Para atualizar todos os pacotes gerenciados pelo Chocolatey e instalados na sua máquina, utilize o upgrade all:

choco upgrade all

Para ver quais pacotes foram instalados com Chocolatey, utilize o list com o argumento -l:

choco list -l
C:\>choco list -l
Chocolatey v0.10.7
audacity 2.1.3
chocolatey 0.10.7
chocolatey-core.extension 1.3.1
keepass.install 2.36
5 packages installed.
Interface gráfica

Se você gosta de uma interface gráfica, utilizando o próprio choco, instale o pacote ChocolateyGUI:

choco install ChocolateyGUI

Depois, você já pode acessar a interface gráfica:

Chocolatey GUI - Interface Gráfica

Chocolatey GUI – Interface Gráfica

Na interface, é possível listar os pacotes instalados localmente, atualizar pacotes, remover pacotes:

Pacotes instalados

Pacotes instalados

Também é possível pesquisar por pacotes e instalá-los:

Pesquise e instale pacotes

Pesquise e instale pacotes

Gerenciamento de configuração

Se você já trabalhou com ferramentas de gerenciamento de configuração ou automação como Puppet, Chef ou Ansible, deve estar pensando que seria maravilhoso ter uma integração com o Chocolatey no Windows. Pois é, já pensaram nisso. 🙂 Nesta página você encontrará documentações para a integração do Chocolatey com diversas ferramentas de gerenciamento de configuração e automação (para Windows).

Para quem nunca utilizou ferramentas de gerenciamento de configuração, elas nos permitem automatizar o provisionamento de uma máquina, já instalando os pacotes ou softwares necessários, fazendo configurações, subindo serviços, e por aí vai. .

Olha esse exemplo de Puppetfile (arquivo do Puppet):

include chocolatey

package { 'git':
    ensure => latest,
    provider => 'chocolatey',
    source => 'https://my.internal.repository/api/v2',
}

Ele garante que o pacote git estará instalado e o provider será o Chocolatey. Faça isso para todos os demais softwares necessários em seu ambiente Windows e utilize as demais diretivas do Puppet (Exec, Service, …) e seu ambiente Windows ficará totalmente replicável e documentado. Maravilhas!! 🙂

O legal dessas ferramentas é tratar sua infra estrutura como código (você pode versionar o arquivo do Puppet acima) e ter a facilidade de reconstruir seu ambiente facilmente (por exemplo, para um novo desenvolvedor que chegou na equipe).

Conclusão

Particularmente, acho que o Chocolatey é o tipo de projeto que deveria ser suportado pela Microsoft.

Convenhamos, a Loja da Microsoft é ruim demais e está longe de um apt-get ou yum.

Há muitos anos os gerenciadores de pacotes são uma realidade no Linux e raramente precisamos baixar ou compilar um software na mão (quando comecei a trabalhar com Linux em 2004, ainda tinha que compilar muitas coisas, mas hoje é raro ter que compilar algo).

E aí, pronto para começar a brincar com o Chocolatey? Dá uma olhada na documentação completa.

Espero que tenha gostado do conteúdo.

Agradeço se você puder compartilhar esse artigo em suas redes sociais.

Em breve, mais conteúdos de qualidade para você aqui no Blog Eu na TI, o seu Blog sobre Tecnologia da Informação.

Curta nossas páginas nas redes sociais para acompanhar novas postagens.

Um forte abraço e até mais.

Comentários

  1. Pingback: Puppet: Instalação e fundamentos - DevOps Parte 4 - Eu na TI

  2. Muito interessante! Hoje em dia, no Linux, ninguém imagina viver sem apt’s ou semelhantes. A Microsoft deveria ter algo assim há muito tempo, ao menos para ajudar os administradores de sistema.

Deixe uma resposta