Instalación de Chocolatey: Una Guía Paso a Paso

Si tienes problemas para gestionar y mantener el software en tu entorno, estás de enhorabuena. En este artículo, aprenderás cómo instalar Chocolatey y controlar tus paquetes de software.

En este artículo, aprenderás de manera práctica cómo instalar Chocolatey, gestionar software y obtener una introducción básica a lo que hace que este producto funcione.

Relacionado: Cómo Crear tu Primer Paquete Chocolatey

Requisitos Previos

Este tutorial será un recorrido paso a paso. Si planeas seguirlo, asegúrate de cumplir con los siguientes requisitos previos.

  • Windows 10: El tutorial utilizará Windows 10 1903.
  • Windows PowerShell 5.1 (opcional): Aunque no es técnicamente necesario para Chocolatey, es lo que se usará en todos los ejemplos de este artículo.

Para obtener un desglose completo de todos los requisitos técnicos, consulta la página de Requisitos de Chocolatey.

Instalando Chocolatey

Cuando comienzas con Chocolatey, tu primera tarea será descargar e instalar el cliente Chocolatey. Técnicamente, Chocolatey también tiene un componente de servidor, pero en este artículo nos centraremos en usar el cliente para descargar, instalar y actualizar software.

Puedes instalar Chocolatey de muchas maneras diferentes. En este artículo, aprenderás la forma más común, utilizando PowerShell.

Para obtener un desglose detallado de cómo instalar el cliente de Chocolatey de muchas maneras diferentes, consulta la guía de instalación de Chocolatey.

Para instalar Chocolatey, la empresa proporciona un práctico script de PowerShell para ejecutar en tu sistema. Antes de ejecutar el script de instalación, primero debes inspeccionarlo antes de descargarlo. Puedes encontrar el script aquí.

Relacionado: Cómo ejecutar PowerShell como administrador

Con la consola de PowerShell abierta como administrador, descarga y ejecuta el script todo en un solo comando.

El fragmento de código a continuación:

  • Asegura que PowerShell pueda navegar por el SSL certificado en el servidor chocolatey.org
  • Descarga el script desde https://chocolatey.org/install.ps1
  • Ejecuta el script una vez descargado
  • Agrega la carpeta %ALLUSERSPROFILE%\chocolatey\bin al variable de entorno PATH
[System.Net.ServicePointManager]::SecurityProtocol = 3072
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
Downloading and install Chocolatey

Puedes encontrarte con un error que menciona una política de ejecución. Si es así, es posible que tu política de ejecución actual no permita la ejecución de scripts. Para solucionar esto, asegúrate de relajar tu política de ejecución cambiándola a Sin restricciones o Firmado de forma remota.

Verificación de la Instalación

Una vez que el script de PowerShell haya terminado y hayas regresado a la consola de PowerShell, confirma que puedes ejecutar el cliente Chocolatey llamado choco.exe.

Cuando ejecutes choco, deberías ver la versión instalada y alguna información básica de ayuda, como se muestra a continuación.

PS51> choco
Chocolatey v0.10.15
Please run 'choco -?' or 'choco <command> -?' for help menu.~~

Obtención de Ayuda

Una de las mejores características del cliente CLI Chocolatey es su sistema de ayuda. El sistema de ayuda integrado hace un excelente trabajo documentando toda la funcionalidad de Chocolatey.

Para acceder al sistema de ayuda, proporciona el interruptor -? al comando choco, como se muestra a continuación.

Puedes ver que el cliente Chocolatey tiene varios comandos donde puedes realizar muchas funciones diferentes para gestionar el software.

PS51> choco -?
This is a listing of all of the different things you can pass to choco.
 
Commands
 
 * list - lists remote or local packages
 * find - searches remote or local packages (alias for search)
 * 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)
 * setapikey - retrieves, saves or deletes an apikey for a particular source (alias for apikey)
 * apikey - retrieves, saves or deletes an apikey for a particular source
 * unpackself - have chocolatey set itself 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)
 
 
Please run chocolatey with `choco command -help` for specific help on
 each command.

Si alguna vez te encuentras atascado tratando de averiguar cómo realizar una acción específica, ¡consulta el sistema de ayuda!

Buscar Paquetes

Una vez que hayas instalado y ejecutado el cliente Chocolatey, es hora de ver qué tipo de paquetes están disponibles para instalar. El cliente tiene tres comandos que te permiten hacer precisamente eso, llamados list, search y find. Estos comandos buscan en un repositorio de Chocolatey los paquetes disponibles o enlistan los paquetes en tu máquina.

A continuación, encontrarás el desglose y ejemplos que se encuentran en el sistema de ayuda.

PS51> choco list --help

List/Search Command
 
Chocolatey will perform a search for a package local or remote.
 
* choco list - lists remote or local packages
* choco search - searches remote or local packages (alias for list)
* choco find - searches remote or local packages (alias for search)
 
Usage:
 
choco search <filter> [<options/switches>]
choco list <filter> [<options/switches>]
clist <filter> [<options/switches>]
 
Popular Switch --localonly or -lo
Usage of -lo:
 
choco <search,list,find> --localonly

Como ejemplo, a continuación se muestra cómo enumerar todos los paquetes (list) instalados en una computadora local (-lo).

PS51> choco list -lo
Chocolatey v0.10.15
chocolatey 0.10.15
chocolatey-core.extension 1.3.3
GoogleChrome 77.0.3865.90
3 packages installed.

Inspeccionar Paquetes de Chocolatey Antes de Descargar

Antes de descargar un paquete, siempre debes entender qué hace realmente ese paquete. Afortunadamente, tienes el comando info. Este comando encuentra detalles de paquetes ubicados en un repositorio de Chocolatey.

Con choco info, puedes encontrar atributos del paquete como el autor del paquete, el recuento de descargas, la suma de comprobación, la fuente y más.

Échale un vistazo a tus opciones para ejecutar choco info a continuación.

PS51> choco info --help

Info Command
 
Chocolatey will perform a search for a package local or remote and provide
detailed information about that package. This is a synonym for
`choco search <pkgname> --exact --detailed`.
 
* choco info pkgname - retrieves package information.
* Shorthand for choco search pkgname --exact --verbose
* Shorthand for choco search pkgname --exact --detailed
 
 
Usage:
 
choco info [<options/switches>]

Por ejemplo, supongamos que necesitas instalar Google Chrome y has notado que hay un paquete disponible llamado googlechrome. Ejecuta choco info googlechrome y observa qué tipo de información puedes encontrar.

PS51> choco info googlechrome
Chocolatey v0.10.15
GoogleChrome 77.0.3865.90 [Approved] Downloads cached for licensed users
Title: Google Chrome | Published: 9/18/2019
Package approved as a trusted package on Sep 18 2019 20:15:10.
Package testing status: Passing on Sep 18 2019 18:45:17.
Number of Downloads: 19851699 | Downloads for this version: 262131
Package url
Chocolatey Package Source: <https://github.com/chocolatey-community/chocolatey-coreteampackages/tree/master/automatic/googlechrome>
Package Checksum: 'v7bDDUTo21k31xqUW+1amzaEWjeOqsEgS3txYNRgRaO3Q7ZnkzYz4S69AxTFn4r0HUB5Wi7NHXZBag/OaJTPKA==' (SHA512)
Tags: google chrome web internet browser admin
Software Site: <https://www.google.com/chrome/browser/>
Software License: <https://www.google.it/intl/en/chrome/browser/privacy/eula_text.html>
Description: Chrome is a fast, simple, and secure web browser, built for the modern web.

Instalación de paquetes

Ya es suficiente obtener información sobre los paquetes. ¡Es hora de realmente instalar algo de software! Para hacerlo, utiliza choco install.

El comando choco install es poderoso y esencial. Si hay un comando que debes recordar y dominar, es este.

El comando choco install instala un paquete o una lista de paquetes que proporcionas una vez que sabes lo que necesitas.

Ejecuta choco install --help para ver cuáles son tus opciones.

PS51> choco install --help
 Install Command
 Installs a package or a list of packages
 Usage:
 choco install  [ ] []
     cinst  [ ] []
 Examples:
 choco install sysinternals
 choco install notepadplusplus googlechrome atom 7zip
 choco install notepadplusplus --force --force-dependencies
 choco install notepadplusplus googlechrome atom 7zip -dvfy
 choco install git -y --params="'/GitAndUnixToolsOnPath /NoAutoCrlf'"
 choco install git -y --params="'/GitAndUnixToolsOnPath /NoAutoCrlf'" --install-arguments="'/DIR=C:\git'"
     # Los parámetros son parámetros del paquete, pasados al paquete
     # Los argumentos de instalación son argumentos del instalador, añadidos a silentArgs
     #  en el paquete para el instalador en sí
 choco install nodejs.install --version 0.10.35
 choco install git -s "'https://somewhere/out/there'"
 choco install git -s "'https://somewhere/protected'" -u user -p pass

Manteniendo los Paquetes de Chocolatey Actualizados

Una vez que se instala un paquete, sin duda querrás mantenerlo actualizado. Esta es una característica poderosa de Chocolatey.

Una vez que tengas algunos paquetes instalados, rápidamente descubrirás que Chocolatey no actualiza automáticamente los paquetes en segundo plano. El cliente de Chocolatey no se ejecuta como un servicio.

Para actualizar los paquetes de Chocolatey instalados, debes invocar choco manualmente cada vez que necesites hacer una actualización. Para hacerlo, ejecuta el comando choco upgrade junto con el paquete que necesitas actualizar.

El comando upgrade instalará el paquete si este no existe en el sistema.

A continuación encontrarás el desglose y ejemplos encontrados en el sistema de ayuda.

PS51> choco upgrade --help
 Upgrade Command
 Upgrades a package or a list of packages. Some may prefer to use cup
  as a shortcut for choco upgrade. If you do not have a package
 installed, upgrade will install it.
 Usage:
 choco upgrade  [ ] []
 cup  [ ] []
 Examples:
 choco upgrade chocolatey
 choco upgrade notepadplusplus googlechrome atom 7zip
 choco upgrade notepadplusplus googlechrome atom 7zip -dvfy
 choco upgrade git -y --params="'/GitAndUnixToolsOnPath /NoAutoCrlf'"
 choco upgrade git -y --params="'/GitAndUnixToolsOnPath /NoAutoCrlf'" --install-args="'/DIR=C:\git'"
 Params are package parameters, passed to the package
 Install args are installer arguments, appended to the silentArgs
 in the package for the installer itself
 choco upgrade nodejs.install --version 0.10.35
 choco upgrade git -s "'https://somewhere/out/there'"
 choco upgrade git -s "'https://somewhere/protected'" -u user -p pass
 choco upgrade all
 choco upgrade all --except="'skype,conemu'"

Puedes actualizar todos los paquetes a la última versión ejecutando choco upgrade all.

Encontrar Paquetes Locales Obsoletos

¿Qué pasa si quieres verificar si hay una nueva versión de tu paquete antes de ejecutar ciegamente choco upgrade? Puedes usar el comando outdated. El comando outdated escanea tus paquetes instalados y compara con tu repositorio de paquetes designado en busca de posibles actualizaciones de paquetes.

Echa un vistazo a lo que es posible con choco outdated --help a continuación.

PS51> choco outdated --help

Outdated Command
 
Returns a list of outdated packages.
 
* outdated - retrieves packages that are outdated. Similar to upgrade all --noop
 
Usage:
 
choco outdated [<options/switches>]
 
Examples:
 
choco outdated
choco outdated -s <https://somewhere/out/there>
choco outdated -s "'<https://somewhere/protected>'" -u user -p pass

Por ejemplo, si quieres encontrar todos los paquetes instalados localmente que estén desactualizados, puedes hacerlo usando choco outdated.

PS51> choco outdated
Chocolatey v0.10.15
Outdated Packages
Output is package name | current version | available version | pinned?
 
 
Chocolatey has determined 0 package(s) are outdated.

Suprimiendo las Actualizaciones de Paquetes

Mantener el software actualizado es definitivamente recomendado, pero ¿qué pasa si tienes paquetes en los que necesitas evitar explícitamente eso? ¿Por qué querrías hacerlo?

Una razón para suprimir las actualizaciones sería evitar redundancias en las actualizaciones. Por ejemplo, tal vez solo estabas buscando automatizar la instalación inicial de un paquete. No quieres mantener todo el ciclo de vida del software del paquete.

Tal vez necesitas hacer algunas exclusiones al forzar a Chocolatey a actualizar todos los paquetes. En ese caso, puedes anclar los paquetes.

Cuando ejecutas varios comandos de Chocolatey, verás un atributo anclado. Por ejemplo, al ejecutar el comando outdated, puedes ver claramente ese atributo como se muestra a continuación.

PS51> choco outdated
Chocolatey v0.10.15
Outdated Packages
Output is package name | current version | available version | pinned?

A continuación, encontrarás el desglose y ejemplos que se encuentran en el sistema de ayuda

PS51> choco pin --help

Pin Command
 
Pin a package to suppress upgrades.
 
This is especially helpful when running `choco upgrade` for all
 packages, as it will automatically skip those packages. Another
 alternative is `choco upgrade --except="pkg1,pk2"`.
 
Usage
 
	choco pin [list]|add|remove [<options/switches>]
 
Examples
 
	choco pin
	choco pin list
	choco pin add -n=git
	choco pin add -n=git --version 1.2.3
	choco pin remove --name git
* pin - suppress upgrades for a package

Desinstalación de paquetes de Chocolatey

Finalmente, tal vez hayas decidido que ya no necesitas el software instalado. En lugar de ir manualmente al Panel de control, encontrar el software y eliminarlo de esa manera, utiliza el comando choco uninstall para hacerlo rápidamente.

El comando choco uninstall elimina uno o muchos paquetes de software de una vez.

Observa cómo usar el comando choco uninstall a través del contenido de ayuda a continuación.

PS51> choco uninstall --help

Uninstall Command
 
Uninstalls a package or a list of packages.
 
Usage:
 
choco uninstall <pkg | all> [pkg2 pkgN] [options/switches]
cuninst <pkg | all> [pkg2 pkgN] [options/switches]
 
NOTE: `all` is a special package keyword that will allow you to
uninstall all packages.
 
Examples:
 
choco uninstall git
choco uninstall notepadplusplus googlechrome atom 7zip
choco uninstall notepadplusplus googlechrome atom 7zip -dv
choco uninstall ruby --version 1.8.7.37402
choco uninstall nodejs.install --all-versions

Jugándolo de manera segura antes de realizar cambios (choco whatif)

Automatizar la gestión de software puede ser una tarea destructiva si no se realiza correctamente. En lugar de realizar muchos cambios a la vez, sería más inteligente ejecutar primero una prueba para ver qué habría pasado. Afortunadamente, el cliente de Chocolatey tiene algunos parámetros para hacer precisamente eso.

El interruptor WhatIf

Cada comando choco tiene un interruptor llamado --whatif con los alias --noop y --what-if. Si estos interruptores se utilizan con un comando choco, Chocolatey no realizará realmente la acción, pero te informará de lo que habría ocurrido.

A continuación, puedes ver un ejemplo en el que se intenta desinstalar todos los paquetes en el sistema local, pero se utiliza el interruptor whatif para evitar que realmente se haga algo.

PS51> choco uninstall all -whatif

Chocolatey v0.10.15
_ Chocolatey:ChocolateyUninstallCommand - Noop Mode _
Would have uninstalled chocolatey v0.10.15.
Would have uninstalled GoogleChrome v77.0.3865.90.
Would have uninstalled chocolatey-core.extension v1.3.3.

Confirmar acciones

Cuando ejecutas choco install para instalar un paquete, generalmente se te solicita confirmar si deseas que el proceso de instalación continúe. Choco también requiere confirmación para los paquetes adicionales que se llaman como dependencia de tu paquete inicial.

A continuación, puedes ver un ejemplo de cómo Chocolatey primero solicita la instalación de Firefox antes de realizar realmente la acción.

PS51> choco install firefox
Chocolatey v0.10.15
Installing the following packages:
firefox
By installing you accept licenses for the packages.
Progress: Downloading Firefox 69.0.1... 100%
 
Firefox v69.0.1 [Approved]
firefox package files install completed. Performing other installation steps.
The package Firefox 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/[A]ll - yes to all/[N]o/[P]rint):

El proceso de confirmación es una medida de seguridad, pero puede ralentizarte. Si deseas que el proceso continúe sin interrupciones, agrega un interruptor de -y, --yes o --confirm al final de tu comando.

Utilizar el interruptor -y funciona bien al ejecutar comandos sin supervisión, como en una tarea programada.

Próximos pasos

Ahora que sabes cómo instalar Chocolatey y usarlo a un nivel básico, ¿a dónde vas desde aquí? Ahora intenta encontrar un software común que normalmente tengas que instalar y actualizar una y otra vez.

Intenta crear un script para gestionar ese software con Chocolatey para familiarizarte con él y comenzar a aprender más sobre este práctico administrador de paquetes para Windows.

Source:
https://adamtheautomator.com/install-chocolatey/