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可以在chocolatey.org服务器上导航SSL 证书
  • 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控制台,确认您可以运行名为choco.exe的Chocolatey客户端。

当您运行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, searchfind。这些命令在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)的示例。

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 instal

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

自动化软件管理如果操作不当可能会是一个破坏性的任务。与其一次性进行大量更改,倒不如先运行一个测试,看看本应该发生什么。

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/