Windows包管理器:Chocolatey、WinGet 和 Scoop(转)
文章转载自【Windows 系统缺失的包管理器:Chocolatey、WinGet 和 Scoop】
写在前面
如果你也身处 Windows 系统的生态环境之中,或许你身边也有小伙伴正在遭受这样的烦恼:他们永远搞不懂自己辛辛苦苦在搜索引擎找到并下载安装的软件到底在哪里?他们也不清楚为什么电脑中总会出现形形色色、不明不白的垃圾软件和弹窗?即便电脑已经越来越臃肿,他们也不敢碰除个人文件外的任何东西,生怕系统崩坏、数据丢失;他们没有文件管理习惯,快捷方式是他们认为软件是否安装的唯一标志,甚至认为删除即卸载;他们深知自己电脑的内部文件体系已是一团乱糟糟,所以桌面总是满满当当、密不透风。
搜索、下载、安装,这是几乎任何一个软件在「食用」之前要做的准备工作。每一步都有坑:百度搜索里的「海底捞」,点击下载那一刻的战战兢兢,等待安装时的擦亮双眼、诚惶诚恐。如果算上在使用过程中的升级和使用完之后的卸载,那麻烦就更多了。
上述或许并不夸张,正是你我之前曾经有过或正在经历的困惑。
如果这样,那么本文正是为你量身打造、包管理器也非你莫属。
「包管理器」一行命令,帮你打通软件从搜索、下载、安装到配置、升级、卸载的全流程。
什么是包管理器
包管理器又称软件包管理系统,它是在电脑中自动安装、配置、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。
——引自百度百科
如果你用过 Python ,那么对 pip 一定不陌生,Python 对所有第三方库的查找、下载、安装、卸载等都可以通过 pip 来完成的。需要哪个库,pip install
帮你安装;不需要了,pip uninstall
一键就能卸载。简单省事、方便快捷。不少编程语言均有各自对应的包管理器,比如 Nodejs 的 npm 等。
其实在操作系统上,包管理器应用就更广泛了,尤其是 Linux 系统和 macOS 系统已经相当成熟了。比如 Ubuntu 的 apt、CentOS 的 yum、 macOS 系统下的 Homebrew 等。Windows 平台的包管理器虽然仍受诟病,但目前来看已经能够完成绝大多数的工作了。
Windows 系统上常见的包管理器主要有 Chocolatey、winget 和 Scoop。
为什么要用包管理器
- 降低安装维护软件的成本
- 避免安装大量软件造成的路径污染
- 不必查找和安装软件的其他依赖项
- 避免捆绑和垃圾软件
- 彻底地卸载
仅第一条理由就足以让我拥抱它~~🥂🥂
王牌劲旅:Chocolatey
安装前提
在安装之前,必须要保证自己电脑满足以下标准:
- Windows 7+ / Windows Server 2003+
- PowerShell v2+
- .NET Framework 4+
如何查看 PowerShell 版本号?以下两种方式都可以实现。
- 在 PowerShell 里运行
$PSVersionTable.PSVersion
,Major 就是版本号。
- 在 PowerShell 里运行
host
,Version 显示的就是详细的版本号信息(更简单)。
下载、安装及检验
进入 官网下载页面(以个人版为例),管理员身份打开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://chocolatey.org/install.ps1'))
安装完成后,输入choco -?
,如果显示帮助文档,则说明安装成功。
基本使用
Chocolatey 默认安装在C:\ProgramData\chocolatey
(或者通过在 PowerShell 来输入:$env:ChocolateyInstall
查看)。使用 Chocolatey 安装软件包的默认本地位置为C:\ProgramData\chocolatey\bin
。
以下七条命令是基本涵盖了 Chocolatey 绝大多数功能,其他进阶玩法,可以详读 官方文档,或者choco <命令> -?
获取详细帮助信息。
- 帮助:
choco -?
- 搜索:
choco search <包名>
- 安装:
choco install <包名>
- 卸载:
choco uninstall <包名>
- 升级:
choco upgrade <包名>
- 显示详细信息:
choco info <包名>
- 有可用更新:
choco oudated
下面的 GI F以Pandoc
为例演示了Chocolatey 从软件的搜索、显示详情信息、下载安装到卸载的全流程。看完之后你一定更加会惊叹包管理器的简便和易用了。
软件列表备份
想想看,系统重装或迁移之后的软件安装、配置工作,有多麻烦。
choco list -l > chocolatey.txt
可以助你把 Chocolatey 安装的软件导出(导出符 >
后面指的是导出路径,可自行更改,这里表示导出到当前目录的 chocolatey.txt
文件中)。
拿到导出的软件清单,你就可以在新机上 choco install -y 软件1 软件2
。把电脑放一边运行着,该干啥干啥,两不耽误,方便快捷,好不惬意!
ChocolateyGUI:「APP Store」的极佳选择
当然并非所有用户都适合命令行界面(CLI:Command-Line Interface),如果你之前从未接触过命令行或者实在用不惯,Chocolatey 还提供了 图形用户界面(GUI:Graphical User Interface)版本。
通过choco install chocolateygui
一键安装。安装完成之后,直接chocolateygui
即可进入软件界面。详细说明可参照 ChocolateyGUI官网。
- 「用户 PC」页面显示了本机使用 Chocolatey 安装的软件列表
- 「chocolatey」页面显示了整个 Chocolatey 拥有的软件合集
ChocolateyGUI 的感觉莫名地熟悉。咦,这不就是个 APP Store 吗?不过这个 APP Store 可良心多了,没有「贴心」推荐、没有垃圾捆绑,而且软件数量惊人(截止 2021 年 4 月初,ChocolateyGUI 提供的软件包多达有 8000+ 之众!当然代价就是有点卡 ,搜索比 CLI 版本慢一些)
总体来说,ChocolateyGUI 完成度很高,软件的搜索、下载、升级、卸载等主要功能一步也没缺,十分适合不习惯命令行窗口的用户,不过完全可以作为 APP Store 来使用( 虽然界面确实不好看)。
后起之秀:WinGet
WinGet(Windows 程序包管理器:Windows Package Manager)是微软为 win10 开发的一款开源的软件包管理器,于 2020年5月的 Microsoft Build 开发者大会上 首宣。
前提:Windows 10 1709 及以上版本
当前 WinGet 支持的安装程序类型尚不多,除了EXE、MSIX、MSI三种之外,还能够在自定义配置后下载部分微软应用商店的程序。
下载、安装和验证
你可以在 Github Release下载.appxbundle
格式的文件,双击打开并运行(官方 GitHub 主页 和 Microsoft Docs 里有 WinGet 更详细配置信息)。
如果出现「此电脑不支持打开该类型文件」的提示,则可在Win + I
进入设置 -> 更新和安全 -> 开发者选项 -> 打开开发人员模式。
输入winget
可以查看简略帮助文档;输入winget -v
查看版本信息
基本使用
- 显示简略帮助文档:
winget -?
(-?可选);查看特定命令的详细帮助文档:winget [<命令>] -?
,如winget install -?
- 显示软件详细信息:
winget show <包名>
- 搜索软件:
winget search <包名>
- 安装软件:
winget install <包名>
是的,如你所见,WinGet 并没有自动开启卸载、升级等功能,这也是其在发布之后很长时间不温不火的重要原因。
但是不要着急,截止到2021/03/25发布的最新预览版v0.2.10771
,WinGet 实验性功能(需要用户自启)的数量已经增加到了八个,其中就包括uninstall
、upgrade
、list
等重要功能,以及支持安装 Microsoft Store 上的应用程序!
如果想要开启实验功能,可以在终端输入winget settiings
,打开 WinGet 配置文件settings.json
增加以下内容(其他自定义配置可参照 winget-cli settings 的官方具体说明):
"experimentalFeatures": {
"uninstall": true,
"upgrade": true,
"list": true,
"experimentalMSStore": true
},
如果想要更改 winget 显示的进度条视觉效果,可以在setting.json
里增加:
"visual": {
"progressBar": "accent"
},
# 三种样式可选:accent(默认值)、 retro、 rainbow
winget list > winget.txt
同样支持一键导出软件列表,方便备份和换机重装。
下载 Microsoft Store 软件
实验功能开启"experimentalMSStore": true
之后,winget 可以下载 MStore 的软件了(不过目前支持的并不多)。
winget source list
查看软件源列表,发现除了winget源之外,MSStore 源已经添加上了。部分商店内软件可以正常下载安装了。
卸载其他源安装的软件
winget 可以卸载winget list
显示出的所有软件。包括电脑上的大多数软件,如Windows系统自带的、手动安装的、Chocolatey 安装的部分等。唯一不足的是,卸载时会被弹出的卸载窗口打断,降低了自动化的一致性。
高度灵活可定制:Scoop
Scoop 功能更全面、可配置性更高,但由于国内下载速度较慢,所以放在了最后介绍。
下载安装
前提:
- Windows 7 SP1+ / Windows Server 2008
- PowerShell 5+(include PowerShell Core and .NET Framework 4.5)
安装
管理员身份运行PowerShell
,输入以下两条命令,待安装完成之后,输入scoop
显示帮助文档即说明安装成功。
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex
注:Scoop 支持利用aria2
进行多线程下载。所以可先scoop install aria2
下载 aria2,之后所有的下载任务就均可以调用 aria2 多线程下载来提高速度了。
更换下载位置
Scoop 默认安装位置C:\User\Your Username\scoop
,如果想要更改安装位置,比如D:\Scoop
,可以在安装之前,先运行:
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
Scoop 会自动将.\Scoop\shims
文件添加到系统环境变量,免去 Windows 用户自行添加的麻烦;同时在.\Scoop\apps
存放所有已安装的软件,便于统一管理。
基本使用
刚认识 Scoop就能看出,Scoop 支持的命令更多、可玩性更强~~
除此之外,与 Chocolatey 和 winget 类似,scoop export > scoop.txt
也可导出软件列表,便于备份与换机。
添加其他 bucket 软件库
语法:
scoop bucket add [软件源名字] [源地址]
bucket 指的是软件仓库,也是Scoop的「内核」了。未进行配置的Scoop默认只会安装main
一个bucket,由于官方的严格限制,main
里的软件列表不足以涵盖了用户对大多数软件的需求,所以「搜索失败」时常发生,因此自行安装其他 bucket就成了使用 Scoop 的必备。
bucket 分为官方维护和社区维护两种。
官方 bucket 软件仓库主要有以下几个(可通过scoop bucket known
查看):
其中最重要、也最推荐的 bucket 是extras
(包含了大量的GUI程序)。配合main
可满足多数的下载需求了。
# 官方提供
scoop bucket add extras
scoop bucket add java
除了官方 bucket 之外,GitHub 上有众多网友维护的 社区 bucket
# 社区提供
scoop bucket add echo https://github.com/echoiron/echo-scoop
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop bucket add dodorz https://github.com/dodorz/scoop
一般来说,可谷歌搜索「软件名+Scoop」就可以找到我们想要安装的软件有没有被某个bucket 软件仓库收录。添加上面推荐的三个社区bucket,配合官方的main和extras,应付日常使用已经可以游刃有余了。
换源:提高下载速度
要改善 Scoop 的下载速度,详细可以参照 Scoop | Gitee 版 的说明更换下载源。换源之后的Scoop,速度提升不是一星半点儿。
- 更换 Scoop 源
scoop config SCOOP_REPO https://gitee.com/squallliu/scoop
scoop update
- 更换 bucket 源
scoop install git
# 注意:引号里面换成自己的路径,如果是默认路径则为${Env:USERPROFILE}\scoop\buckets\<bucket_name>
git -C "D:\Scoop\buckets\main" remote set-url origin https://hub.fastgit.org/ScoopInstaller/Main.git
git -C "D:\Scoop\buckets\extras" remote set-url origin https://hub.fastgit.org/lukesampson/scoop-extras.git
结语
无需访问搜索引擎苦苦寻觅,无需次次配置系统环境变量,无需点击图形界面、一不小心安装个「全家桶」,一行命令、几个单词,就能满足大多数人对日常软件的所有需求。
那到底哪个包管理器更好呢?
软件源丰富、又能做到配置简单的 Chocolatey,支持安装MSStore程序、而又拥有强大卸载功能的winget,用户自定义配置选项灵活多样的Scoop,只能说各有各的优点,配合使用或许效果最佳。