对比win10系统上的三种软件包管理器scoop、chocolatey、winget

偏向技术
/ 0 评论 / 1,811 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年03月30日,已超过1122天没有更新,若内容或图片失效,请留言反馈。

前情

前段时间用于生产办公的机器突然出现毛病,更新Windows 10系统总是出现问题,更新驱动,既不提示成功,也不提示失败,还伴随着偶然的绿屏,迫不得已,动了重装系统的念头,既然要重装系统,那就得考虑一下代价,毕竟是用于工作,所以呢,如何以最快的方式把工作中用到的开发环境和软件安装好,就成了我主要思考的问题。想到以前安装软件基本都是从各自的官网进行下载安装,这样的话估计要花个一天时间在这上面,要是能有什么办法能够像Linux上的包管理器一样方便的话就太好了!!!

windows 10系统重置

设置 - 更新和安全 - 恢复 - 重置此电脑,有保留我的文件和删除所有内容两个选项。

  • 保留我的文件,代表如果软件安装在C盘其他目录的话,该目录不会被删除,但部分软件的安装有配置环境变量和注册表,手动配置这些的话不亚于重新安装该软件。
  • 删除所有内容,代表C盘里面的内容将全部会被删除。

软件包管理器

关于执行策略
先使用powershell查看脚本执行策略Get-ExecutionPolicy,如果返回的结果是Restricted的话,请执行修改Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Chocolatey

chocolatey 是一款在Windows上基于NuGet的包管理器工具,choco操作简单,自动安装软件,支持超过7000款软件,支持GUI图形化界面,分为开源、个人许可证、企业用户三种版本。自定义程度低,修改需要管理员权限,安装速度慢,部分使用需要挂梯子,偶尔安装失败,软件默认安装在对应软件的默认的路径下面,开源版本不支持修改默认安装目录。

安装及使用

powershell
# 安装
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# 使用
choco list 列出安装包
choco list -l 列出本地安装好的包
choco search [package] 搜索包
choco install [package] 安装包
choco uninstall [package] 卸载安装包
choco upgrade [package] 升级安装包
choco pin [package] 固定包的版本,防止被升级
更多使用方法可以通过choco -?/-help查询
1234567891011

Scoop

scoop 免费开源,下载路径放置在github上面,能否访问看缘分,安装软件速度依赖于访问github的速度,scoop自定义程度高,扩展性强,可自定义安装路径,由社区维护。

安装及使用

powershell
# 安装
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# 简短方式安装:iwr -useb get.scoop.sh | iex
# 使用
Usage: scoop <command> [<args>]
# 可用命令
alias       Manage scoop aliases # 管理指令的替身
bucket      Manage Scoop buckets # 管理软件仓库
cache       Show or clear the download cache # 查看与管理缓存
checkup     Check for potential problems # 做个体检
cleanup     Cleanup apps by removing old versions # 清理缓存与旧版本软件包
config      Get or set configuration values # 配置Scoop
create      Create a custom app manifest # 创建自定义软件包
depends     List dependencies for an app # 查看依赖
export      Exports (an importable) list of installed apps # 导出软件包列表
help        Show help for a command # 显示帮助指令
hold        Hold an app to disable updates # 禁止软件包更新
home        Opens the app homepage # 打开软件包主页
info        Display information about an app # 显示软件包信息
install     Install apps # 安装软件包的指令
list        List installed apps # 列出所有已安装软件包
prefix      Returns the path to the specified app # 查看软件包路径
reset       Reset an app to resolve conflicts # 恢复软件包版本
search      Search available apps # 搜索软件包
status      Show status and check for new app versions # 查看软件包更新状态
unhold      Unhold an app to enable updates # 启动软件包更新
uninstall   Uninstall an app # 卸载软件包的指令
update      Update apps, or Scoop itself # 更新软件包
virustotal  Look for app hash on virustotal.com # 查看哈希值
which       Locate a shim/executable (similar to 'which' on Linux) # 查看可执行程序路径
12345678910111213141516171819202122232425262728293031

WinGet

版本2004已经内置winget命令,winget是微软官方出品,目前还在preview阶段,且 支持的最低版本是 Windows 1709,安装速度取决于访问github的速度,且暂时无法通过winget命令行卸载软件,有三种安装方式,

  1. 加入Windows 10 Insider,并下载安装 Windows Insider 版本的系统
  2. 通过官方注册通道来将自己加入 WinGet Preview flight ring
  3. 直接去WinGet的官方GitHub仓库,在Release页面手动下载 WinGet 的安装程序进行手动安装。
powershell
# 使用
winget [<命令>] [<选项>]
# 可用命令
install   # 安装给定的程序包
show      # 显示有关程序包的信息
source    # 管理程序包的来源
search    # 查找并显示程序包的基本信息
hash      # 哈希安装程序的帮助程序
validate  # 验证清单文件
settings  # 打开设置
features  # 显示实验性功能的状态
1234567891011

总结

chocolatey、scoop、winget三者的共同点,开源、使用方式大体一致,依赖梯子网速的快慢,解决了需要前往软件官网下载的问题,缺少稳定的国内镜像,以管理员方式运行的窗口安装时不需要授权,能够做到一键安装。

三者不同点 chocolatey scoop winget
维护团队 商业团队和社区 社区 microsoft官方和社区
能否自定义安装目录 开源版本不能 不能
索引更新 HTTP 在线 GIT 增量缓存 HTTP 全量缓存
支持第三方源 支持 支持 暂不支持
搜索速度 慢,依赖bucket数量
可扩展性
国产软件收录情况 中等
能否卸载 不能

绝大多数开发环境和软件都能使用这三款包管理器进行下载安装,也就是说不管选择哪一个,都能很舒适的进行管理。那么到底该怎么选呢?在 梯子 网速良好的前提下,如果不需要自定义安装的话,选择chocolatey能够满足需求,如果对定制化有要求的话,在scoop内置和推荐的bucket之外,创建属于自己的存储库是一个不错的方案,winget是未来的趋势,当前还处于官方的开发计划中,可以持续观望。如果喜欢折腾的话,推荐使用scoop。

manifests清单(软件列表)

  1. chocolatey
  2. scoop
  3. winget
0

评论 (0)

取消