
























如果你用过 Ubuntu、Deepin、Kali Linux 或是 Raspberry Pi OS 等基于 Debian 的 Linux 系统,一定不会对 apt 感到陌生,apt(Advanced Packaging Tool)是一个在 Debian 及其衍生发行版中的 Shell 前端软件包管理器,使用 apt 快速地安装、管理、卸载软件,是非常自然且优雅的一件事情,不用去思考这个软件包到底 C 盘还是 D 盘,不用去担心这个软件包的依赖关系,不用去担心这个软件包的卸载是否会影响到其他软件包,这一切都是由 apt 来帮你处理的;而 Mac OS 上也有 Homebrew 这样的软件帮助你来快速、简洁、高效地管理软件。
可再将目光转向 Windows 系统,要下载一个软件,你需要:
好麻烦!
这时候就需要包管理器出马了,但 Windows 上安装的选择很多,比如 Scoop、Chocolatey、winget 甚至是 Microsoft Store,为什么是 Scoop 呢?
首先我们应该拆解我们对软件管理的需求:
| 评估指标 | Microsoft Store | Chocolatey | Winget | Scoop |
|---|---|---|---|---|
| GUI | ✅ | ✅ | ❌ | ❌ |
| 开源 | ❌ | ❌ | ✅ | ✅ |
| 软件搜索、安装、更新 | ✅ | ✅ | ✅ | ✅ |
| 已安装软件查看与卸载 | ❌ | ✅ | ✅ | ✅ |
| 回滚版本与锁定版本 | ❌ | ✅ | ❌ | ✅ |
| 导出与备份 | ❌ | ✅ | ✅ | ✅ |
| 数据管理与清理 | ❌ | ❌ | ❌ | ✅ |
除表格中列出的功能优势外,其他软件管理器的部分缺点也是我选择 Scoop 的因素:
在安装之前,建议做一些准备工作,这些都是可选的,但是会提升你的 Scoop 使用体验:
你可以通过设置环境变量的方式来设置 Scoop 的安装目录
对于 Scoop 本身和安装软件的路径:
$env:SCOOP='D:\Applications\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')对于全局安装的软件路径:
$env:SCOOP_GLOBAL='F:\GlobalScoopApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')开启目录大小写敏感,可以避免某些软件或第三方包因为 Windows 文件系统的大小写不敏感而导致的问题
fsutil.exe file setCaseSensitiveInfo $env:SCOOP enable
fsutil.exe file setCaseSensitiveInfo $env:SCOOP_GLOBAL enable我曾经就遇到过某个 Python 包因为大小写不敏感而导致的问题,这个命令可以避免这种问题,不过由于大部分软件正确适配了 Windows 大小写问题,大多数情况下不会遇到此问题
此选项是可选的,杀毒软件的实时扫描会拖慢 Scoop 的运行速度,你可以将 Scoop 的安装目录添加到白名单中。
请注意,Scoop 本身是安全的,但是由于 Scoop 的工作方式,会下载一些软件包,若关闭杀毒软件,请自行辨别与承担可能出现的安全问题。
在此之前,你需要确定你的网络能够正常访问 GitHub,否则会安装失败。
参考官网的安装方式,打开 PowerShell,输入以下命令:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression现在 Scoop 就已经安装好了,你可以开始使用了!
在开始使用前,你需要安装一些基础软件,顺便来了解第一个也是最常用的 Scoop 命令 install:
scoop install 7zip git aria27zip 是解压下载到的软件包git 是同步远程 bucket 更改aria2 是加速下载这三个软件是 Scoop 的基础软件,安装后你就可以使用 Scoop 来安装其他软件了。
在继续之前,我们需要先了解 bucket 的概念:
bucket 是 Scoop 的软件仓库,类似于 Linux 下的软件源,Scoop 会从 bucket 中查找软件包,bucket 中的一个个 manifest 会包含软件的元数据,比如软件的名称、版本、下载地址等。官方维护了许多 bucket,你可以通过 scoop bucket known 来查看官方维护的 bucket。
推荐安装的 bucket:
你可以使用以下命令来添加这些 bucket:
scoop bucket add main
scoop bucket add extras
scoop bucket add versions
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop bucket add cetacea https://github.com/cscnk52/cetacea使用 reset 命令快速切换版本
假设你安装了多个版本的 Python,你默认是使用 python3 的,但是当前的项目需要使用 python2,你可以使用 reset 命令来快速切换版本:
scoop reset python2使用 hold 命令锁定版本
部分情况下可能需要锁定版本,不再更新,你可以使用 hold 命令来锁定版本:
scoop hold python2其余常用命令
scoop help # 查看帮助
scoop info <app> # 查看APP信息
scoop install <app> # 安装APP
scoop uninstall <app> # 卸载APP
scoop list # 列出已安装的APP
scoop status # 检查软件更新
scoop update # 更新Scoop自身
scoop update <appName1> <appName2> # 更新指定应用
scoop update * # 更新所有应用(需在apps目录下操作)
scoop bucket known # 列出所有已知bucket
scoop bucket add <bucketName> # 添加bucket
scoop cache rm <app> # 移除应用缓存
scoop cache rm -a # 移除所有缓存
scoop cleanup <app> # 删除旧版本因为 Scoop 是通过搜索本地 json 文件的形式去搜索软件的,但是因为 Scoop 软件个数的急速增长,这种搜索方式已经是非常慢的了,在某些条件下,搜索一个软件需要大约半分钟,这对于一个搜索功能来说是非常慢的,不过 Scoop 社区也在努力改善这部分的体验:
Scoop-search,是一个 scoop search 命令的代替产品,它使用了更快的搜索引擎,可以大大提高搜索速度,你可以通过以下命令来安装:
scoop install scoop-search通过对比原命令和 scoop-search 的速度,可以看出 scoop-search 的速度要快很多:
❯ hyperfine --warmup 1 'scoop-search google' 'scoop search google'
Benchmark 1: scoop-search google
Time (mean ± σ): 60.3 ms ± 3.5 ms [User: 91.2 ms, System: 394.2 ms]
Range (min … max): 55.1 ms … 73.8 ms 49 runs
Benchmark 2: scoop search google
Time (mean ± σ): 21.275 s ± 2.657 s [User: 9.604 s, System: 11.789 s]
Range (min … max): 19.143 s … 27.035 s 10 runs
Summary
scoop-search google ran
352.74 ± 48.49 times faster than scoop search google同时,在 Windows 上为众多软件提供 GUI 的 UniGetUI,也默认要求安装 scoop-search 来提升搜索速度。
在 Scoop v0.5.0 中,Scoop 引入了 SQLite 数据库,用于加速搜索,你可以通过以下命令来初始化 SQLite 数据库:
scoop config use_sqlite_cache true等待数据库初始化完成之后,你便可以享受飞快的搜索速度了。
但是,当前的 SQLite 数据库并不会删除已经弃用的 json 数据,比如曾经安装过却卸载了的 bucket 或是已经被弃用的 manifest 文件,当前并没有一个很好的解决办法,你可以通过手动删除 Scoop 目录下的 scoop.db 文件,再重新初始化数据库来暂时解决这个问题。
Scoop 的社区活跃度很差,我开始使用 Scoop 大概是 22 年 12 月,当时 11 月刚刚发布完 v0.3.1,之后每次运行 scoop update 时,我都没有看到 Updating scoop 下有任何 scoop 的更新,直到 24 年 4 月,中间隔了整整 17 月才迎来了 v0.4.0 的更新。
Scoop Installer 的 GitHub 组织成员也大多不再参与管理 Scoop 的相关事务,最开始我给 Scoop 贡献包的时候,经常需要一个 PR 等好多天才会被合并,后来我便慢慢开始自行维护属于自己的库,这也是我创建了 cetacea 这个 bucket 的原因。而我也是在刚刚才正式合并了我在六个月前提交的 PR,以后也应该不会再为 Scoop 贡献包了,转而维护自己的 bucket。
写作过程中参考了如下文章,在此表示感谢:
此篇文章同步自我的个人博客,欢迎移步观看:https://blog.cscnk52.me/blog/scoop/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。