¿Instalar un gestor de paquetes en Windows? Así es, aunque parezca una broma del día de los inocentes. Chocolatey es un gestor de paquetes para Windows similar a APT para Debian o yum en CentOS. Este sistema de gestión de software y automatización está basado en PowerShell y es capaz de trabajar con diferentes instaladores de software para sistemas Windows como MSI, NSIS, InnoSetup, binarios de instalación y archivos comprimidos (ZIP). Como cualquier gestor de paquetes permite manejar de forma simple todos los aspectos de la administración de software como instalación, configuración, actualización y desinstalación.

¿Alguna vez imaginaron instalar software en Windows al igual que en GNU/Linux ejecutando algo como apt install gimp de manera rápida y desatendida? Gracias a Chocolatey es posible y tan simple como ejecutar:

choco install gimp

Nunca más siguiente, siguiente, siguiente...

Ahora bien, tal vez muchos usuarios no acostumbrados a trabajar con sistemas GNU/Linux se pregunten ¿para qué quiero un gestor de paquetes en Windows? La respuesta no es tan simple, pero quienes trabajamos con sistemas GNU/Linux y/o *BSD conocemos la gran cantidad de ventajas que trae un gestor de paquetes en lo que a mantenimiento de software respecta.

Primero que nada está la ventaja de instalar cualquier aplicación de forma desatendida (nunca más el tedio de presionar "Siguiente" hasta el hartazgo), en cambio lanzar un comando e irse a buscar una taza de café. Segundo está la mantenibilidad en sí. Es decir, la necesidad de actualizar a una versión superior de una aplicación que ya se encuentra instalada. ¿Otra vez descargar y "siguiente, siguiente, siguiente..."? Esto ya lo hice

Luego ¿qué pasa si en vez de una tenemos que actualizar un puñado de aplicaciones?

Ahora analicemos esta situación en un escenario donde tenemos que administrar un conjunto de hosts corriendo Windows (por ejemplo, estaciones de trabajo) en una red local: ¿cómo hacemos para actualizar todo el software y aplicaciones de todos los sistemas?

Con Chocolatey es posible actualizar todo el software del sistema ejecutando choco upgrade all -y. Al mismo tiempo es posible correr procesos de actualización en múltiples sistemas en simultáneo gracias a que se acopla con herramientas de automatización como Ansible, Puppet, Chef, PowerShell DSC, SCCM y más. En definitiva, la gran ventaja de los gestores de paquetes es la capacidad de mantener software de forma automática y desatendida.

En este punto tal vez piensen "pero en Windows la mayor cantidad de software es propietario". Sin embargo, un aspecto interesante de este gestor es que permite instalar y mantener tanto software libre y open-source como software propietario que requiere de licencias. Luego, en cuanto a la seguridad, los paquetes en el repositorio de Chocolatey utilizan scripts de automatización que descargan el software desde los puntos de distribución oficiales.

Una diferencia con los gestores de paquetes tradicionales de los sistemas GNU/Linux o *BSD, es que Chocolatey instala el software utilizando los diferentes instaladores provistos por cada pieza de software. De allí la necesidad de soportar los diferentes formatos de instaladores como MSI NSIS, etc.

Instalación con PowerShell

Chocolatey requiere PowerShell 2+ y .NET 4+ en Windows 7 en adelante o Windows Server 2003 en adelante. Habiendo verificado que contamos con una versión de PowerShell 2 o superior, es posible instalar Chocolatey de forma simple de acuerdo a las instrucciones en la documentación oficial:

Install with PowerShell.exe:

Para instalar Chocolatey es necesario abrir una terminal de PowerShell con privilegios administrativos:

Luego ejecutar el siguiente comando:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Luego de un par de minutos se ha instalado correctamente:

Se observa que se instala en el directorio C:\ProgramData\chocolatey y se define la variable de entorno ChocolateyInstall con esta ruta. Dentro del mismo, se utiliza el subdirectorio lib para los paquetes.

Uso básico de choco

El binario choco.exe corresponde con el gestor de paquetes. A partir de ahora se puede invocar desde cualqueir lugar simplemente ejecutando choco, ya sea una consola PowerShell o cmd.

Para obtener ayuda, ejecutar choco /? | more:

choco /? | more

(Sí, por si no lo sabían, la consola de Windows incluye pipes y posee utilitarios básicos como more, idénticos a aquellos que se encuentran en los sistemas Unix.)

Para buscar paquetes, utilizar el subcomando "search". Algunos ejemplos:

Tal como mencionaba anteriormente, además de software libre y open-source es posible encontrar mucho software propietario:

Aunque, más allá de buscar paquetes desde línea de comandos, es también posible navegar el repositorio de paquetes de Chocolatey.

Para instalar un paquete, simplemente ejecutar "install":

Confirmar la instalación:

Si se desea responder sí automáticamente, se deberá agregar la opción -y. Dependiendo de la licencia del paquete, será necesario o no responder más preguntas. Al finalizar, es posible comprobar que se ha instalado la aplicación (en este ejemplo WinSCP) correctamente:

En las propiedades del enlace, se observa que se instala en la ubicación por defecto de Windows (C:\Program Files\ o C:\Program Files (x86)\ para software de 32 bits):

Para desinstalar un paquete, utilizar el subcomando "uninstall":

choco uninstall winscp

Si se desea actualizar un paquete, ejecutar "upgrade":

choco upgrade winscp

Si en cambio se desean actualizar todos los paquetes, está definida la palabra clave "all":

choco upgrade all -y

Gracias a esta herramienta, en combinación con otra tecnología de automatización, es posible gestionar el software de una conjunto de sistemas Windows de forma automatizada y desatendida.

Referencias


Tal vez pueda interesarte


Compartí este artículo