Windows: OneGet y Chocolatey

Introducción:

Uno de los objetivos que persigue un administrador de sistemas es la automatización de procesos, es decir evitar realizar tareas manuales y repetitivas infinidad de veces.

En esta ocasión veremos una nueva forma de realizar instalaciones, actualizaciones de aplicaciones comunes en sistemas Windows.

Una de las herramientas que siempre ha podido utilizar el administrador de sistemas en entornos de Active Directory desde Windows Server 2000 es el despliegue de paquetes MSI (Microsoft Installer) utilizando directivas de grupo (GPO), el problema es que no todos los proveedores de software ofrecen paquetes MSI.

Otra forma es utilizar scripts, por ejemplo:


El problema es que el script, funciona hasta que el proveedor de software cambia algún parámetro del proceso de instalación y es necesario rehacer el script o descargarse un script nuevo.

Con PowerShell 5, disponemos de una nueva herramienta: OneGet, gestor de repositorios.

Recordemos que PowerShell 5 está incluida por defecto en Windows 10 y Windows Server 2016, también puede instalarse sobre: Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 7 SP1, Windows Server 2008 R2 SP1.

PowerShell 5, requiere .NET versión 4.5.

¿Cómo funciona?

PowerShell 5, integra OneGet, un gestor de repositorios.

Antes de nada, hemos de entender que todo y que el objetivo es el mismo, su funcionamiento interno a nivel técnico dista mucho de los repositorios Linux.

La forma en que el administrador añade o quita paquetes es muy similar al de los comandos yum (RHEL/CentOS) o apt-get (Debian/Ubuntu).

También es importante diferenciar entre un gestor de repositorios (OneGet) y un repositorio en si (Chocolatey). 

Con estos tres puntos, entenderemos el concepto:

  • OneGet, no es un repositorio en si, es un módulo de PowerShell 5, que realiza la función de gestor de repositorios.
  • Chocolatey no es propiedad de Microsoft y es mantenido por la comunidad: Son repositorios, pero no contienen binarios (ficheros EXE), solo scripts con el sistema de paqueteria NuGet.
  • Los binarios (ficheros EXE), residen igualmente en la URL del proveedor de software.

El proceso a nivel conceptual, es el siguiente:

  • El proveedor de software, lanza al mercado una versión de su software, por ejemplo, WinRAR y libera su instalador (EXE, MSI, etc).
  • Chocolatey desarrolla scripts para su instalación o desinstalación desatendida.
  • Desde los clientes Windows: El módulo OneGet de PowerShell, tiene registrado el repositorio Chocolatey y si se procede a instalar el paquete, de forma transparente, se descarga el paquete de instalación/desinstalación y se procede a su ejecución desatendida. 

* Directorio de scripts de aplicaciones instaladas utilizando el repositorio: Chocolatey
Windows: OneGet y Chocolatey

* Fragmento de PowerShell script referente a la instalación de WinRAR.Windows: OneGet y Chocolatey 

Laboratorio sobre Windows 10 y PowerShell 5: 

A partir de una instalación limpia de Windows 10 RTM, abrimos una ventana de PowerShell como administrador:
#Habilitar ejecución de scripts de PowerShell

Set-ExecutionPolicy RemoteSigned

#Gestores de paquetes instalados:

Get-PackageProvider 


* Ejemplo de ejecución:

PS C:\> Get-PackageProvider| Select-Object Name

Name
----
msu
msi
Programs
PSModule

MSU: Repositorio de Microsoft Update.
MSI: Repositorio de paquetes MSI.

#Paquetes instalados

Get-Package

* Ejemplo de ejecución:

PS C:\> Get-Package |Select-Object Name

Name
----
VMware Tools
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
Actualización para Windows 10 para sistemas basados en x64 (KB3074678)

#Lista los proveedores compatibles

Find-package -provider Bootstrap

* Ejemplo de ejecución:

PS C:\> Find-package -provider Bootstrap |Select-Object Name,Version

Name       Version
----       -------
nuget      2.8.5.127
chocolatey 2.8.5.130

*Bootstrap, proveedor que es capaz de ver otros proveedores.

#Busca un paquete (WinRAR) en el proveedor chocolatey

Find-package -provider chocolatey WinRAR

* Ejemplo de ejecución:

PS C:\> Find-package -provider chocolatey WinRAR

The provider 'chocolatey v2.8.5.130' is not installed.
chocolatey may be manually downloaded from https://oneget.org/ChocolateyPrototype-2.8.5.130.exe and installed.
Would you like PackageManagement to automatically download and install 'chocolatey' now?
[S] Sí  [N] No  [U] Suspender  [?] Ayuda (el valor predeterminado es "S"): S

Name                           Version          Source           Summary
----                           -------          ------           -------
winrar                         5.20.1           chocolatey       WinRAR is a powerful archive manager....

#Instalar paquete

Install-Package WinRAR

* Ejemplo de ejecución:

PS C:\> Install-Package WinRAR

The provider 'nuget v2.8.5.127' is not installed.
nuget may be manually downloaded from https://oneget.org/nuget-anycpu-2.8.5.127.exe and installed.
Would you like PackageManagement to automatically download and install 'nuget' now?
[S] Sí  [N] No  [U] Suspender  [?] Ayuda (el valor predeterminado es "S"): N
ADVERTENCIA: Unable to find package provider 'NuGet'.
ADVERTENCIA: El proveedor de PackageManagement especificado 'NuGet' no está disponible.

The package(s) come from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[S] Sí  [O] Sí a todo  [N] No  [T] No a todo  [U] Suspender  [?] Ayuda (el valor predeterminado es "N"): S

Name                           Version          Source           Summary
----                           -------          ------           -------
winrar                         5.20.1           chocolatey       WinRAR is a powerful archive manager....


#Búsqueda GUI de paquetes disponibles dentro de chocolatey:

Find-Package -provider chocolatey| Out-Gridview


Windows: OneGet y Chocolatey

#Búsqueda múltiple command-line dentro de chocolatey:

* Ejemplo de ejecución:

PS C:\> Find-Package -Provider chocolatey -Name adobereader, WinRAR, VLC, skype, flashpla

Name                           Version          Source           Summary
----                           -------          ------           -------
adobereader                    2015.007.20033   chocolatey       Adobe Reader - View and interact with PDF files
vlc                            2.2.1.20150630   chocolatey       VLC Media Player
winrar                         5.20.1           chocolatey       WinRAR is a powerful archive manager....
flashplayerplugin              18.0.0.232       chocolatey       Adobe Flash Player Plugin for other browsers
skype                          7.8.0.102        chocolatey       Skype - VOIP
flashplayeractivex             18.0.0.232       chocolatey       Adobe Flash Player ActiveX for Internet Explorer

#Instalación masiva:

* Ejemplo de ejecución:

Find-Package -Provider chocolatey -Name Adobereader, WinRAR, VLC, Skype | Install-Package -Force

#Desinstalar paquete:

* Ejemplo de ejecución:

Uninstall-Package WinRAR

¿Podemos instalar Chocolatey sin PowerShell 5, ni OneGet?

Es posible realizar una instalación manual:

https://github.com/chocolatey/choco/wiki/Installation

4 comentarios:

  1. Muy bueno señor, dezconocia esta versión, debemos probarla. Por cierto , algo de SCCM

    ResponderEliminar
    Respuestas
    1. ¡Me alegro que te haya gustado! Sobre SCCM, la verdad es que no lo toco mucho :-))

      Eliminar
  2. Excelente artículo.... Cuando trabajo sobre plataforma Windows empleo casi al 99% la magnifica herramienta Chocolatey que verdaderamente automatiza el trabajo
    Saludos

    ResponderEliminar
    Respuestas
    1. ¡Muchas gracias! Me alegro que te haya gustado.

      Un saludo,

      Xavi.

      Eliminar