Note
对于经常炸电脑的人来说,每次重装系统之后安装软件都是一件十分痛苦的事, 特别对于开发者来说有些软件的环境配置令人头疼,那么有没有既简单、又高效的安装软件的方式呢?
有点兄弟,有的。来看看Windows下既简单又实用的包管理器Scoop
起源
在早期的 Windows 系统中,其实并没有像 Linux/macOS 那样便捷的命令行软件安装方式,只能通过浏览器手动下载并安装软件。
在2011年,Chocolatey 作为 Windows 平台的第一个主流包管理器诞生,它借鉴了 Linux 的包管理思想,允许用户通过命令行安装软件。
然而,Chocolatey 主要面向系统级软件管理,通常需要管理员权限,对普通用户来说仍不够友好。
在2013年,澳大利亚开发者 Luke Sampson 发布了 Scoop 的首个版本,它以简单易用、无需管理员权限、便携化安装等特点迅速吸引了大量用户。
Scoop 专注于开发者工具和命令行应用,采用开源模式,并支持社区维护的软件仓库(Buckets),使其在 Windows 用户中广受欢迎。
尽管近几年微软推出了官方包管理器 WinGet,导致部分用户迁移,但 Scoop 凭借其轻量、灵活的特性仍在持续发展,并保持着活跃的社区生态。
安装
准备工作
现在在 Windows 下推荐使用 PowerShell 同时搭配 Windows Terminal 来实现命令行交互,当然你头铁想用 CMD 我也没意见。
安装 PowerShell 推荐使用 WinGet ,既方便,也可使实时更新,同时其是系统自带的。(别问我为什么都用 WinGet 了还用 Scoop )
下面的命令主要是用来搜索 PowerShell 版本用的
winget search Microsoft.PowerShell
一般有正式版和预览版,直接装正式版就好了,简单又方便。
winget install --id Microsoft.PowerShell --source winget
OK,一切都已经准备好,之后使用 Windows Terminal 启动 PowerShell 就好了(这里就不细说了)
安装Scoop
其实安装 Scoop 很简单,只需要两行代码足以
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
Tip
但是这么做会有一个问题,那就是 Scoop 默认会安装到系统的
C盘。
众所周知,C盘那就是生命盘,我红了它都不能红!!!
那么就需要更改一下默认的安装位置就行了
# 设置环境变量
$env:SCOOP='D:\Applications\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
$env:SCOOP_GLOBAL='D:Applications\GlobalScoopApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
首先要设置环境变量,之后卸载 Scoop 后从新安装,就好了
# 删除 scoop 主目录
Remove-Item -Recurse -Force "$env:USERPROFILE\scoop"
# 删除配置和缓存
Remove-Item -Recurse -Force "$env:USERPROFILE\AppData\Local\scoop"
如何使用
基础命令
以下为 Scoop 的基础命令
| 命令 | 说明 |
|---|---|
scoop install <app> | 安装应用 |
scoop uninstall <app> | 卸载应用 |
scoop update | 更新 Scoop 本体和所有已安装软件 |
scoop update <app> | 更新指定软件 |
scoop update * | 更新所有软件 |
scoop list | 列出已安装软件 |
scoop status | 检查哪些软件可更新 |
scoop info <app> | 查看软件信息(版本、依赖等) |
scoop search <keyword> | 搜索软件包 |
scoop cleanup | 清理旧版本和缓存 |
scoop cache rm * | 清空全部下载缓存 |
添加bucket
那此时此刻,Scoop 应该就可以用了,可以安装自己喜欢的软件试一下。
但是你可能会发现好像没有我自己想要的软件,Scoop 真垃圾–吗?
非也,其实 Scoop 有很多的额外的 bucket ,很多软件是在那些库里。
如 extras 或是其他 bucket 里。
scoop bucket add extras
...
利用 search 命令应该可以看到之前没有的软件已经有了
| 命令 | 说明 |
|---|---|
scoop bucket add <name> | 添加 bucket(软件源) |
scoop bucket list | 查看已添加的 bucket |
scoop bucket known | 查看 Scoop 官方/社区支持的 bucket 列表 |
scoop bucket rm <name> | 删除 bucket |
切换镜像源
因为 Scoop 使用的 GitHub 作为仓库,所以在国内使用 Scoop 可能会导致速度较慢, 或者完全无法使用,所以就需要切换到国内的镜像源,方便我们的使用。
# 替换 Scoop 的 GitHub 仓库为清华镜像
git -C "$env:SCOOP" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Scoop.git
# 设置环境变量,使用清华源代替 GitHub 加载 buckets
[Environment]::SetEnvironmentVariable('SCOOP_REPO', 'https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Scoop', 'User')
[Environment]::SetEnvironmentVariable('SCOOP_BUCKET_URL', 'https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Buckets/', 'User')
# 先移除已有 buckets
scoop bucket rm main
scoop bucket rm extras
# 使用清华镜像重新添加
scoop bucket add main https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Main
scoop bucket add extras https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Extras
scoop bucket add versions https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Versions
那以上就完成了镜像源的替换
扩展
aria2加速下载
Scoop 本身是支持使用 aria2 来加速下载的
# 先安装 aria2
scoop install aria2
下面为 aria2 的设置
# aria2 在 Scoop 中默认开启
scoop config aria2-enabled true
scoop config aria2-retry-wait 4
scoop config aria2-split 16
scoop config aria2-max-connection-per-server 16
scoop config aria2-min-split-size 4M
以下为 aria2 配置的详解
| 配置项 | 说明 |
|---|---|
aria2-enabled | 启用加速 |
aria2-retry-wait | 设置等待时间 |
aria2-split | 分成 16 个线程 |
aria2-max-connection-per-server | 单服务器并发连接 |
aria2-min-split-size | 最小分片大小 |
版本切换
在开发的过程中,我们可能会需要不同版本的语言来使用,如 Python等
其实,Scoop 本身是支持简易的版本切换的,虽然功能一般,但聊胜于无吧。
首先bucket 添加 versions
scoop bucket add versions
#or 安装镜像源
scoop bucket add versions https://mirrors.tuna.tsinghua.edu.cn/git/ScoopInstaller/Versions
然后搜索 Python
scoop search python
之后选择自己需要的 Python 版本进行安装就好了
Tip
如果是其他的语言,如 Java 要自行添加不同的 bucket 否则可能无法找到该软件
切换版本呢则是非常简单
scoop reset <version>
# 例如
scoop reset python39 # 切换 python 为 3.9 版本