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:
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. 😉
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:
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:
Na interface, é possível listar os pacotes instalados localmente, atualizar pacotes, remover pacotes:
Também é possível pesquisar por pacotes e instalá-los:
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.
Olá, sou Jonathan Maia, marido, pai, apaixonado por tecnologia, gestão e produtividade. Ocupo o cargo de Secretário de Tecnologia da Informação e Comunicação do Tribunal Regional do Trabalho do Ceará (TRT7) desde 2021, onde ingressei como servidor público federal (analista de TIC) no ano de 2010. Fui diretor da Divisão de Sistemas de TIC do TRT7 entre 2018 e 2020 e também tenho experiência prévia na Dataprev, Serpro e Ponto de Presença da Rede Nacional de Ensino e Pesquisa (RNP) no Ceará.
Graduado em ciências da computação pela Universidade Federal do Ceará e especialista em gerenciamento de projetos de TIC pela Universidade do Sul de Santa Catarina. Detentor das certificações em gestão e inovação: Project Management Professional © (PMP), Professional Scrum Master II © (PSM II), Professional Scrum Master I © (PSM I), Professional Scrum Product Owner I © (PSPO I), Kanban Management Professional © (KMP II), Certified Lean Inception Facilitator® (CLF), ISO 31000:2018 Risk Management Professional © e Project Thinking Essentials.
Desenvolvedor Full Stack, possuo experiência em diversas arquiteturas / plataformas de desenvolvimento. Já tive experiências profissionais em redes metropolitanas de alta velocidade (GigaFOR/RNP), business intelligence, desenvolvimento de sistemas, gestão de projetos e produtos, governança, etc. Experiência em dezenas de projetos com abordagens de gestão ágeis, híbridas e tradicionais, incluindo projeto com menção honrosa no Prêmio de Excelência em Governo Eletrônico (e-Gov).
Com dezenas de turmas de capacitação, oficinas ou palestras ministradas nas temáticas de gestão ágil, gestão de projetos, tecnologia, inovação e produtividade nas seguintes instituições: Conselho Superior da Justiça do Trabalho (CSJT), Tribunal de Justiça do Distrito Federal e Territórios (TJDFT), Tribunais Regionais do Trabalho do Ceará (TRT7), Pará e Amapá (TRT8), Sergipe (TRT20), Rio Grande do Norte (TRT21), Tribunais Regionais Eleitorais do Ceará (TRE-CE), Mato Grosso do Sul (TRE-MS) e da Bahia (TRE-BA), Justiça Federal em Sergipe (JF-SE), Justiça Federal no Ceará (JF-CE), Companhia Siderúrgica do Pecém (CSP), Instituto Federal do Ceará (IF-CE), Instituto Federal do Rio Grande do Norte (IF-RN), Banco do Nordeste do Brasil (BNB), Gagliardi (Mobil), Udemy, Companhia Cearense de Gás (CEGÁS), Agile Trends Gov, Project Management Institute (PMI-CE), Cagece, Faculdade Estácio e Associação de Gerenciamento de Projetos do Mato Grosso do Sul (AGPMS).
Comentários
Pingback: Puppet: Instalação e fundamentos - DevOps Parte 4 - Eu na TI
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.
Concordo, Marcelo!