对于 Windows 上的软件包管理工具 Scoop 的评价与定位
一开始接触 Scoop 感觉不错,体验上类似于 Homebrew,或者说就是把他看成是 Windows 上的 Homebrew。如 Scoop 的作者所说,Homebrew 正是 Scoop 的灵感。
然而,使用到后面越感觉,并不是有了 Scoop 之后就不用管其他的了。相当一些软件就不适合通过 Scoop 进行安装和管理,即便他们位于 Scoop 的 main 仓库。不适合的原因有很多。有一些是性能上比起通常方式安装的要差很多。有一些是安装后不便于实际使用,需要加很多更加繁琐的操作配置。有些是软件本身就有更加方便的更新渠道,使用 Scoop 反而导致不方便和冲突。
比较适合用 Scoop 安装和管理的情况
目前来说,Scoop 比较合适的使用场景相对有限,主要是下面几种。
一些需要用到或者说需要管理和切换多版本的计算机语言,比如 Python,Java,这种使用 Scoop 管理就很方便。实际上,使用 Scoop 管理 Java 多版本,是我目前见过的在 Windows 上的最方便的方式。
一般的计算机语言,包括编程语言,主要特点就是不方便自行更新,或者说官方提供的更新手段不直接,不像那些有 GUI 的软件会自带自己更新的方式。这种使用 Scoop 就比较方便进行管理,包括更新的操作。比如在 Windows 使用 C++ 除了使用 MSVC,另一种常用的就是 MinGW-w64 了,而使用 Scoop 安装 MinGW-w64 就非常方便。
一些开发工具,特别是主要命令行使用的工具,比如 Maven,使用的时候就是解压到某个目录,然后将相应的可执行文件所在的目录添加到环境变量中,他们所在的目录只要是常规的目录,一般不影响性能。而且,这些也一般没有专门的更新渠道。需要使用更新的版本的时候,通常就是从官方下载更新的版本,把原先的删掉,然后把新的放上去。对于这种,Scoop 管理就更方便了,可以随时获取相关的工具是否可以更新。
不适合使用 Scoop 安装管理的场景
除了上面说的这些,剩下的基本上就不适合使用 Scoop 安装管理。真要说的话,有很多种情况,主要是下面所说的内容。
有的是需要用管理员模式才能安装的软件包。安装之后,大多数还会添加到控制面板中的程序列表里面。这样管理起来不方便,卸载的话会产生冲突。
一些软件包,东西不全放在scoop
目录,而是还会在其他地方放东西,卸载后也不会跟着删掉。
很多软件有着自己的方便的更新方式,那些有 GUI 的基本就是如此。这种就太多了,不一一列举。包括 VS Code,他会自己下载新版本,重启 VS Code 就能完成安装。而使用 Scoop 安装的 VS Code,没法正常在软件中进行更新,只能在 Scoop 更新,导致冲突问题、此外,在使用上有性能问题,不赘述。
不过,有的软件虽然提供 GUI,但一般主要使用的是他的命令行,也包括右键菜单,等等。GUI 只是某种辅助方式,不是主要功能,而且不会通过 GUI 给出检查更新的选项。这种的话倒还是推荐用 Scoop 安装的。这种软件就比较少了,可以简单地列出来。比如,7-Zip,CMake,Inkscape。
不仅是位于 extra 仓库的不推荐使用 Scoop 安装,即便是在 main 仓库的也有一些是不推荐的。比如 Git,在 Windows 上的 Git 需要通过常规方式安装到默认安装目录,而且他安装的时候应该还有其他的一些配置,这样之后,在使用上才能保证正常的性能。而在 Scoop 安装的 Git,在性能上就会糟糕很多。此外,Git 现在有很方便的更新操作。使用下面的命令就可以了。
1 |
|
安装 Scoop
具体操作在官网有说了,这里只是备忘。并且建议使用 Gitee 的镜像优化库。
首先用管理员模式运行 PowerShell。
1 |
|
然后关闭 PowerShell,再用普通模式运行 PowerShell。
使用下面的 Gitee 镜像优化库。
1 |
|
如果还没安装 7-Zip,Scoop 一般会给你先安装 7-Zip。当然也可以自己操作,这样也方便记得可以添加右键菜单。
1 |
|
如果是已经安装了 Scoop 想换源,可以这样子。
1 |
|
相应的配置文件是~/.config/scoop/config.json
。
在 Scoop 安装软件包
有的软件包在一些 bucket 中,需要先添加 bucket。
1 |
|
一般添加下面几个。
1 |
|
安装软件时,可以先使用scoop search
查找是否有所需的软件包,再用scoop install
安装。
使用scoop info
可以查看指定软件的信息,包括版本,所在仓库,二进制文件,环境,注意事项等。
在 Scoop 更新软件包
首先使用scoop update
,更新 Scoop 自身到最新版本。然后使用scoop status
,检查软件包的状态,也就能看到有新版本的软件包。
此处不建议在一行命令中一次安装多个软件包。一些软件包在安装后,会给出提示进行后续操作,主要是添加注册表,以便添加右键菜单或者其他功能,可以根据需要,运行他所提示的相关命令。
卸载删除 Scoop 上的软件的注意事项
如果在 Scoop 安装了某个软件,而且按照提示,运行了相应的reg
文件,添加了注册表,那么卸载的时候,需要在软件在 Scoop 相应的目录,自己运行相应的删除注册表的reg
文件。Scoop 上面很多软件在卸载的时候并不会把这些注册表项也删掉,就导致可能在右键菜单等地方有残留。
虽然在之前的内容中,说了大部分不适合使用 Scoop 安装的场景。把情况列出之后,基本就很少有上面所说的这类软件包。
1 |
|
清理缓存。
1 |
|
通过移除旧版本来清理软件包。
适合在 Scoop 安装的软件包的简易列表
如之前所说,实际上适合在 Scoop 安装的软件包就不是很多了,真正常用的更是有限。这里简单地用几行列出。先给出软件包的通用名称,再给出相应的在 Scoop 的名称。
7-Zip
7zip
MinGW-w64,C++
mingw
CMake
cmake
Node.js,nvm
nodejs
,nvm
GitHub Cli
gh
Microsoft .NET SDK
dotnet
Pandoc
pandoc
InfluxDB
influxdb
,influx
Vcpkg
vcpkg
Inkscape
inkscape
Ghostscript
ghostscript
Maven
maven