什么是 Chocolatey 以及如何安装它?

探索 Chocolatey:Windows 软件包管理的强大工具

Windows 操作系统以其用户友好性而闻名。 通过利用像 Chocolatey (也称为 Choco) 这样的开源工具,我们可以进一步定制和优化 Windows 的功能。

Chocolatey 概览

Chocolatey 是一个专为 Windows 设计的开源软件包管理器。 它的作用类似于 Linux 系统中的 DNF 或 APT 软件包管理器。 对于希望在系统上轻松安装、更新或删除软件的开发人员和高级用户来说,Chocolatey 是一个非常有价值的工具。

让我们深入了解 Chocolatey 的更多细节。 在此之前,我们先简单了解一下软件包管理器的概念。

什么是软件包管理器?

操作系统中的软件包管理器允许您跟踪计算机上安装的软件包。 您可以使用它来管理现有软件,更新这些软件,甚至安装新软件。 当您不再需要某个软件包时,软件包管理器也可以帮助您将其删除。

简单来说,软件包管理器负责处理软件包(软件)。 在计算机术语中,软件包是指一组可以安装、更新或删除的文件。

软件包管理器能够确保系统所需的软件包之间不会发生冲突,并且不会意外删除。 软件包之间存在依赖关系是很常见的,这意味着一个软件包可能需要另一个软件包才能正常工作。 软件包管理器可以帮助我们避免这些潜在问题。

例如,假设我们有两个软件包:软件包 A 和软件包 B。如果软件包 A 依赖于软件包 B,则意味着软件包 B 必须先安装并运行,软件包 A 才能正常工作。例如,图像处理软件 GIMP 可能会需要系统访问 GIMP 数据包。

当前存在多种流行的软件包管理器,比如 Linux 系统常用的 DNF 和 APT。

延伸阅读:DNF 软件包管理器快速指南

Windows 系统也提供了自己的软件包管理器解决方案,即 Windows 软件包管理器(Winget)。它通过命令行操作,允许开发人员在系统中查找、升级、删除和安装软件包/应用程序。 您可以通过 Winget 的 GitHub 页面了解更多信息。

此外,还有 Chocolatey 软件包管理器,这是一个免费且开源的软件包管理器。 接下来,我们将详细了解它。

什么是 Chocolatey 软件包管理器?

Chocolatey 是一个基于命令行的 Windows 软件包管理器。 它遵循 Apache 2.0 许可,因此可以免费使用且开源。 企业用户可以选择使用 Chocolatey 的付费版本,以实现更高级的软件自动化。 它基于 NuGet 构建,NuGet 本身也是一个面向开发人员的软件包管理器。

与其他软件包管理器类似,Chocolatey 能够帮助开发人员和 IT 专业人员高效地管理计算机上的软件。 它使用软件包来确保软件的正常运行,这包括更新、删除和安装新软件包等操作。 此外,Chocolatey 还会自动执行所有这些操作,从而显著提高效率。

Chocolatey 的用途和用例

开发人员和 IT 管理人员主要在 IT 环境中使用 Chocolatey 来管理一台或多台计算机上的软件。 Chocolatey 适用于 DevOps 流程,因为它能够自动执行重复性任务,例如部署二进制文件、脚本、安装程序、应用程序和软件包。

Chocolatey 的优势在于它能够自动化安装软件的流程,从而无需手动操作,比如手动查找、下载和安装软件包。 使用 Chocolatey,您只需要运行一个简单的命令即可完成所有操作,包括安装软件所需的任何依赖项。

对于依赖复杂 Windows 环境的团队来说,这是一个特别有用的工具。 它通过处理手动任务来加快软件开发速度。 Choco 还提供了出色的集成选项,包括对基础设施自动化工具的支持。

如何在 Windows 上安装 Chocolatey

安装 Chocolatey 的过程非常简单。 您只需要按照以下步骤进行操作:

第 1 步:检查要求

在安装 Chocolatey 之前,请务必确保您的系统满足以下要求:

  • Windows 客户端或服务器操作系统。
  • .NET Framework 4.8 或更高版本。
  • PowerShell v2 或更高版本。

步骤 2:运行 PowerShell 并设置 Get-ExecutionPolicy

首先,您需要在 Windows 计算机上打开 PowerShell。 请确保您以管理员身份运行它。

接下来,您需要确保 Get-ExecutionPolicy 未受到限制。 如果受到限制,将会阻碍 Choco 的安装。 您可以使用“绕过”选项来跳过此限制。 然而,如果您的组织要求运行来自 Internet 的任何脚本,最好使用 AllSigned 来提高安全性。

运行以下任一命令,根据您的需求设置 Get-ExecutionPolicy。

$ Set-ExecutionPolicy AllSigned

$ Set-ExecutionPolicy Bypass -Scope Process

步骤 3:运行命令安装 Chocolatey

设置 ExecutionPolicy 后,您可以在 shell 中运行以下命令以开始 Choco 安装。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

第四步:确认是否安装成功

如果上述命令执行成功且没有出现任何错误,则表明 Chocolatey 已正确安装。

您可以通过运行以下命令来确认:

$ choco

$ choco -?

至此,Chocolatey 安装完毕。 您也可以使用 CMD shell 来进行安装。 您需要将以下命令复制并粘贴到 CMD 管理 shell 中。

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

以上命令的输出结果如下所示:

Getting latest version of the Chocolatey package for download.                     Not using proxy.

Getting Chocolatey from https://community.chocolatey.org/api/v2/package/chocolatey/2.2.2.

Downloading https://community.chocolatey.org/api/v2/package/chocolatey/2.2.2 to C:\Users\nitis\AppData\Local\Temp\chocolatey\chocoInstall\chocolatey.zip

Not using proxy.

Extracting C:\Users\nitis\AppData\Local\Temp\chocolatey\chocoInstall\chocolatey.zip to C:\Users\nitis\AppData\Local\Temp\chocolatey\chocoInstall

Installing Chocolatey on the local machine

Creating ChocolateyInstall as an environment variable (targeting 'Machine')

  Setting ChocolateyInstall to 'C:\ProgramData\chocolatey'

WARNING: It's very likely you will need to close and reopen your shell

  before you can use choco.

Restricting write permissions to Administrators

We are setting up the Chocolatey package repository.

The packages themselves go to 'C:\ProgramData\chocolatey\lib'

  (i.e. C:\ProgramData\chocolatey\lib\yourPackageName).

A shim file for the command line goes to 'C:\ProgramData\chocolatey\bin'

  and points to an executable in 'C:\ProgramData\chocolatey\lib\yourPackageName'.

Creating Chocolatey folders if they do not already exist.

chocolatey.nupkg file not installed in lib.

 Attempting to locate it from bootstrapper.

PATH environment variable does not have C:\ProgramData\chocolatey\bin in it. Adding...

WARNING: Not setting tab completion: Profile file does not exist at

'C:\Users\nitis\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'.

Chocolatey (choco.exe) is now ready.

You can call choco from anywhere, command line or powershell by typing choco.

Run choco /? for a list of functions.

You may need to shut down and restart powershell and/or consoles

 first prior to using choco.

Ensuring Chocolatey commands are on the path

Ensuring chocolatey.nupkg is in the lib folder

使用 Chocolatey

Chocolatey 易于使用。 由于它是一个命令行解决方案,因此需要使用命令。

例如,如果要安装 notepadplusplus,可以运行以下命令。

$ choco install notepadplusplus

同样,您也可以安装其他软件/软件包,例如 GitHub。

如果您不确定某个软件包是否可用,可以使用搜索选项进行查找。

$ choco search gitY

此外,您还可以使用单个命令安装多个应用程序。

$ choco install git gimp notepadplusplus

如果您想卸载应用程序,请使用 uninstall 选项运行。

$ choco uninstall gimp

如果需要安装更多应用程序,可以将它们编译到一个 XML 文件中,然后将其传递给命令。

$ choco install packages.config -y

packages.config 文件包含了所有需要安装的软件包列表。

您还可以使用以下命令更新所有现有的软件包。

全部 $ 杯

其他有用的 Choco 命令包括:

  • $ choco list → 列出本地或远程软件包
  • $ choco info [package_name] → 获取软件包信息
  • $ choco upgrade [package_name] → 升级软件包
  • $ choco outdated → 获取过时的软件包并列出它们

卸载 Chocolatey

您可以通过删除 C:\ProgramData\chocolatey 文件夹或其安装文件夹来卸载 Chocolatey。

如果您不确定 Chocolatey 的安装文件夹,请运行以下命令:

$ env:ChocolateyInstall

但在卸载 Chocolatey 之前,请务必备份其中的 bin 和 lib 子文件夹,因为它们包含了您使用它安装的所有软件包。 您还需要删除或修改以下环境变量:

  • ChocolateyInstall
  • ChocolateyToolsLocation
  • ChocolateyLastPathUpdate
  • Path

Chocolatey 与 Windows 软件包管理器 Winget

Chocolatey 并非唯一的软件包管理器。 您还可以选择使用 Winget 或 OneGet(PowerShell 5.0 软件包管理器接口)。 那么,您应该选择哪个呢? 让我们来比较一下 Chocolatey 和 Winget。

#1. 功能

在功能方面,Chocolatey 提供了更丰富的功能。 您可以从其开源版本开始使用,该版本允许个人从 Windows 环境中管理软件包。 如果您需要更简化的高级体验,您可以选择付费的专业版,该版本提供了额外的功能,包括更高的可靠性,改进的运行时恶意软件防护等。

此外,Chocolatey 还为企业提供企业版,以便企业可以改进其 DevOps 工作流程,并自动执行 Windows 软件生命周期。

另一方面,Winget 提供了一个简单的软件包管理解决方案。 它使用 YAML 清单来创建、上传和删除软件包。

#2. 成本

两者都为消费者提供了免费的开源版本。 但是,只有 Chocolatey 为有需要的用户提供了付费选项。

#3. 易用性

由于两者都是命令行工具,因此易用性是一个主观概念。 然而,安装 Winget 会更容易,因为它可以通过 Microsoft Store 获取。 但 Chocolatey 需要您运行命令进行安装。 除此之外,您还需要处理执行策略。

#4. 存储库

Choco 管理着一个拥有 9500 个托管软件包的存储库。 您几乎可以在那里找到所需的一切。 另一方面,Winget 依赖其他来源来下载和分发软件包。

在社区方面,Chocolatey 因其悠久的历史而表现出色。 它已存在超过十年,因此拥有强大的社区支持。 Winget 则没有类似的社区。

总结

Chocolatey 是一款非常方便的软件包管理工具。 它很受欢迎,文档齐全且功能强大。 此外,它是开源的,因此任何人都可以免费使用。

Choco 还为公司团队提供了付费选项,并添加了关键功能,这使得它非常适合处理复杂的 Windows 项目。

接下来,了解如何在 Windows 和 MacOS 上安装 Node 版本管理器 (NVM)。