只有一个工具合适--windows 包管理器

opot / scoop / choco / winget

我最早是从 choco 接触到 windows 的包管理器,也用了一段时间, 不过后来的大部分时间,我都是在用 scoop

包管理器

其实包管理器做的事情都差不多,我们都是用一个管理器,把四处找软件包、 升级包的事情简化,从这个角度来说,其实两个包管理器都差不多,都可以胜任这件事, 包括现如今 windows 自带的 winget,如果不挑剔,我们甚至都不用再去安装一个包管理器。

缘由

为什么是 scoop

大部分 mac 开发者我想都会装上 brew,用 brew 管理和安装软件实在是方便和统一很多, 而选择 scoop 其实很简单:scoop 和 brew 非常相似:完全基于 git、 对应 tap 的 bucket,使用习惯上可以完全相同。

为什么不是 scoop(早期)

之前选择 choco 的一个重要原因是,scoop 早期并不支援 nonportable 应用, 这就刷掉了一大堆常用软件,这造成了一个尴尬的局面: 我们没有办法用 scoop 管理所有的常用软件。 如果不希望自己手工管理全部的 nonportable 应用, 那不可避免我们会用到另一个包管理器,这样的话,似乎我也就不需要 scoop 了, 直接用 choco。

之前的日子,我使用 virtualbox 的时间比较多,这是一个 nonportable 应用, scoop 不能装,而 choco 装 nonportable 应用是完全没有问题的, choco 的问题在于选择太多,让人有点不知道选哪个好,比如 7zip:

scoop 基本不存在这个问题:

我印象中选择困难的应用只有 calibre:

有 portable 肯定首选 portable,而我装 calibre 一直会有问题, 所以最后我安装的是 calibre-normal。

目前,由于 virtualbox 似乎一直没有解决和 hyper-v 的共存问题, 导致 virtualbox 虚拟机一直是龟速运行, 我也就把大部分使用 virtualbox 的场景迁移到了 hyper-v 和 windows sandbox 上, 当然,除了 virtualbox 我也会用到其他 nonportable 的应用, scoop 目前已经解决了 nonportable 的问题,只要我们给 scoop 添加了 nonportable:

scoop bucket add nonportable

然后就可以看看我们需要的应用是否在库中了:

为什么不是 choco

前面说到了 choco 的一个问题在于同名软件过多,难以选择,这是它最主要的问题, 另一个问题在于 choco 提供了多个 license 给用户选择,这也是一个选择困难问题。 虽然多数情况下,我们选择个人使用就好,但是不晓得会不会有人和我一样还是会觉得有些不自在。

为什么不是 winget

最新版的 win11 系统默认带了一个包管理器 winget,我的看法是,可以用,但是不好用, 用它更新软件一直会遇到一个问题,虽然我已经按它的清单更新到最新了, 但是 winget 还是会提示有更新。所以多数时候我会把它当作 scoop 的一个补充, 如果我有应用在 scoop 上搜不到,我会在 winget 上试试运气。

总结

总结一下 scoop 目前的特点

  • 与 brew 类似
  • 通过 bucket 支持 nonportable 应用
  • 一个应用多个条目的情况很少

以上列出了我从 choco 切换到 scoop 的缘由和思考,供大家参考, 这一期的只有一个工具合适可能会有些主观。当然可能有些朋友觉得这些都不是问题, 那其实就挑一个顺手的就好了,都只是一个包管理器而已。

另外有一点我觉得可以再提一下,可能有很多朋友和我一样, 闲着没事就喜欢更新一下软件版本,其实可以不必那么版本焦虑,最新的不一定是最好的。 偶尔我们会遇到更新失败或者更新后不能用的问题,有时是因为包管理器的配置错误, 有时是因为新的版本已经不再支援我们的系统。而应对这个问题的最好办法是不更新, 如果还是喜欢更新的话,对于配置错误,这个没有太好的应对措施, 我的应对是过几天再试试,多数都会修复。对于新的版本,我觉得比较明智的做法是看一下软件的 更新日志,如果是修复缺陷,那是可以无脑刷上去的,如果是较大的更新,那可以看下新功 能是否是自己的痛点,是的话再更新。

只有一个工具合适