Scoop 搭建 Windows 开发环境

Scoop 搭建 Windows 开发环境
狂犬主子Scoop 是一个 Windows 下基于 PowerShell 编写的的第三方包管理器,能够自动下载、解压、设置环境变量、添加 shim、持久化用户数据。
本文将使用 Scoop 来安装一些工具,简化开发环境搭建,让开发人员重装系统后可以更快配置环境。
本文提供的方法非特别说明无需特殊网络环境即可直接下载安装,并配置好国内镜像。
安装 Scoop
这里使用我们的特别版 Scoop,加入了一些特性,能够在国内环境自动切换镜像使用。
打开 PowerShell,执行以下命令安装 Scoop。无需管理员权限。
1 | irm c.xrgzs.top/c/scoop | iex |
执行完上面的命令,你的电脑中已经安装好了 Git for Windows、7-Zip、Aria2,并添加了常用的仓库,可以基本满足使用。
TIPS:正常情况下 Scoop 安装完成的软件不会创建桌面快捷方式,可以在开始菜单的 Scoop Apps 文件夹中找到,将其拖到桌面即可。如果你希望自动创建快捷方式到桌面,可以使用桌面整理软件给
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Scoop Apps
映射到格子即可。
配置 Git
配置好 Git 以便能够拉取提交代码。如果不需要,可以跳过此步骤。
需要准备一个电子邮箱,且绑定到 GitHub / Gitee 等代码托管平台。
打开 Git Bash:
1 | git-bash.exe |
配置 Git 的用户名和邮箱:
1 | git config --global user.name "Your Name" |
(可选)配置客户端记住密码,避免每次都输入密码:
1 | git config --global credential.helper store |
(可选)配置默认文本编辑器(如果不想用默认的 Vim):
1 | git config --global core.editor "code --wait" |
查看配置信息:
1 | git config --list |
配置 SSH 推拉代码
配置能够正确推拉如下格式的仓库:
1 | git clone git@gitee.com/user/repo.git |
生成 SSH 密钥:
1 | ssh-keygen -t ed25519 |
根据提示输入路径(回车即可)、密码(可为空)。
密钥和公钥默认存放到 %USERPROFILE%\.ssh
目录下,其中 id_ed25519
为私钥,id_ed25519.pub
为公钥。
显示 SSH 公钥:
1 | cat .ssh/id_ed25519.pub |
将 SSH 公钥的内容复制到 GitHub / Gitee 等平台的 SSH 管理中。
TIPS:如果你有服务器的话,可以将这个文件也上传到服务器上的 ~\.ssh\id_ed25519.pub
,这样就可以实现 SSH 免密登录。
此时即可正常推拉代码,且提交具有身份验证,网页端会显示 Verified
。
配置 HTTPS
配置能够正确推拉如下格式的仓库:
1 | git clone https://gitee.com/user/repo.git |
这种情况下,拉取/推送代码时可以配置登录信息。一般情况下到这里已经够用。
一些仓库要求强制 Verified
,需要配置 GPG 签名验证身份。
配置 GPG 签名
生成 GPG 私钥:
1 | # Ensure gpg is installed |
根据提示输入用户名、电子邮箱(要求同上),还有私钥的密码(请妥善保管,提交 commit 时要输入)。
生成 GPG 公钥:
1 | # Get your GPG key ID |
将得到的 GPG 公钥复制到 GitHub / Gitee 等平台的 GPG 管理中。
配置 Git 的默认 GPG 签名:
1 | git config --global user.signingkey {key_id} |
配置完成后每次 commit 时都会自动签名,并在网页端显示 Verified
。
备份 GPG 密钥
这里我们的密钥保存到 ~/.gnupg
,如果重装系统可以备份这个目录。或者使用以下命令将设备的所有证书导出到一个设备:
1 | cd f: |
需要注意的是,私钥一定不能丢失或外泄。为了以防万一,我们生成一份吊销证书,用以在特殊情况时吊销该密钥,当然吊销证书也应该妥善保管。
生成吊销证书:
1 | gpg --armor --gen-revoke > mygpg.rev |
(可选)发布 GPG 公钥
将公钥发布到密钥服务器上是不可逆行为,请谨慎操作
一些公钥服务器:
Ubuntu:keyserver.ubuntu.com
MIT:pgp.mit.edu
1 | gpg --keyserver keyserver.ubuntu.com --send-keys {key_id} |
(可选)导入平台 GPG 公钥
信任 GitHub 平台的默认公钥:
1 | curl https://github.com/web-flow.gpg | gpg --import |
信任 Gitee 平台的默认公钥:
1 | curl https://gitee.com/gitee.gpg | gpg --import |
信任完成后即可在本地验证网页提交的签名。
1 | git log --show-signature |
(可选)安装 Gpg4win
安装Gpg4win
的目的是替换git-for-windows
默认的pinentry
程序(用于输入密码),Gpg4win
会提供一个 pinentry-qt
程序来代替默认的 pinentry
,主要是界面好看一点。其次,Gpg4win 提供了一个GUI 程序 Kleopatra
,可以更方便地管理密钥和使用 GPG 进行签名、加密。
1 | scoop install extras/gpg4win |
然后我们需要修改 Git 的默认配置使其调用 Scoop 中安装的 Gpg4win:
1 | git config --global gpg.program "$(scoop which gpg | Resolve-Path)" |
这里有个坑,默认情况下 Gpg4win 的默认配置目录为 %APPDATA%\gnupg
,并非 Git for Windows 默认的 ~\.gnupg
,会导致我们打开 Kleopatra 看不到之前添加的密钥,根据文档,需要我们手动修改一下注册表或者环境变量:
1 | Set-ItemProperty -Path "HKCU:\Software\GNU\GnuPG" -Name 'HomeDir' -Value "$env:USERPROFILE\.gnupg" -Type String -Force |
此时执行 gpg --version
即可看到 Home 路径已被修改。如果 Kleopatra 已经运行了的话需要托盘退出重启一下才能看到更改。
配置终端
安装 Windows Terminal
Windows 11 已经默认安装,除非你是 LTSC 版本。
建议通过商店安装 Windows Terminal,并配置为默认终端。
亦可使用 Scoop 执行便携安装:
1 | scoop install extras/windows-terminal |
必须要安装一个终端软件,不要使用系统内置的 conhost.exe
,不然折磨死人。
升级到 PowerShell Core
由于 Windows 自带的 PowerShell 5.1 速度慢、兼容性差、功能少,且默认输出带 BOM,这里建议升级到跨平台的 PowerShell Core。在其他 Shell 中,Scoop 会自动切换为 PowerShell Core。
1 | # Install PowerShell Core Non-portable |
为了避免文件编码错误,我们重启到 PowerShell 完成后续的操作。
优化 Windows Terminal 配置
1 | # 获取 WT 配置路径 |
(可选)设置 CMD 为默认 Shell
由于 PowerShell 中部分体验和 CMD 不一致,个人喜欢将 CMD 设为默认 Shell,然后再安装 Clink 来增强 CMD 的体验。
1 | $wtSettings.profiles.defaultProfile = "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}" |
安装 Nerd Font
这里我们需要安装 Nerd Font 并将其设为默认,避免一些字符无法显示。个人喜欢使用 Cascadia Code。
Cascadia Code
1 | scoop install nerd-fonts/Cascadia-Code |
新装的字体需要重启 Windows Terminal 才能被使用,但先不着急重启。
添加 Git Bash 到 Windows Terminal
1 | $wtSettings.profiles.list += @{ |
添加 MSYS2 到 Windows Terminal
如果后面你想使用 MSYS2,可以添加到 Windows Terminal 中。
1 | # UCRT64 |
保存配置
1 | $wtSettings | ConvertTo-Json -Depth 100 | Set-Content "$wtSettingsPath\settings.json" -Encoding UTF8 |
配置 Shell
PowerShell
由于加了美化会拖慢 PowerShell 速度,这里我一个美化都不安装,仅创建一下 $PROFILE
。
1 | # Create profile |
美化:Oh My Posh
Oh My Posh 是一个适用于任何 shell 的提示主题引擎。
1 | # Install oh-my-posh |
可以到主题文档查看并选择一个合适的主题来替换掉上面的 powerlevel10k_modern.omp.json
。
美化:Starship
如果不喜欢 oh-my-posh,我们可以使用 Starship 来代替。
1 | scoop install starship |
安装自动补全 / 命令预测
由于 PSReadLine 新版 PowerShell 已经自带(虽然版本号稍有落后),因此我们只需要再安装一下对应的补全即可。
1 | # Any Completion |
用法:按 Tab
键补全,按 F2
键切换为竖屏模式。
其他
你可以添加其他的配置来自定义 shell 环境。
1 | code $PROFILE |
CMD
CMD 是 Windows 传统的命令行,功能简陋。
BusyBox
为了拓展 CMD 的命令,我们可以安装 BusyBox。
1 | scoop install busybox |
安装完成你就可以使用 ls
、cat
、grep
、dd
等一些 Linux 命令了,虽然是精简版的,但有总比没用强。
注意安装 BusyBox 会覆盖掉一些已经安装的 shims,所以尽量提前安装。
Clink
我们可以安装 Clink 来优化 CMD 的体验。个人感觉优化下来比 PowerShell 好用。
1 | scoop install clink clink-completions |
现在启动 CMD 就可以看到 Clink 的提示信息了。
如果想要配置一下外观,可以执行:
1 | @rem Make the startup message shorter |
根据提示完成向导即可。
Bash
由于 Git Bash 自带 Bash 配置,且有性能问题,一般情况下无需优化。
X CMD
可以安装 X CMD,增强 Bash 的体验。
打开 Git Bash 执行以下命令即可。
1 | eval "$(curl https://get.x-cmd.com)" |
安装 Visual Studio Code
一款强大的编辑器。
1 | scoop install vscode |
你可能需要自行安装一下中文语言包和一些插件。
安装 JetBrains 全家桶
1 | # scoop install extras/idea |
安装 Typora
Markdown 编辑器。
1 | scoop install sdoog/typora |
此版本安装后会自动配置好关联。
配置 C/C++ 开发环境
这里不使用 Visual Studio(MSVC),而是配置 unix-like 的开发环境,原理是在 Windows 上提供一个 POSIX 环境,如 Cygwin、MSYS2 等。
最好先安装/更新一下 VC 运行库:
1 | scoop install extras/vcredist2022 |
方法一:Winlibs
与下一种方案不同的是,这种方法更加简单,直接使用 Scoop 管理开发工具链,不需要安装 MSYS2。缺点是丢失了包管理器,不过对于初学者来说足够了。
1 | scoop install mingw-winlibs |
现在 GCC 工具链已经安装好了,可以在 VSCode 等工具中使用了。
如需 LLVM 工具链,可以将上面的安装命令中的包名改为:versions/mingw-winlibs-llvm-ucrt
方法二:MSYS2 (建议)
MSYS2 是一个适用于 Windows 的软件分发和构建平台,由 mintty
、bash
命令行终端,git
、subversion
等版本控制系统,tar
、awk
等工具,autotools
等构建系统组成。可以理解为一个的“子系统”,让 Windows 也能享受 GNU 和开源工具,提供类似于 WSL 的功能。
我们可以在 MSYS2 里面安装 GCC、LLVM 等一些 C/C++ 开发工具链,以及一些使用对应工具链编译出来的二进制文件(不用你手动折腾编译),且可以通过 pacman
(Arch Linux 也在用)这个包管理器进行方便的安装和管理。
MSYS2 的 unixy 工具直接基于 Cygwin,对原生 Windows API 支持更好。这里不直接使用 Cygwin 因为其提供的包比较少,且安装使用起来不太友好。
我们平时使用的 Git for Windows 就使用到了 MSYS2 的 MINGW64 环境。虽然 Git for Windows 提供了 MSYS2 的 MINGW64 环境,但 Git Bash 默认包含 Windows 的用户环境(不干净),默认家目录为 Windows 的用户目录,且没有内置 pacman
包管理器,仅用于跑 git。而 MSYS2 更倾向于提供“子系统”,设计上会有些不同,不会继承 Windows 的用户环境,家目录也与 Windows 的用户目录不同,不适合作为日常终端环境使用。
MSYS2 提供了 MSYS、UCRT64、CLANG64、MINGW64 等环境。关于这些环境的区别可以点击链接查看文档中的表格。这里使用 MSYS2 的 UCRT64 环境,与 MSVC 兼容性更好,且使用 gcc 工具链方便使用。如果你需要使用 llvm 工具链,可以使用 MSYS2 的 CLANG64 环境。
这里我们使用 scoop 安装 MSYS2 会将其安装到用户目录下,通常情况下我们会将 MSYS2 安装到 C:\msys64
目录下方便使用,需要注意一下可能和你看的教程不同。通过以下命令安装会自动配置好国内加速镜像,并安装 GCC 工具链和 CMake:
1 | scoop install dorado/msys2-cn |
此时 GCC 环境已经配置好,可以在 VSCode 等工具中使用了。
由于 MSYS2 能自己通过 pacman -Syu
升级,可以关闭 Scoop 的升级:
1 | scoop hold msys2-cn |
(可选)让 MSYS2 能够访问 Windows 的环境
默认情况下 MSYS2 无法访问 Windows 的环境,需要加上参数 -use-full-path
运行,或者设置环境变量:
1 | [Environment]::SetEnvironmentVariable("MSYS2_PATH_TYPE", "inherit", "User") |
设置完成后,家目录仍不互通。
(可选)让 Windows 能够访问 MSYS2 的环境
默认情况下 Windows 无法调用 MSYS2 中安装的工具,可以将它添加到 PATH:
1 | [Environment]::SetEnvironmentVariable("PATH", $([Environment]::GetEnvironmentVariable("PATH", "User") + ";$(scoop prefix msys2-cn)\usr\bin"), "User") |
危险:这种行为可能会造成系统不稳定,这里将其添加到最后尽量避免出现问题,家目录也不互通。一般加 UCRT64 解决编译问题就够了。
配置 Python 开发环境
这里我们使用 scoop 安装最新版 Python(MSVC),并配置好国内镜像。
安装最新版 Python
1 | scoop install python |
更换 Pypi 镜像源
1 | # Use TUNA's mirror |
或者使用 chsrc:
1 | scoop install chsrc |
安装不同版本的 Python
1 | scoop install python38 |
切换 Python 版本
1 | scoop reset python |
安装 Miniconda
1 | scoop install extras/miniconda3 |
配置 NodeJS 开发环境
安装最新版
1 | scoop install nodejs |
安装长期支持版本
1 | scoop install nodejs-lts |
NPM 换源
使用 npm:
1 | npm config set registry https://registry.npmmirror.com |
或者使用 chsrc:
1 | scoop install chsrc |
安装 PNPM
使用 npm:
1 | npm install -g pnpm |
或者使用 scoop
1 | scoop install pnpm |
配置 MySQL 开发环境
1 | scoop install mysql mysql-shell |
配置 Java 开发环境
安装 OpenJDK
1 | scoop install java/openjdk |
安装 Maven
1 | scoop install maven |
Maven 换源
1 | # Use NJU mirror |
安装 Gradle
1 | scoop install gradle |
Gradle 换源
1 | # Use NJU mirror |
安装 Tomcat
1 | scoop install tomcat |
配置 Android 开发环境
安装 Android Studio:
1 | scoop install extras/android-studio |
安装 Android 命令行工具(可选)
适合于 C 盘够大或者 Scoop 安装到 D 盘的情况。否则建议使用下一种方式。
1 | scoop install android-clt |
需要注意 Scoop 会自动设置 ANDROID_HOME
(Android SDK 目录)环境变量,请在 Android Studio 内确认 File | Settings | Languages & Frameworks | Android SDK -> Android SDK Location 为执行 scoop prefix android-clt
后显示的路径。配置不当会造成安卓虚拟机无法启动。
之后 Android SDK 将安装到 Scoop 目录且被 Scoop 持久化。
更改 Android SDK 目录
默认为 %LocalAppData%\Android\Sdk
,由于 Android SDK 体积较大,我们可能需要将其存放到其它分区。
https://developer.android.com/tools/variables
1 | # Set ANDROID_HOME |
打开 Android Studio 安装 Android SDK。注意 Android Studio 不会自动读取环境变量,需要自行设置安装目录。安装目录选择错误可能会导致安卓虚拟机无法使用。
之后使用以下命令添加到 PATH:
1 | [Environment]::SetEnvironmentVariable("PATH", "$Env:ANDROID_HOME\bin;$Env:ANDROID_HOME\tools\bin;$Env:ANDROID_HOME\platform-tools;" + [Environment]::GetEnvironmentVariable("PATH", "User"), "User") |
更改 Android SDK 用户目录
默认为 ~\.android
,此目录可能会存放安卓虚拟机的镜像、ADB 密钥、配置文件,我们可能需要将其存放到其它分区。
1 | # Set ANDROID_USER_HOME |
仅更改 Android AVD 目录
默认为 $ANDROID_EMULATOR_HOME\avd
【默认为 $ANDROID_USER_HOME\avd
(默认为 ~\.android\avd
)】,此目录会存放安卓虚拟机的镜像文件,我们可能需要将其存放到其它分区。
1 | # Set ANDROID_EMULATOR_HOME |
安装 Android SDK
需要确保能够访问 https://dl.google.com (浏览器访问出现 404. That’s an error. That’s all we know.
为正常现象,正常情况为国内 IP 可以裸连)
运行 Android Studio
1 | . "$(scoop prefix android-studio)\bin\studio64.exe" |
拒绝收集隐私信息
一般无需配置代理
自定义安装
更改 Android SDK 安装路径(建议)
汉化
前往 File | Settings | Plugins
下载 IDEA 汉化插件包,手动安装。
如果无法安装(提示版本号不匹配),到这个 GitHub 仓库上下载修改过的然后手动安装。
注意第三方修改版插件可能会存在安全风险。
安装完成后点击 Apply,随后即可到 File | Settings | Appearance & Behavior | System Settings | Language and Region 设置为中文。
配置 Flutter 开发环境
1 | scoop install flutter |
Flutter 换源
1 | # Use flutter-io.cn |
可能还需:
配置 Go 开发环境
1 | scoop install go |
设置 GOPROXY
1 | # Use Goproxy.cn |
或者使用 chsrc:
1 | scoop install chsrc |
配置 CGO
部分项目要求 CGO,请按照上文配置 C/C++ 开发环境。
配置 C# 开发环境
建议安装 Visual Studio,当然也可以继续用 Visual Studio Code。
1 | scoop install dotnet-sdk |
配置 Rust 开发环境
由于不安装 Visual Studio(MSVC),这里使用 GCC 版的 Rust。
请先按照上文配置 C/C++ 开发环境。
方法一:使用 Rustup 安装
官方建议的方式。但需要注意 Rustup 能自己管理版本,rustup update
会把自己升级,所以请先使用 Scoop 更新 Rustup。
1 | # Set Rustup mirror |
方法二:使用 Scoop 安装
1 | scoop install rust-gnu |
方法三:使用 MSYS2 安装
请先按照上文配置 C/C++ 开发 MSYS2 环境。
1 | ucrt64 -c "pacman --noconfirm -S mingw-w64-ucrt-x86_64-rust" |
Cargo 换源
1 | mkdir "$env:USERPROFILE\.cargo" |
或者使用 chsrc:
1 | scoop install chsrc |
配置 Ruby 开发环境
请先按照上文配置 C/C++ 开发 MSYS2 环境。
1 | scoop install ruby |
Rubygems 换源
1 | # Use USTC mirror |
或者使用 chsrc:
1 | scoop install chsrc |
配置 WSL2 + Docker 开发环境
如果您想使用 VMware / VirtualBox 等虚拟机,请不要使用此方案,此方案会启用 Hyper-V,CPU 硬件虚拟化指令被 Hyper-V 独占,会导致第三方虚拟机运行卡顿。
以下命令需要使用管理员权限执行,可以按 Win + X 打开 终端管理员。
1 | # Install WSL2 |
安装完成后重启电脑即可使用 Docker Desktop 客户端。