最近抽空将本地的开发工具都升级了一遍,以前都是用一个装一个,多年下来也积累了不少,虽说常用的也都用nvmuv管理了,但每个都升级一边也着实挺累。想起来以前折腾PowerShell时安装的scoop,觉得还是全部交给它把,反正用起来和brew一样丝滑,不用配置环境变量,还不怎么污染注册表。

安装Scoop

安装Scoop,需要PowerShell5以上,我本地用的是pws7,所以照着官方文档安装即可:Scoop

1
2
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

已经安装过的就执行下scoop update更新一下就可以了。

安装后的目录如下所示:

1
2
3
4
5
6
apps      -- 安装的软件在这个目录下
buckets -- 已经添加的软件仓库
cache -- 缓存目录(下载时的 .zip 或 .msi 安装包。安装完可清理。)
modules -- 存放 Scoop 自身的 PowerShell 模块
persist -- 配置目录(例如 maven:setting.xml等)
shims -- 类似于linux的bin目录,安装的软件都会在这里生成shell脚本,省的去配置环境变量了。

配置Scoop

默认Scoop会把各类软件都安装在C:\Users\用户名\scoop,为了节省C盘的空间,我们将其配置在D:\scoop目录。

1.将整个C:\Users\用户名\scoop剪切到D:盘。

2.修改环境变量

右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量

在“用户变量”中:

  • 修改(或新建)变量名 SCOOP,值为 D:\Scoop
  • 修改 Path 变量,将原本指向 C:\...\scoop\shims 的路径改为 D:\Scoop\shims

3.检查一下还有没有遗漏的

1
scoop config

如果还有C:这种的,都替换一下。

对于那种将配置过的开发环境托管到scoop的同学,需要自己将自己配置的所有环境变量统统删除。

nvm为例(最好是直接删掉,大部分环境使用scoop安装的时候都会自动配置):

1
2
[Environment]::SetEnvironmentVariable("NVM_HOME", $null, "User")
[Environment]::SetEnvironmentVariable("NVM_SYMLINK", $null, "User")

Scoop常用命令

Command Summary
update 更新
list 显示已安装软件
install 安装(全局安装 加 -g)
uninstall 卸载
search 搜索
status 检查更新(outdated)
bucket buckets
cache 缓存
reset 重设(通常用于多版本切换)
cleanup 清理下载的旧版
help 帮助
shim shim

除了installuninstallupdateupdate以外,通常使用的命令就是

清理过时(或者安装完的)的安装包

1
scoop cache rm *

查看社区的bucket列表

1
scoop bucket known

添加bucket

1
2
3
4
5
6
# 添加了多种软件包(带UI的)
scoop bucket add extras
# 安装历史版本时需要这个源
scoop bucket add versions
# 安装jdk
scoop bucket add java

其他常用bucket:https://rasa.github.io/scoop-directory/by-score.html

指定仓库安装

1
scoop install <bucket_Name>/<packName>

切换jdk(或者其他什么的都可以)版本

1
2
3
4
# https://github.com/ScoopInstaller/Java/wiki
scoop reset temurin21-jdk

scoop reset temurin8-jdk

清理所有旧版

1
scoop cleanup *

查看已安装的程序

1
2
3
scoop list
# 如果只看名字
scoop list | Select-Object -ExpandProperty Name

查看更新

1
scoop status

更新版本,仓库

1
scoop update

自身诊断

1
scoop checkup

全局安装git

1
2
# 需要在开发者那里开启sudo
sudo scoop install git -g

查看有哪些保留的安装包

1
scoop cache show

配置代理

国内使用这些工具,不可避免得要配置这些。(配置加速地址也行)

设置代理

1
scoop config proxy 127.0.0.1:1080

切记不要使用socks5://127.0.0.1:1080 ,兼容性太差了

关闭代理

1
scoop config rm proxy

使用用户代理

1
scoop config proxy currentuser@default

配置Aria2

如果网络不好,需要断点续传或者多线程加速下载,可以将其替换为aria2。

安装aria2

1
scoop install aria2

关闭aria2

如果不想用,可以使用如下命令关闭

1
scoop config aria2-enabled false

aria2其他参数配置

1
2
3
4
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

功能增强

可以安装两个增强包,一个是软件补全,一个是搜索增强

1
2
3
4
5
# 软件名称补全
scoop install scoop-completion

# 搜索增强
scoop install scoop-search

安装完成后,在PowerShell的配置文件中,加入如下代码:

1
2
3
4
5
6
7
8
9
# 导入 Scoop 补全模块
if (Get-Module -ListAvailable -Name scoop-completion) {
Import-Module scoop-completion
}

# 使用 scoop-search 完美接管原生 scoop search 命令
if (Get-Command scoop-search -ErrorAction SilentlyContinue) {
. ([ScriptBlock]::Create((& scoop-search --hook | Out-String)))
}

这样,使用scoop install zulu,按下tab键盘就可以联想出后续的名称。

scoop intall

我安装的一些软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
scoop list | Select-Object -ExpandProperty Name      
Installed apps:
7zip
composer
FantasqueSansMono-NF
ffmpeg
geekuninstaller
git
git-lfs
go
gradle
JetBrainsMono-NF
libwebp
maven
neovim
nginx
nvm
pandoc
php
sbt
scala2
scoop-completion
scoop-search
temurin-lts-jdk
temurin11-jdk
temurin17-jdk
temurin21-jdk
temurin8-jdk
uv
visualvm
zulufx17-jdk
7zip

还有一些增强的命令也可考虑安装

1
2
# 一键安装
scoop install ripgrep fd jq make sed gawk grep yq fzf imagemagick poppler curl wget gh zoxide bat exiftool main/ast-grep miller xsv