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 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'"
     # Params是軟件包參數,傳遞給軟件包
     # Install args是安裝程序的參數,附加到silentArgs
     # 在安裝程序本身的package中
 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 命令。該命令會掃描已安裝的套件,並與指定的套件庫進行交叉參考,以尋找可能的套件更新。

請參閱下面的 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 命令時,您會看到一個固定屬性。例如,在運行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/