Установка Chocolatey: Пошаговое руководство

Если у вас возникают трудности с управлением и поддержкой программного обеспечения в вашей среде, вас ждет приятный сюрприз. В этой статье вы узнаете, как установить Chocolatey и освоить управление вашим программным обеспечением!

В этой статье вы на практике узнаете, как установить Chocolatey, управлять программным обеспечением и получите базовое представление о том, что делает этот продукт особенным.

Связано: Как создать ваш первый пакет Chocolatey

Предварительные требования

Этот учебник будет пошаговым руководством. Если вы планируете следовать за нами, убедитесь, что у вас выполнены следующие предварительные требования.

  • Windows 10 – В учебнике будет использоваться Windows 10 1903.
  • Windows PowerShell 5.1 (необязательно) – Хотя это технически не требуется Chocolatey, все примеры в этой статье будут использовать именно его.

Для полного разбора всех технических требований ознакомьтесь с страницей Требований Chocolatey.

Установка Chocolatey

При начале работы с Chocolatey вашей первой задачей будет загрузка и установка клиента Chocolatey. Технически, у Chocolatey также есть серверный компонент, но в этой статье вы будете сосредотачиваться на использовании клиента для загрузки, установки и обновления программного обеспечения.

Вы можете установить Chocolatey множеством способов. В этой статье вы узнаете о самом распространенном способе, используя PowerShell.

Для подробного разбора установки клиента Chocolatey различными способами ознакомьтесь с Руководством по установке Chocolatey.

Для установки Chocolatey компания предоставляет удобный сценарий PowerShell для выполнения на вашей системе. Прежде чем запустить сценарий установки, рекомендуется его проверить перед загрузкой. Вы можете найти сценарий здесь.

Связано: Как запустить PowerShell с правами администратора

С открытой консолью PowerShell от имени администратора загрузите и выполните сценарий одной командой.

Ниже приведен фрагмент кода:

  • Обеспечивает возможность PowerShell навигации по SSL-сертификату на сервере chocolatey.org
  • Загружает сценарий с https://chocolatey.org/install.ps1
  • Запускает сценарий после загрузки
  • Добавляет папку %ALLUSERSPROFILE%\chocolatey\bin в переменную среды 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

Возможно, вы столкнетесь с ошибкой, упоминающей политику выполнения. В этом случае текущая политика выполнения может не разрешать выполнение сценариев. Чтобы устранить это, убедитесь, что вы расслабили политику выполнения, установив ее в Unrestricted или RemoteSigned.

Проверка установки

После завершения сценария PowerShell и возвращения в консоль PowerShell подтвердите, что можете запустить клиент Chocolatey под названием choco.exe.

При выполнении команды choco вы должны увидеть установленную версию и некоторую базовую справочную информацию, как показано ниже.

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

Получение справки

Одна из лучших особенностей клиента Chocolatey CLI – это его система справки. Встроенная система справки отлично документирует всю функциональность Chocolatey.

Для доступа к системе справки укажите параметр -? в команде choco, как показано ниже.

Вы увидите, что у клиента Chocolatey есть различные команды, с помощью которых можно выполнять множество различных функций для управления программным обеспечением.

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.

Если вам когда-либо потребуется помощь в выполнении определенного действия, обратитесь к системе справки!

Поиск пакетов

После установки и запуска клиента Chocolatey пришло время посмотреть, какие пакеты доступны для установки. У клиента есть три команды, позволяющие сделать это, называемые list, search и find. Эти команды просматривают хранилище Chocolatey для доступных пакетов или перечисляют пакеты на вашем компьютере.

Ниже вы найдете разбивку и примеры из системы справки.

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

В качестве примера ниже приведен пример перечисления всех пакетов (list), установленных на локальном компьютере (-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.

Инспекция пакетов Chocolatey перед загрузкой

Перед тем, как загрузить пакет, вам всегда следует понимать, что на самом деле делает этот пакет. К счастью, у вас есть команда info. Эта команда находит сведения о пакетах, расположенных в хранилище Chocolatey.

С помощью команды choco info вы можете найти атрибуты пакета, такие как автор пакета, количество загрузок, контрольную сумму, источник и многое другое.

Ознакомьтесь с вариантами запуска choco info ниже.

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>]

Например, предположим, что вам нужно установить Google Chrome, и вы заметили доступный пакет под названием googlechrome. Запустите choco info googlechrome и обратите внимание, какую информацию можно найти.

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.

Установка пакетов

Достаточно получать информацию о пакетах. Пришло время действительно установить некоторое программное обеспечение! Для этого используйте choco install.

Команда choco install могущественна и важна. Если есть одна команда, которую вы должны запомнить и стать профессионалом в ее использовании, то это именно эта.

Команда choco install устанавливает пакет или список пакетов, которые вы предоставляете, когда знаете, что вам нужно.

Запустите choco install --help, чтобы увидеть ваши варианты.

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'"
     # Параметры - параметры пакета, передаваемые пакету
     # Аргументы установки - аргументы установщика, добавленные к silentArgs
     # в пакете для самого установщика
 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

Обновление пакетов Chocolatey

После установки пакета вам, безусловно, захочется поддерживать его в актуальном состоянии. Это мощная функция Chocolatey.

Когда у вас уже есть установленные пакеты, вы быстро обнаружите, что Chocolatey не обновляет пакеты автоматически в фоновом режиме. Клиент Chocolatey не работает как служба.

Чтобы обновить установленные пакеты Chocolatey, вам нужно вручную вызывать команду choco каждый раз, когда вам нужно провести обновление. Для этого выполните команду choco upgrade вместе с пакетом, который вы хотите обновить.

Команда upgrade установит пакет, если он еще не существует в системе.

Ниже вы найдете подробности и примеры из системы справки.

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'"

Вы можете обновить все пакеты до последней версии, выполнив команду choco upgrade all.

Поиск локальных устаревших пакетов

Что, если вы хотите проверить, есть ли новая версия вашего пакета, прежде чем слепо выполнять команду choco upgrade? Вы можете использовать команду outdated. Команда outdated сканирует установленные пакеты и перекрестно сопоставляет их с вашим выбранным хранилищем пакетов для возможных обновлений.

Ознакомьтесь с тем, что возможно с командой choco outdated --help ниже.

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

Например, если вы хотите найти все локально установленные устаревшие пакеты, вы можете сделать это с помощью 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.

Подавление обновлений пакетов

Держать программное обеспечение в актуальном состоянии определенно рекомендуется, но что, если у вас есть пакеты, которые вы хотите явно предотвратить обновление? Почему бы вам это понадобилось?

Одна из причин подавления обновлений может быть предотвращение избыточных обновлений. Например, возможно, вы только что хотели автоматизировать начальную установку пакета. Вы не хотите поддерживать полный жизненный цикл программного обеспечения этого пакета.

Возможно, вам нужно сделать исключения при принудительном обновлении всех пакетов через Chocolatey. В таком случае вы можете использовать фиксацию пакетов.

При выполнении различных команд Chocolatey вы увидите атрибут закреплен. Например, при выполнении команды outdated, вы можете четко видеть этот атрибут, как показано ниже.

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

Ниже вы найдете разбор и примеры, найденные в системе справки

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

Удаление пакетов Chocolatey

Наконец, возможно, вы решили, что вам больше не нужно установленное программное обеспечение. Вместо того чтобы вручную заходить в Панель управления, находить программное обеспечение и удалять его таким образом, используйте команду choco uninstall, чтобы быстро справиться с этим.

Команда choco uninstall удаляет один или несколько пакетов программного обеспечения одним махом.

Обратите внимание, как использовать команду choco uninstall согласно содержимому справки ниже.

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

Бережное обращение перед внесением изменений (choco whatif)

Автоматизация управления программным обеспечением может быть деструктивной задачей, если она не выполняется должным образом. Лучше сначала провести тест, чтобы увидеть, что могло бы произойти. К счастью, у клиента Chocolatey есть несколько параметров, чтобы сделать именно это.

Переключатель WhatIf

У каждой команды choco есть переключатель с именем --whatif с псевдонимами --noop и --what-if. Если эти переключатели используются с командой choco, Chocolatey фактически не выполнит действие, а сообщит вам, что могло бы произойти.

Ниже приведен пример попытки удаления всех пакетов на локальной системе, но с использованием переключателя whatif, чтобы ничего фактически не делать.

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.

Подтверждение действий

Когда вы запускаете choco install для установки пакета, вам обычно предлагается подтвердить, хотите ли вы продолжить процесс установки. Choco также требует подтверждения для дополнительных пакетов, которые вызываются как зависимость для вашего первоначального пакета.

Ниже приведен пример того, как Chocolatey сначала запрашивает установку Firefox, прежде чем фактически выполнить действие.

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):

Процесс подтверждения – это запасная копия, но он может замедлить вас. Если вы хотите, чтобы процесс продолжался без прерываний, добавьте переключатель -y, --yes или --confirm в конце вашей команды.

Использование переключателя -y хорошо работает при запуске команд в автономном режиме, например, в запланированной задаче.

Следующие шаги

Теперь, когда вы знаете, как установить Chocolatey и использовать его на высоком уровне, куда идти дальше? Попробуйте найти общее программное обеспечение, которое обычно приходится устанавливать и обновлять снова и снова.

Попробуйте создать скрипт для управления этим программным обеспечением с помощью Chocolatey, чтобы погрузиться в это и начать узнавать больше об этом удобном менеджере пакетов для Windows!

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