Windows 安装 Scoop 包管理器
本文 ghproxy:https://gh-proxy.com/
先决条件
PowerShell 5.1 及以上(推荐 PowerShell 7)。运行以下命令查看
Get-Host | Select-Object Version
或者
$PSVersionTable.PSVersion不满足?将 Windows 更新到最新版本
安装 Scoop
步骤 1、2 在管理员 powershell 执行、步骤 3 在非管理员 powershell 执行
# 1.自定义 Scoop 安装目录
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP',$env:SCOOP,'User')
# 2.此步可省略,自定义 Scoop 全局包安装目录(为一台机器的所有用户安装)
$env:SCOOP_GLOBAL='D:\Scoop_Global'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')
# 3.安装 Scoop
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 由于国内特殊的网络环境,此步用 ghproxy 加速
# ghproxy 不保证可用性,请依次尝试以下网站,或直接用 bing 或 google 搜“github 代理加速”
# https://gh-proxy.com/
# https://ghproxy.net/
Invoke-RestMethod -Uri https://gh-proxy.com/raw.githubusercontent.com/lzwme/scoop-proxy-cn/main/install.ps1 | Invoke-Expression注意:
- 所指定的路径必须存在,若不存在应手动创建
- 由于环境变量中文路径的支持问题,Windows 用户名或自定义的安装路径不能有中文
- scoop 官方仓库中的软件大多数都是便携版的开源软件
安装 Git
scoop 依赖 git,不安装无法进行后续操作
scoop install gitScoop 版本选择
SCOOP_BRANCH 默认为 master,表示稳定版 若要使用最新版,则
scoop config SCOOP_BRANCH develop
scoop updatedevelop 为开发分支,仅建议需要体验最新功能或参与测试的用户使用。
Scoop 源码存储库加速(更新本体)
scoop config scoop_repo https://gh-proxy.com/https://github.com/ScoopInstaller/Scoop目的:当执行 scoop update 命令时,默认会从 https://github.com/ScoopInstaller/Scoopl 更新 scoop 本体,稳妥起见使用gh-proxy.com 代理
Scoop 仓库加速(下载、更新软件)
下载慢的原因:scoop 中大多是开源软件,下载地址以 https://github.com/ 开头,而用国内的网络直接访问 GitHub
可能打都打不开,更别说下载了,即使能下载也极慢。因此对于能够直接在 GitHub 上下载的软件,可以通过 ghporxy.com 代理来解决。对于不能在
GitHub 上下载的其它软件(下载地址不以 https://github.com/ 开头),就需要其他方法解决了。好在一些知名的国外软件国内下载速度也是很快的,比如
IDEA、Postman 等。针对这两种情况,下面提供了两种解决方法
方法一(推荐)
使用 scoop buckets 代理镜像库
scoop bucket rm main
# spc 作为 main 库
scoop bucket add main https://gh-proxy.com/https://github.com/lzwme/scoop-proxy-cn.git区别:scoop-proxy-cn 包含了众多 bucket,且所有以 https://github.com/ 开头的下载链接均已加了前缀 https://gh-proxy.com/
来加速
详见:https://github.com/lzwme/scoop-proxy-cn/blob/main/README.md
如果已经安装了 Scoop,不想重新安装,可按以下步骤操作。
# 先删除已有的 Bucket(根据实际情况删除即可):
scoop bucket rm main
scoop bucket rm extras
scoop bucket rm ...
# 然后添加本库
scoop bucket add main https://gh-proxy.com/https://github.com/lzwme/scoop-proxy-cn.gitmain bucket 必须始终存在(Scoop 源码硬编码),否则执行 scoop 命令会报以下错误。这也是上面 spc 重命名为 main 的原因。不改名也可以,但是会有两个 bucket,main 和 spc。但 main 是冗余的,因为 spc 已包含了 main
INFO Converting 'main' bucket to git repo...
ERROR 'main' bucket not found.
Failed to remove local 'main' bucket.添加完成后,本库将作为 main Bucket 使用。
接下来,需要将已安装应用的 bucket 信息修改为 main,否则后续更新仍会指向原来的 Bucket。每个应用安装目录的 current 下都有一个
install.json 文件,其中包含 bucket 字段。可运行以下命令批量修改:
# 将已安装应用的 bucket 全部改为 main
Get-ChildItem "$env:USERPROFILE\scoop\apps" -Recurse -Filter install.json |
ForEach-Object {
(Get-Content $_.FullName -Raw) `
# 匹配 bucket 字段,并将值不是 main 的替换为 main
-replace '"bucket": "(?!main")[^"]+"', '"bucket": "main"' |
Set-Content $_.FullName
}其中,$env:USERPROFILE\scoop\apps 需要根据实际的 Scoop 安装路径进行调整。
- 如果安装时未修改安装路径,默认使用 $env:USERPROFILE\scoop\apps。
- 如果设置了 SCOOP 环境变量,请改为 $env:SCOOP\apps。
最后,运行以下命令检查是否替换成功
scoop list方法二 (建议用 TUN 模式)
让 scoop 网络连接通过代理进行
scoop config proxy 127.0.0.1:10809(v2 用户)
scoop config proxy 127.0.0.1:7897(cat 用户)然后通过 scoop bucket add 添加 GitHub 的 scoop bucket,此方法要保证 scoop 的任何操作都要在开启代理的网络环境下进行
安装语法提示插件(可选)
# 1.安装
scoop install scoop-completion
# 2.启用
# create profile if not exist
if (!(Test-Path $profile)) { New-Item -Path $profile -ItemType "file" -Force }
# 查看 $profile
$profile
# 打开该文件,新增以下内容
Import-Module "$($(Get-Item $(Get-Command scoop.ps1).Path).Directory.Parent.FullName)\modules\scoop-completion"# 用法
scoop ins[Press Tab]
scoop install py[Press Tab]
scoop uninstall [Press Tab]安装 scoop-search(可选)
scoop search 效率低下,建议用 scoop-search 替代
scoop install scoop-search
# 将其添加到您的 Powershell 配置文件(通常位于 $PROFILE)
Invoke-Expression (&scoop-search --hook)实战:Scoop 安装 MySQL
scoop install mysql
# 启动 mysql
mysqld --console
# my.ini 设置了 root 用户
mysql -uroot
# 为 root 用户设置密码,密码为 root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
# 设置开机启动,注册为服务(需管理员权限)
mysqld --install MySQL --defaults-file="D:\Scoop\apps\mysql\current\my.ini"
# 关闭开启启动(需管理员权限)
mysqld --remove
# 参考 https://dev.mysql.com/doc/refman/8.1/en/windows-start-service.html这里 Scoop 的优势就体现出来了,搜索任意一篇“MySQL 安装教程”,通篇图文并茂的文章操作下来,其实也就上面几行命令,节省了不少时间
更新 Scoop 以及 bucket
# 更新 Scoop 和 Bucket
scoop update
# 更新所有软件
scoop update *卸载 Scoop
scoop uninstall scoop警告:这将卸载 Scoop 以及所有随 Scoop 安装的程序!
若需彻底卸载,还需要手动删除 Scoop 安装目录及相关环境变量。
经验
1.有时下载失败,可能是 hash 校验失败,尝试如下命令重新安装
# -s or --skip Skip hash validation (use with caution!)
scoop install <app> -s2.在官网 https://scoop.sh 搜索有时比 scoop search 更快 3.有时下载失败,可尝试关闭 aria2
scoop config aria2-enabled false4.从 0.4.0 版本开始必须存在 main bucket,否则执行 scoop update 会报错
PS C:\Users\username> scoop update
Updating Scoop…
Updating Buckets…
INFO Converting ‘main’ bucket to git repo…
ERROR ‘main’ bucket not found.
Failed to remove local ‘main’ bucket.
常用命令
scoop list # 查看已安装软件
# 搜索、安装
scoop search <app> # 搜索软件
scoop install <app> # 下载并安装软件
# 更新
scoop update # 更新 scoop 和所有 bucket
scoop status # 检查已安装包是否有更新
scoop update <app> # 更新指定包
scoop update * # 更新所有包
# bucket
scoop bucket known # 查看官方支持的下载源
scoop bucket add <name> [<repo>] # 添加下载源
# scoop 更新 app 后,其旧版本并不会被删除,可通过以下命令删除
scoop cleanup <app>
scoop cleanup *
scoop hold <app> # 锁定版本(暂停更新)
scoop unhold <app> # 解除版本锁定
scoop reset <app@版本号> # 切换包到指定版本(scoop 特色)
scoop cache rm * # 清空缓存(清空 cache 目录)
# 备份
scoop export > scoopfile.json # 导出包
scoop import scoopfile.json # 导入包
# 打开应用主页
scoop home <app>
# 自身诊断
scoop checkup杂谈
Windows 管理器我只用过 chocolatey、scoop、还有自家的 winget,目前比较下来还是 scoop 最好用,chocolatey
虽然老牌但很多软件源缺少维护且需要管理员权限,winget 对国内软件支持度高多但还不成熟。如果是 macOS,就选 homebrew 吧。
GitHub:https://github.com/ScoopInstaller/scoop
官网:https://scoop.sh
其他教程:https://zhuanlan.zhihu.com/p/463284082