尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Windows包管理器Chocolatey安装全攻略与避坑指南

Windows包管理器Chocolatey安装全攻略与避坑指南 很多人第一次接触Windows上的命令行安装工具多半是被各种软件官网的下载按钮绕晕之后才想到去找一个统一的解决方式。Chocolatey就是这么个东西一个Windows平台上的包管理器用一行命令就能装软件、更新软件、卸载软件省去手动点点点的流程。这篇文章不绕弯子直接讲怎么在自己电脑上把它装好以及我在实际安装和使用过程中踩过的一些坑希望能帮你少走几步冤枉路。先说清楚这篇文章适合谁。如果你是那种每天要装好几次开发工具的人比如Git、Node.js、Python、VS Code这类或者你要一次性给多台Windows机器配同样的环境那Chocolatey基本是省时间的利器。就算你是刚接触命令行的新手只要肯照着下面的步骤操作一般十分钟内就能跑通。我会把安装的每个步骤都拆开讲遇到报错怎么处理也一并写清楚保证你拿着文章就能自己动手装。1. 装之前先搞清楚这几件事1.1 Windows下的软件安装到底乱在哪在Windows上装软件最让人头疼的就是安装途径五花八门。有些软件提供exe安装包你得去官网下载然后一路点“下一步”有些走Microsoft Store更新方式又和exe完全不同还有些绿色软件直接解压即用连卸载入口都没有。这种碎片化的管理方式导致你想统一更新系统里的软件时只能一个个打开各自的升级入口时间成本非常高。Chocolatey就是冲着解决这个问题来的。它把软件包的下载、安装、配置、更新、卸载全部收敛到命令行里本质上类似Linux上的apt或者yum只不过服务对象是Windows。你用一条命令装完的东西它会自动帮你下载对应安装包、静默执行安装流程、配置好环境变量装完之后想卸载也是一条命令的事相当干净。1.2 Chocolatey和普通安装到底有什么区别举一个生活化的例子。你手动装软件有点像每次出门都从抽屉里翻钥匙运气好一下就找到了运气不好得翻半天。Chocolatey则像在门口装了个钥匙柜所有钥匙都贴好标签挂在固定位置你要哪把拿哪把还不用担心哪把钥匙放错地方。在技术层面区别主要体现在这么几点普通exe安装通常需要手动选择安装目录、勾选组件Chocolatey则采用静默安装参数装完直接用不需要人为干预。普通安装完成后软件的更新、卸载各自为政Chocolatey则把管理入口统一到了一套命令行体系里软件列表、版本状态一目了然。普通安装容易漏配环境变量Chocolatey在安装时会自动把可执行文件路径加入系统PATH省去你自己去系统设置里添加的麻烦。当然Chocolatey并不是万能的。它本质上是通过脚本调用软件官方的安装包所以有些特别冷门或者有特殊交互流程的软件它可能帮不上忙。但对绝大多数常用工具来说它的表现足够稳定。1.3 安装前你要做的两个检查在正式执行安装命令之前有两点需要先确认一下。第一当前Windows账号得有管理员权限或者至少知道管理员密码因为Chocolatey默认会安装到系统目录并且修改环境变量没有管理员权限是跑不通的。第二系统建议保持更新尤其PowerShell版本不能太老Windows 10和Windows 11基本都是直接支持的状态如果还在用Windows 7那你得提前单独升级PowerShell到5.1以上。提示如果你用的是公司统一配发的电脑建议先确认管理员权限是否被域策略限制否则安装到一半被拦截处理起来反而麻烦。2. 正式安装Chocolatey步骤全解2.1 第一步以管理员身份打开PowerShell这一步很多教程一句话带过但实际操作中栽跟头的人不在少数。直接在开始菜单搜“PowerShell”会看到Windows PowerShell的条目这时候不能直接回车打开要右键选择“以管理员身份运行”。如果你用的是Windows Terminal也要通过管理员方式启动Windows Terminal再在里面切到PowerShell窗口。为什么要强调管理员身份因为Chocolatey安装脚本要往C:\ProgramData\chocolatey这个目录写文件同时修改系统环境变量。普通权限下这些操作都会被系统拒绝轻则安装失败重则中途报错留下一堆残留文件。所以别嫌麻烦先把这个前置条件落实。打开之后可以在命令行里执行一下whoami确认当前身份。如果显示的用户名里有“管理员”字样或者属于Administrators组那基本就没问题了。2.2 第二步允许脚本执行PowerShell默认对脚本执行有严格的策略限制Chocolatey的安装脚本需要用到Set-ExecutionPolicy这类命令所以安装前要把策略调成允许。这一步的目标是把当前用户的执行策略设置为RemoteSigned意思是本地创建的脚本可以运行来自网络的脚本必须经过签名验证。在管理员PowerShell窗口里依次执行以下命令Get-ExecutionPolicy Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned执行第二行的时候系统会弹出一个确认提示输入Y或A回车即可。Y表示仅对当前这一次修改生效A表示对所有修改生效实际效果没区别直接输入A就行。如果英文界面显示Execution Policy Change的提示同样输入Y或A确认。个别情况下公司安全策略会强制锁定ExecutionPolicy执行Set-ExecutionPolicy时会报错。这时候别硬改系统级策略更推荐的方式是只针对当前PowerShell会话放开限制。在启动PowerShell时额外加一个参数powershell -ExecutionPolicy Bypass -File install.ps1这种做法不影响系统全局配置适合临时安装的场景。装好Chocolatey之后你把PowerShell关闭重新打开执行策略又恢复原样对日常使用没有影响。2.3 第三步执行官方安装脚本确认执行策略没问题之后就可以正式安装Chocolatey了。官方推荐的安装命令是一段PowerShell脚本它会从Chocolatey官方仓库拉取安装包并自动完成部署。复制下面这段命令粘贴到管理员PowerShell窗口执行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))这行命令里包含了好几个动作。Set-ExecutionPolicy Bypass -Scope Process -Force是临时绕过当前会话的执行策略SecurityProtocol设置是为了兼容TLS 1.2避免某些老旧系统因为安全协议版本过低导致下载失败最后的iex是Invoke-Expression的缩写意思是下载安装脚本内容并直接在当前会话执行。执行过程中命令行会滚动输出一堆日志。如果你看到类似Chocolatey v2.x.x installed的字样恭喜你安装成功了。如果没有立刻出错但也没看到成功信息可以继续往下看验证步骤。2.4 第四步验证安装是否成功安装完成后强烈建议先验证一下而不是急着去装软件。关闭当前PowerShell窗口重新打开一个新的PowerShell窗口这次不用管理员权限也行输入choco -v正常情况下会输出类似2.3.0的版本号。如果提示choco不是内部或外部命令多半是PATH环境变量没有刷新。这时候把PowerShell关闭重开或者注销重新登录一下一般就能解决。如果重开之后还不行需要手动检查C:\ProgramData\chocolatey\bin是否存在于系统PATH里。还有一个验证方式直接执行choco --version效果和choco -v一样哪个顺手用哪个。看到版本号说明Chocolatey已经在系统里正常工作了。3. 第一次用Chocolatey装软件完整走一遍3.1 搜索软件包确认你要装的东西是否存在装完Chocolatey的第一件事当然是拿来装个软件试试水。但在安装之前最好先搜一下软件对应的包名。Chocolatey的软件包名和软件官方名称可能不太一样直接猜往往容易出错。搜索命令长这样choco search git这个命令会在Chocolatey官方仓库里搜索名称包含“git”的软件包返回结果会列出包名、版本号、发布时间等信息。大多数情况下你想装的流行工具都在仓库里比如git、nodejs、python、vscode、7zip、googlechrome等等。如果你已经确定了包名也可以跳过搜索直接安装。不过我的习惯是先搜一下顺便看看这个包是否在维护、是否被标记为可信多一份确认多一份安心。搜索结果里有些包名带-portable后缀这类是便携版安装后不需要管理员权限但更新策略上略有差异日常使用优先选不带后缀的正式包比较省心。3.2 安装软件包一行命令搞定确定包名后在管理员PowerShell窗口执行安装命令choco install git -y参数-y的意思是自动确认不加上这个参数的话Chocolatey会在安装过程中询问你是否要运行安装脚本输入Y回车也能继续。加-y纯粹是省事适合脚本化执行。如果你要一次装多个软件可以写在同一条命令里choco install git nodejs python vscode 7zip -yChocolatey会按顺序逐个安装不用担心相互依赖的问题。命令跑的过程中你会看到每个软件包都显示Downloading和Installing状态装完后会有一行摘要告诉你哪些包安装成功、耗时多少。这里补充一个细节用Chocolatey安装完成后你最好再单独验证一下软件的可用性。比如装完Git就执行git --version装完Node.js就执行node -v和npm -v。因为Chocolatey装完不代表环境变量一定在你当前窗口里生效。某些软件安装完成后需要关闭当前命令行窗口再重新打开新加的PATH才会被加载进来。3.3 更新、卸载、查看已装列表日常使用中你还会频繁用到另外三个命令这里一次性列出来。更新某个指定的软件choco upgrade git更新所有已装软件choco upgrade all -y卸载软件choco uninstall git -y查看当前机器上通过Chocolatey安装的软件列表choco list这个choco list显示的是用Chocolatey装过的包不是系统里全部软件。如果你装某个软件之前系统里已经有一个版本了那Chocolatey就会有两个不同的记录管理起来需要稍微留意一下。3.4 常用命令速查表为了方便随时翻阅我整理了一张常用命令的速查表操作命令说明搜索软件包choco search 关键字在官方仓库中搜索可用包安装软件choco install 包名 -y安装指定包-y自动确认升级软件choco upgrade 包名升级指定包升级全部软件choco upgrade all -y批量升级所有已装包卸载软件choco uninstall 包名 -y卸载指定包查看已装列表choco list列出本机Chocolatey安装的包查看包详情choco info 包名查看包版本、依赖等信息查看过时包choco outdated列出有可用更新的包把这些命令记下来日常管理软件基本就不再需要去官网找下载入口了。当然choco info这个命令可能平时用得不多但当你怀疑某个包版本滞后或者不确定它依赖什么时查一下还是很有用的。4. 避坑指南安装和使用中的高频问题4.1 执行策略报错这次不是权限问题很多人第一次执行Chocolatey安装脚本会遇到类似这样的报错无法加载文件 C:\...\install.ps1因为在此系统上禁止运行脚本这个报错一般有三个原因。第一个是之前步骤里提到的ExecutionPolicy没有设置成RemoteSigned解决方式就是回到上文第二步执行一遍设置命令。第二个是当前PowerShell窗口没有用管理员身份打开就算执行策略允许文件系统层面的写入权限也会导致安装半途而废。第三个是系统本身对远程脚本更加敏感某些安全软件会拦截PowerShell执行下载来的脚本这时候需要暂时关闭相关安全拦截安装完再打开。这三个原因其实都可以提前规避核心原则就两条用管理员PowerShell把ExecutionPolicy改成RemoteSigned。4.2 执行了安装命令但提示找不到choco安装过程看似顺利脚本也跑完了但新开的命令行里输入choco却提示找不到。这个问题九成以上是PATH环境变量没刷新的原因。Windows的PATH是在进程启动时加载的你正在运行的PowerShell窗口读不到安装时新写入的PATH值解决办法就是关闭当前窗口重新打开一个新的。如果重开几次还是不行那就手动检查环境变量。右键“此电脑”选择“属性”进入“高级系统设置”打开“环境变量”确认系统变量Path里有没有C:\ProgramData\chocolatey\bin这一项。没有就手工添加有就说明路径没问题那再检查一下C:\ProgramData\chocolatey\bin\choco.exe文件是否真实存在。如果文件不存在多半是安装脚本没跑完整建议重新执行一遍安装命令。4.3 安装软件时卡住或下载超时Chocolatey安装软件的过程本质上是调用软件官方地址或Chocolatey仓库的资源下载。国内执行时偶尔会遇到下载超时的问题因为某些软件包默认下载地址访问速度不稳定。遇到这种情况最直接的解决办法是把Chocolatey的下载地址换成镜像源。配置镜像源的操作不复杂。Chocolatey的配置项里有一个source参数可以通过命令查看当前源choco source list默认配置会显示https://community.chocolatey.org/api/v2/。如果你想添加清华大学的镜像源如果有的话可以执行choco source add -n 清华源 -s https://mirrors.tuna.tsinghua.edu.cn/chocolatey/ --priority1实际使用中我更推荐保留官方源但把安装超时时间调大或者错峰安装避开网络高峰。镜像源毕竟在更新速度上会滞后一些某些最新版本的软件包可能暂时拉不到。4.4 命令行窗口闪退脚本还没跑完就没了你可能会遇到一种诡异的情况PowerShell窗口刚执行安装命令窗口瞬间就关了根本来不及看报错。这种情况多半不是Chocolatey本身的问题而是PowerShell窗口的启动参数或者系统配置异常。常见诱因包括系统环境变量里存在无法解析的路径、PowerShell配置文件里写了不兼容的启动脚本、安全软件干扰了命令行进程。排查方式比较实用的一招是先打开cmd窗口然后在cmd里输入powershell再在PowerShell进程内执行choco -v。如果这样能正常显示说明问题出在PowerShell窗口启动时的自动化配置上。如果连PowerShell进程都起不来那就要检查系统PATH看看是不是有某个变量指向了不存在的路径把命令行启动给拖崩了。注意排查命令行闪退问题时优先看系统事件查看器里的应用程序日志那里面会记录崩溃模块的具体名称比在命令行里瞎试更高效。4.5 装完软件但运行不了命令提示不是内部或外部命令这是安装成功后最容易遇到的问题之一。Chocolatey明明显示安装成功但你在命令行里执行软件命令却说找不到。这里有个很常见的坑Windows的PATH环境变量有顺序问题如果系统里已经有一个旧版本的软件路径排在Chocolatey安装的新版本前面命令行会优先执行旧版本的二进制文件导致你感觉“没装上”。解决方式分两种。一种是把Chocolatey的C:\ProgramData\chocolatey\bin路径往PATH列表的顶部调整让它的优先级高于其他路径另一种是干脆把其他同类软件的旧路径从PATH里删掉保留一个干净的环境。我个人更推荐后者因为旧路径残留多了环境变量会越来越臃肿后续排查问题也更费劲。4.6 安装某些软件包时出现“requires a license”提示Chocolatey仓库的软件包分两类一类是开源免费软件一类是需要商业授权的商业软件。像choco install officebusinesspro这类商业软件的安装包执行时会提示你选择版本和提供授权信息因为它们并不是真正的“免费安装”而是帮你下载官方安装器然后走官方激活流程。遇到这种情况建议先去软件官网确认是否有授权。不要试图绕过授权提示因为商业软件的管理规范和版权保护是有明确规定的Chocolatey只是提供了统一安装入口并没有授权你做任何规避操作。老老实实提供合法的授权信息软件才能正常使用这是基本原则。4.7 安装中途中断再次安装提示已存在安装过程因为网络问题或者手动中断可能导致软件包处于“半装”状态。再次执行安装时Chocolatey可能会提示软件已经安装但实际上软件并不存在或文件缺失。这种状态最烦人解决思路是先卸载再重装choco uninstall 包名 -y --force choco install 包名 -y--force参数会强制卸载即使Chocolatey没有找到完整的卸载记录也能执行。如果卸载时提示找不到包就直接手动删除软件安装目录然后清理一下C:\ProgramData\chocolatey\lib\包名下的残留文件夹再重新安装。4.8 常见问题速查表问题现象常见原因排查方向安装脚本被禁止运行ExecutionPolicy限制设置RemoteSigned或Bypass找不到choco命令PATH未刷新重启PowerShell检查PATH软件下载超时网络原因更换镜像源或错峰安装命令行闪退环境变量异常查看事件日志检查PATH装完软件不能运行路径优先级冲突调整PATH顺序或清理旧路径半装状态安装中断强制卸载后重装5. 装完Chocolatey之后还能怎么用5.1 批量部署环境一条命令装完常用软件Chocolatey最实用的场景其实是新电脑或者新系统重装之后的批量部署。以前我每次重装完Windows都要去各种软件官网下载安装包来回折腾一两个小时。现在只需要提前整理一份清单choco install -y git nodejs-lts python3 vscode googlechrome notepadplusplus ​7zip powertoys everything terminal这条命令会把从浏览器到文本编辑器到开发运行环境的常用工具全部装好剩下要做的就是等它跑完。实测下来比起逐个手动装这种批量方式至少省去一半时间还不用记安装向导的各种选项。如果你经常需要给多台机器配环境还可以把这份软件清单写成一个PowerShell脚本扔到U盘或者云盘里换机器的时候直接执行脚本一套流程走完效率提升非常明显。5.2 结合自动化工具把环境配置脚本化Chocolatey和自动化脚本是天然搭档。比如我习惯把软件安装和系统配置写进同一个脚本开头先执行Chocolatey安装然后用Chocolatey装完所有软件再调用其他配置命令设置系统参数。这样一台新电脑从开机到开发环境就绪基本可以做到无人值守。实际执行的时候建议把脚本分成几个函数模块一个函数负责安装Chocolatey一个函数负责批量安装软件一个函数负责验证安装结果。每个函数里都加上日志输出和错误判断这样中途出问题的时候可以快速定位到具体是哪一步失败了不用整段脚本从头跑。5.3 定期更新已装软件减少安全隐患软件更新的重要性不用多说老版本软件的安全漏洞是众所周知的问题。通过Chocolatey你只需要定期执行choco upgrade all -y就能把本机所有通过Chocolatey安装的软件一次性升级到最新版。这个命令特别适合放在某个固定的维护时间执行比如每周五下班前跑一次让电脑始终保持相对新鲜的状态。当然upgrade all也有一个需要注意的地方某些软件升级可能会导致配置文件不兼容或版本回退。所以对于生产环境或者工作主力的电脑我建议不要盲目执行全量升级而是先用choco outdated看一下有哪些软件可以更新然后选择性地升级那些你确实需要的新版本软件。5.4 配合国内环境怎么做更稳前面提到过镜像源的问题这里再展开说一下。Chocolatey官方源在国内访问的稳定性取决于网络状况有时候下载速度很慢有时候连接超时。如果你发现官方源实在不给力可以按下面的方式添加一个国内源作为备用choco source add -n 备用源 -s https://mirrors.example.com/chocolatey/ --priority2--priority数字越小优先级越高。官方源保留0优先级备用源设置成2这样Chocolatey会优先访问官方源万一官源挂掉还能自动落到备用源不至于一硬到底。不过说实话配置镜像源并不是一劳永逸的办法。镜像源同步软件包的时效性通常比官方源慢一些某些刚发布的最新版本可能拉不到。所以我自己的策略是默认走官方源下载超时就临时切换镜像用完再切回来。平时保持官方源即可没必要长期挂镜像。5.5 备份和恢复已装软件列表换新电脑的时候除了备份文件还要记得把软件列表备份走。Chocolatey支持导出和导入包列表新机器上执行以下命令快速恢复先导出旧电脑的软件清单choco list -r packages.txt新电脑上安装完Chocolatey后批量安装清单里的软件Get-Content packages.txt | ForEach-Object { choco install $_ -y }这种方式特别适合重装场景。导出的packages.txt就是单纯的文本文件每行一个包名你还可以手动删掉不需要的包只安装真正要用的软件灵活度很高。6. 一些实际操作的小心得安装和使用Chocolatey这么长时间有几个体会值得说一说。第一个心得是管理员权限这件事真的别嫌烦。很多人第一次装失败回过头看一半以上都是因为没有用管理员PowerShell执行命令。Chocolatey要改系统目录、改环境变量普通权限下它一步都走不通。所以安装时老老实实右键管理员身份运行后面所有步骤才会顺畅。第二个心得执行choco upgrade all -y之前最好先看一眼choco outdated的输出。有些软件升级策略比较激进新版本可能和你当前的工作环境存在兼容问题。保持前进版本未必是好事尤其工作主力机稳定优先。第三个心得Chocolatey装完软件之后不要完全丢开软件自带的配置工具。Chocolatey负责的是“装”这个动作但软件的个性化设置比如编辑器主题、终端配色、开发环境路径这些还是得你自己去配置。它帮你省掉的是下载和安装的时间不是后续使用的学习成本。第四个心得如果你经常用PowerShell做自动化建议给自己维护一个常用软件包的清单文件放在云盘或者Git仓库里管理。每次新电脑装环境直接拉下来跑比临时去翻各种安装命令要省心得多。这个习惯我坚持了挺久实际带来的价值很高。最后再分享一个小技巧如果你只是临时想用某个软件测试一下不确定要不要长期使用可以考虑用Chocolatey安装便携版。便携版软件不需要写入系统目录卸载的时候也更干净非常适合做短期的工具验证。这个东西装好之后你会发现Windows的软件管理其实也可以很整齐。希望这篇避坑指南能帮你顺顺利利完成安装少踩几个我踩过的坑。
返回列表