1. 什么是Chocolatey
Chocolatey 是一种软件管理解决方案,不同于您在 Windows 上体验过的任何解决方案。 可以这样想 - 您使用一个小 PowerShell 创建一个软件部署包,然后您可以将它部署到任何拥有 Windows 的地方(例如 Puppet、SCCM、Altiris、Connectwise Automate 等。
2. 为什么要安装chocolatey?
2.1. chocolatey需要解决的问题
我们经常听说管理 Windows 软件可能是一种令人沮丧或耗时的体验。 此外,各团队可能有一些自动化安装windows软件的方法方法,但是互相之间存在很多差异。 即使较新的自动化运维 (DevOps) 和配置管理工具仍然不能以简单且可维护的方式完全解决 Windows 软件管理问题。
各种windows软件管理方法共同的挑战包括:
时间: 人工安装软件是耗时和低效地.
复杂性: 在当今的IT环境下, 传统的安装工具显得太复杂低效
成本: 在没有标准包管理的情况下部署和管理 Windows 软件会导致额外的开销.
为了解决以上问题, chocolatey应运而生, 将成为安装包管理软件中最好的选择.
3. 为什么选择chocolatey
3.1. 简化复杂流程,节省时间和精力
虽然市面上有许多不同的安装程序格式和多种部署 Windows 软件的方法。 在 Windows 上部署没有包管理的软件可能既复杂又耗时。
系统工程师可能会花费数小时手动部署和配置 Windows 软件。 传统工具不是为现代自动化和 DevOps 方法构建的,这可能会使在整个环境中实现一致性和可观测性变得困难。
Chocolatey 通过简单、可重复和自动化的方法简化了这一过程,使用通用包装格式来管理 Windows 软件的所有方面。 无论您是管理本机安装程序、zip、脚本、运行时二进制文件还是内部开发的应用程序,Chocolatey 都将它们视为一等公民,并为您提供一致、统一的软件管理方法!
3.2. 一次编写,随处部署,随心所欲,然后简单地跟踪和管理
Chocolatey 的目标是在 Windows 操作系统上实现从安装到升级和卸载的整个软件生命周期的自动化。 我们的目标是通过一个统一的界面简化复杂的流程,让您可以控制混乱。
Chocolatey for Business 允许组织采用 DevOps 方法来轻松管理您的 Windows 环境,更快、更可靠地向服务器和最终用户交付应用程序。 通过利用 PowerShell 提供自动化的软件管理指令,Chocolatey 的内置函数将复杂的任务变成了单行函数调用。
4. Chocolatey特性
4.1. Deploy Anywhere You Have Windows/Cloud Ready
能部署到任何有windows的地方(除了Nano),包括 Server.Core 和 Windows Docker 容器。 Windows 7+/Windows 2003+。 需要 PowerShell v2+(不包括 PowerShell 6)和 Microsoft .NET Framework 4.x。 您可以在本地部署到 Azure、AWS 或您可能正在查看的任何云提供商。
4.2. Deploy with Everything (能和任何自动部署工具整合)
任何可以管理节点或进行远程部署的东西都可以通过命令、批处理或脚本来使用 Chocolatey。 Ansible、Chef、PowerShell DSC、Puppet 或 Salt 等完整配置管理解决方案通常具有提供程序/模块,允许您使用它们的语言来管理 Chocolatey 安装/配置和软件。
4.3. All Software Is a First Class Citizen
您知道对于大多数软件安装器来说,他们只管理已经安装的软件的添加和删除, 而 Chocolatey把这一切都考虑进去了,因为 Windows 软件不仅仅是安装程序,而且要考虑软件的安全。 因此,只需一个简单的解决方案即可部署您的安装程序、脚本、zip、运行时二进制文件以及内部软件。 然后依靠报告和软件库信息来了解您正在管理的软件的所有方面。
5. Chocolatey 安装前提条件
5.1. 安装要求
Chocolatey 对内存的要求比较低. 对系统的要求:
Windows 7以上或者Windows 2003+ (Server Core 也包括在内, 但是不包括 Windows Nano Server);
需要已经安装Windows PowerShell v2+ (PowerShell Core aka PowerShell 6 暂且不被支持);
.NET Framework 4.x以上;
空间要求
Chocolatey CLI 对默认安装大概为 15 MB左右。
Chocolatey GUI 在默认安装中占用另外 50-100 MB 的空间。
Chocolatey Agent 大约需要 10 MB。
5.2. Chocolatey组成
Chocolatey CLI 又名 choco(或 choco.exe)是一个客户端(不是 Windows 服务),它提供 Chocolatey 的核心和本地安装包的安装存储。 这点很重要,因为 Chocolatey 管理包,而不是直接管理程序和功能 - 程序和功能仅限于具有“安装程序”的软件,而 Chocolatey 将 Windows 软件的所有方面都视为一等公民(zip、脚本、二进制文件、安装程序),因此 它需要分别跟踪和管理这些东西。
Chocolatey GUI 是一个在用户运行时运行的应用程序(也不是 Windows 服务)。
Chocolatey Agent(又名 Chocolatey-agent)是 Chocolatey for Business 中提供的一项 Windows 服务。 它用于自助安装和 Chocolatey 中央管理。
6. 安装Chocolatey
安装Chocolatey有多种方法, 可以从以下方法中任选一种进行安装:
方法一:以管理员身份打开cmd.exe(很重要),执行以下代码
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
方法二:以管理员身份打开powershell.exe,执行以下代码
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'))
方法三:直接打开https://chocolatey.org/install.ps1,复制内容到本地新建 install.psl 文件,执行安装。
在有的时候,因为电脑安装防火墙的原因,可能会导致前两个方法出现问题,但是方法三不存在此问题,最好用 powershell.exe 来执行 install.psl 脚本,可以看到安装的完整过程。
方法四: 以管理员身份打开Powershell,然后输入以下命令:
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
说明iex(Invoke-Expression的别名):用来把字符串当作命令执行。
方法五: Chocolatey的作者还专门为安装脚本创建了一个短网址。使用短网址安装更加简洁.
iwr https://cin.st | iex
说明iwr(Invoke-WebRequest的别名): 用于从 Internet 上的网页获取内容。
7. Chocolatey 的使用
-
查看帮助
# 查看Chocolatey自身的帮助信息 choco -? # 查看Chocolatey子命令的帮助信息 # 例如: choco search -? choco command -?
-
安装软件
choco install something
-
安装指定版本
choco install something --version x.y.z
-
查找软件
choco search cntlm
-
查找软件, 精确匹配软件名
choco search -e cntlm
-
查找所有可用版本
choco search --all -e cntlm
或者到官方网站上去搜索可用版本
-
搜索软件是否存在,包名是什么。
查看软件详细信息。
choco info cntlm
-
列出Windows系统已安装的软件
choco list -lo
-
choco配置列表
choco config list
-
升级软件
choco upgrade git
-
卸载软件
choco uninstall git
7.1. 创建快捷方式
通过Chocolatey安装的程序, 通常在windows搜索界面是不会显示的, 查找起来不方便, 此时需要到软件安装目录创建一个桌面快捷方式.
此时可以进入ChocolateyInstall指定的目录, 进入安装包所在目录, 右击可执行文件创建桌面快捷方式.
# 查找安装包位置
echo %ChocolateyInstall%
7.2. 安装chocolatey图形化管理工具
# 安装之后输入 chocolateygui 打开图形界面安装你想安装的软件即可
choco install chocolateygui
7.3. 配置统一环境
更改本地仓库
方法一:cmd.exe管理员模式下执行以下指令
setx ChocolateyInstall D:\Chocolatey /M
方法二:powershell.exe管理员模式下执行以下指令
& setx.exe ChocolateyInstall D:\Chocolatey /M
设定成功提示:
- search - searches remote or local packages (alias for list)
- list - lists remote or local packages
- find - searches remote or local packages (alias for search)
- 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 nuspec, scripts, and other Chocolatey package resources into a nupkg file
- push - pushes a compiled nupkg to a source
- new - generates files necessary for a chocolatey package from a template
- source - view and configure default sources
- sources - view and configure default sources (alias for source)
- 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 - re-installs Chocolatey base files
-
version - [DEPRECATED] will be removed in v1 - use
choco outdated
orcup <pkg|all> -whatif
instead - update - [DEPRECATED] RESERVED for future use (you are looking for upgrade, these are not the droids you are looking for)
- support - provides support information
- help - displays top level help information for choco
- export - exports list of currently installed packages
- download - downloads packages - optionally internalizing all remote resources
- synchronize - synchronizes against system installed software - generates missing packages
- sync - synchronizes against system installed software - generates missing packages
- optimize - optimizes installation, reducing space usage
8. 后记
本文原文位于鹏叔的技术博客空间 - chocolatey安装和使用, 获取最近更新, 请访问原文.