Windows 上的包管理软件

Windows 上的包管理软件:Chocolatey 和 Scoop

相信用过 Linux 的朋友一定会对各个发行版的包管理器印象深刻,例如 Debian 的 apt,Arch Linux 的 pacman,以及 NixOS 的 Nix,包管理器解决了软件的安装、更新、依赖检查等问题,使得系统用起来会省心不少。

那么 Windows 系统上有类似的包管理器吗?抱歉,官方没有专门的包管理器,也许 NuGet 算一个(Microsoft Apps Store 可称不上包管理)。Wait,Windows 需要包管理器吗?直接各个软件官网下载安装包一路点击“下一步”到底,根本不需要包管理器。然而对于我来说,我有一些额外需求:

以上需求主要针对一些工作学习用软件,例如 emacs / vim 和 各种语言的解释器安装包(docker也许更方便省事?)等。浏览器这种我就让其放飞自由了 😅。 Windows 上的非官方包管理器现在比较知名的应该是 ChocolateyScoop。我之前一直用 Chocolatey 来管理一些工作软件,直到最近装机开始转投 Scoop。

Chocolatey 基于 NuGet,软件仓库内软件包丰富,软件仓库还有一定程度的审核机制,维护人员也挺活跃。整体上我觉得 Chocolatey 会比较适合 IT 批量部署。我觉得使用上的不足有:

  • 需要 Administrative Priviledges:安装、更新、卸载都涉及 Admin 的权限想想就头疼。当然 Chocolatey 也有 Non-Administrative 的安装方法。
  • 软件配置不够透明灵活:包括环境变量和注册表配置等,也包括自己要更新软件仓库的配置繁琐。

Scoop 除了限制在 PowerShell 中运行外,其余要比 Chocolatey 更加灵活:

  • 软件仓库被称为 Buckets,除了可以使用预置的一些 Buckets 之外,还可以自己创建 Buckets。
  • 只需要普通用户权限,所有软件安装在对应用户的指定位置。

关于 Scoop 和 Chocolatey 具体区别可以查看 Scoop and Chocolatey Comparison

根据我自己的需求,Scoop 相比 Chocolatey 更让我省心。 Scoop 默认将软件安装在 ~/scoop/ 路径上,管理和查看都很方便。Scoop 默认带的 Buckets 包含了大部分常用软件。同时也可以自行添加他人的 Buckets 或者自建 Buckets。我也曾想过用自建 Buckets 当作定制软件列表,下次再折腾系统时直接一波流。后来想了一下这么做太费劲还要维护软件版本就放弃了。当然在 Buckets 维护软件版本也很简单,遵循规定的 JSON 格式即可,这和 MacOS 上的 Homebrew 就很像了。

Scoop Search Screenshot
我自己在使用 Scoop 时感觉搜索包还是有点麻烦,要么在终端(大部分情况下都比较慢),要么上 GitHub 搜索(不够直观)。于是就搭了个页面 Scoop Buckets Search 用来搜索软件包,希望比终端快一些,比 GitHub 搜索直观一些。关于如何搭建这个页面可以翻看这篇文章:Netlify 很好用 1:搭个页面搜索 Scoop Buckets

PUBLISHED AT:

Mar 15, 2020

comments powered by Disqus