更改Scoop默认安装位置
更改 Scoop 包管理器的默认安装路径,便于重装系统后快速恢复
#type / howto
#status / evergreen
更改 Scoop 默认安装位置
[!info] related notes
- 相关概念: Scoop, 使用 Scoop 安装 Node, 使用 Scoop 安装 Java
目标
将 Scoop 的安装目录从默认的 C:\Users\<用户名>\scoop 迁移到其他盘符(如 D 盘),这样重装系统后只需重新指向环境变量,大部分软件无需重装。
步骤
方案一:安装前配置(最推荐)
在安装 Scoop 之前设置环境变量:
# 设置用户软件安装到 D:\Scoop
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
# 设置全局软件安装到 D:\ScoopGlobal (需管理员权限)
$env:SCOOP_GLOBAL='D:\ScoopGlobal'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
# 然后再执行官方的安装命令
irm get.scoop.sh | iex
方案二:已安装后迁移
如果 Scoop 已经安装在默认路径,按以下步骤迁移:
1. 移动 Scoop 目录
# 关闭所有使用 Scoop 安装的程序
# 移动整个 scoop 目录
Move-Item "$env:USERPROFILE\scoop" "D:\Scoop"
# 设置环境变量
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
2. 移动全局应用(如有)
# 需管理员权限
Move-Item "C:\ProgramData\scoop" "D:\ScoopGlobal"
$env:SCOOP_GLOBAL='D:\ScoopGlobal'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
3. 更新 PATH 环境变量
# 检查 PATH 中是否有旧路径需要更新
$env:PATH -split ';' | Where-Object { $_ -match 'scoop' }
# 如果有旧路径,手动在系统设置中更新为新路径
4. 验证迁移
# 检查 scoop 是否正常工作
scoop status
scoop list
验证
# 确认安装路径
scoop config root
# 应输出 D:\Scoop
# 安装一个测试应用确认
scoop install curl
where.exe curl
# 应指向 D:\Scoop\shims\curl.exe
常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
scoop 命令找不到 | PATH 未更新 | 将 D:\Scoop\shims 加入 PATH |
| 全局应用不生效 | SCOOP_GLOBAL 未设置 | 以管理员身份设置 Machine 级别环境变量 |
| shim 文件指向旧路径 | 移动后 shim 未更新 | scoop reset * 重建所有 shim |
| 重装系统后恢复 | 环境变量已设好 | 只需重新安装 scoop 本体,然后 scoop install 所有应用 |
重装系统后恢复流程
# 1. 设置环境变量指向已有目录
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
# 2. 重新安装 scoop 本体
irm get.scoop.sh | iex
# 3. scoop 会检测到已有应用,执行 reset 恢复
scoop reset *