Windows 재설치 후 scoop과 winget으로 개발 환경 빠르게 복구하기

이 글에 소개된 모든 소프트웨어는筆者가 실사용하는 것으로,仅供参考용입니다.

1. scoop으로 소프트웨어 관리하기


scoop 설치

# 실행 정책 변경
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# scoop 설치 스크립트 다운로드 (사용자 디렉터리에서 실행 시 실패할 수 있으므로 다른 디렉터리에서 실행)
irm get.scoop.sh -outfile 'install.ps1'

# 설치 스크립트 실행 및 scoop 및 전역 앱 설치 디렉터리 지정
.\install.ps1 -ScoopDir 'D:\dev-tools\scoop' -ScoopGlobalDir 'D:\dev-tools\scoopGlobal'

scoop에 프록시 설정

scoop config proxy 127.0.0.1:10809

bucket 추가

bucket 추가 전 git 설치 필요. bucket 추가 실패 시 git에 프록시 설정

# 공식 bucket
scoop bucket add versions
scoop bucket add extras
scoop bucket add java
scoop bucket add nirsoft

# 주요 bucket
scoop bucket add aki https://github.com/akirco/aki-apps
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop bucket add extras-cn https://github.com/Scoopforge/Extras-CN
scoop bucket add winapps https://github.com/WinApps-share/WinApps-bucket

# 더 다양한 소프트웨어 검색 시 추가
scoop bucket add apps https://github.com/kkzzhizhou/scoop-apps

추가 권장 사항

다음은 scoop 사용성을 높이는 선택적 제안사항

####便捷 스크립트

easy-scoop.bat 생성하여 scoop 업데이트 및 정리 실행

@echo off
chcp 65001 >nul
powershell -Command "Write-Host 'Scoop 및 소프트웨어 업데이트...' -ForegroundColor Gray"
powershell -Command scoop update *
powershell -Command "Write-Host ''"
powershell -Command "Write-Host '이전 소프트웨어 버전 정리...' -ForegroundColor Gray"
powershell -Command scoop cleanup *
powershell -Command "Write-Host ''"
powershell -Command "Write-Host '다운로드 캐시 삭제...' -ForegroundColor Gray"
powershell -Command scoop cache rm *
powershell -Command "Write-Host ''"
powershell -Command "Write-Host '완료!' -ForegroundColor Green"
powershell -Command "Write-Host ''"
powershell -Command "Write-Host '남은 캐시:' -ForegroundColor Cyan"
powershell -Command scoop cache show
pause

검색 속도 향상

scoop-search 설치로 검색 효율성 개선

scoop install scoop-search

# 설치 후 검색 명령어 사용
scoop-search <package>

단축키 생성

scoop으로 설치한 앱에便捷하게 접근하려면 다음 디렉터리를 데스크톱에 추가: C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps

Git 설치

scoop install git

Git 설정

# Windows 자격 증명 관리자를 사용하여 원격 저장소의 사용자명 및 비밀번호 저장
git config --global credential.helper manager

# 우클릭 메뉴 통합
reg import "$(scoop prefix git)\install-context.reg"

# 파일 연결 설정
reg import "$(scoop prefix git)\install-file-associations.reg"

# Git이 프록시 사용하도록 설정
git config --global http.proxy http://127.0.0.1:10809
git config --global https.proxy https://127.0.0.1:10809

Java 설치

scoop이 자동으로 환경 변수 설정하므로 추가 작업 불필요

scoop install java/openjdk8-redhat
scoop install java/openjdk17

# Java 버전 전환
scoop reset openjdk17

Maven 설치

scoop install maven

저장소 경로 및 미러 설정

scoop은 maven의 conf, lib/ext 등 영구화가 필요한 디렉터리를 기호 링크를 통해 persist 디렉터리로 연결. 업데이트/제거 시 데이터 손실 없음

설정 파일 경로: <scoop디렉터리>\persist\maven\conf\settings.xml

<!-- 저장소 경로 설정 -->
<localRepository>D:\dev-projects\repository\maven_repo</localRepository>

<!-- 미러 설정 -->
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

Gradle 설치

scoop install gradle

저장소 경로 설정

scoop이 자동으로 GRADLE_USER_HOME 환경 변수 추가. 기본 저장소는 persist 디렉터리에 있어 C 드라이브 영향 없으므로 수정 불필요

[Environment]::SetEnvironmentVariable("GRADLE_USER_HOME", "D:\dev-projects\repository\gradle_repo", "User")

Node.js + npm 설치

# 최신 장기 지원 버전
scoop install nodejs-lts

# 특정 버전
scoop install versions/nodejs20

npm 미러 설정

npm config set registry https://registry.npmmirror.com

npm 전역 디렉터리 설정

# 순서대로: 전역 명령 도구, 캐시; 저장소는 <prefix>/node_modules 디렉터리
npm config set prefix "D:\dev-projects\repository\node_repo"
npm config set cache "D:\dev-projects\repository\node_repo\cache"

prefix를 환경 변수에 추가해야 npm -g로 설치한 도구를 명령어로 찾을 수 있음

[Environment]::SetEnvironmentVariable("Path", "D:\dev-projects\repository\node_repo;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User")

pnpm 설치

scoop install pnpm

pnpm 미러는 npm 설정을 따르므로 추가 설정 불필요

pnpm 전역 디렉터리 설정

# 순서대로: 전역 명령 도구, 저장소, 캐시, 상태, 전역 설치 패키지
pnpm config set global-bin-dir "D:\dev-projects\repository\pnpm_repo\global-bin"
pnpm config set store-dir "D:\dev-projects\repository\pnpm_repo\store"
pnpm config set cache-dir "D:\dev-projects\repository\pnpm_repo\cache"
pnpm config set state-dir "D:\dev-projects\repository\pnpm_repo\state"
pnpm config set global-dir "D:\dev-projects\repository\pnpm_repo\global"

global-bin-dir를 환경 변수에 추가해야 pnpm -g로 설치한 도구를 명령어로 찾을 수 있음

[Environment]::SetEnvironmentVariable("Path", "D:\dev-projects\repository\pnpm_repo\global-bin;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User")

Python 설치

설치한 uv는 Python 생태계를 위한 패키지 관리자로, uv를 통해 다중 버전 공존, 버전 관리, 구성 요소管理等 복잡한 기능 수행 가능

scoop install uv

이제 pip를 완전히 포기 가능. 모든 명령어를 uv로 대체 가능

미러 설정

[Environment]::SetEnvironmentVariable("UV_DEFAULT_INDEX", "https://pypi.tuna.tsinghua.edu.cn/simple", "User")

저장소 경로 설정

# 순서대로: Python 설치 경로, 캐시, 도구, 실행 데이터, 상태
[Environment]::SetEnvironmentVariable("UV_PYTHON_INSTALL_DIR", "D:\dev-projects\repository\uv_repo\python", "User")
[Environment]::SetEnvironmentVariable("UV_CACHE_DIR", "D:\dev-projects\repository\uv_repo\cache", "User")
[Environment]::SetEnvironmentVariable("UV_TOOL_DIR", "D:\dev-projects\repository\uv_repo\tools", "User")
[Environment]::SetEnvironmentVariable("UV_DATA_DIR", "D:\dev-projects\repository\uv_repo\data", "User")
[Environment]::SetEnvironmentVariable("UV_STATE_DIR", "D:\dev-projects\repository\uv_repo\state", "User")

Python 설치

Python을 직접 설치하지 않아도 uv가 실행 시 필요한 버전을 자동으로 가져옴 전역 기본 버전을 설치하여 다른 도구에서 호출 가능

# --default 파라미터는 해당 버전을 기본 버전으로 설정. 터미널에 python 입력 시 이 버전 사용
uv python install --default 3.13

# 터미널 환경 업데이트로 uv 관리 Python을 shell에서 사용 가능하게 함 (첫 설치 시에만 필요)
uv python update-shell

Rust 설치

설치한 rustup은 Rust 생태계를 위한 패키지 관리자로, rustup을 통해 다중 버전 공존, 버전 관리, 구성 요소管理等 복잡한 기능 수행 가능

scoop install rustup

rustup의 자기 업데이트 비활성화하여 rustup 자체 버전을 scoop이 관리하도록 함

rustup set auto-self-update disable

MSVC 환경 설치

Visual Studio 빌드 도구 다운로드 후 설치. 설치 시 x64/x86용 MSVC 빌드 도구Windows 11 SDK 두 구성 요소만 선택安装即可.

이전에 설치했다가 삭제한 경우 설치 경로 수정 불가할 수 있음. 레지스트리에서 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup 내부 내용 삭제 후 다시 설치하면 됨.

저장소 경로 설정 (권장하지 않음)

scoop이 자동으로 RUSTUP_HOMECARGO_HOME 환경 변수 추가. 기본 저장소는 persist 디렉터리에 있어 C 드라이브 영향 없으므로 수정 불필요. 참고: 수정 실행 시 persist 디렉터리 파일을 이동해야 파일을 찾을 수 있음

# rust 툴체인 설치 주소
[Environment]::SetEnvironmentVariable("RUSTUP_HOME", "D:\dev-projects\repository\rust_repo\.rustup", "User")

# cargo 저장소 주소
[Environment]::SetEnvironmentVariable("CARGO_HOME", "D:\dev-projects\repository\rust_repo\.cargo", "User")

rustup 미러 설정

# 컴파일러 미러
[Environment]::SetEnvironmentVariable("RUSTUP_DIST_SERVER", "https://mirrors.ustc.edu.cn/rust-static", "User")

# 툴체인 미러
[Environment]::SetEnvironmentVariable("RUSTUP_UPDATE_ROOT", "https://mirrors.ustc.edu.cn/rust-static/rustup", "User")

cargo 미러 설정

설정 파일 경로: <CARGO_HOME>\config.toml

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

[net]
git-fetch-with-cli = true

MySQL 설치

scoop install mysql-lts

MySQL 시작

현재 터미널을 닫지 않고 유지. 새 터미널에서 mysql -u root -p로 MySQL 접근

mysqld --console

MySQL 서비스로 등록

관리자 권한으로 실행; 서비스 등록 시 부팅 시 자동 시작되어 수동 시작 불필요

# 서비스 등록
mysqld install MySQL --defaults-file="D:\dev-tools\scoop\apps\mysql-lts\current\my.ini"

# 서비스 시작 (powershell에서는 sc.exe, CMD에서는 sc 사용 가능)
sc.exe start MySQL

# 서비스 중지
sc.exe stop MySQL

# 서비스 삭제
sc.exe delete MySQL

Redis 설치

scoop install redis

<scoop디렉터리>\apps\redis\current\start.bat 스크립트로 Redis 시작. scoop 설치 버전은 서비스 포함이 아니어서 서비스로 등록 불가.

office-tool-plus 설치

scoop install extras/office-tool-plus

<scoop디렉터리>\apps\office-tool-plus\<version>\Office Tool Plus.exe로 소프트웨어 시작. current 디렉터리에서 시작하면 설치 실패함. 이유 참고: 해당 issue

기타 소프트웨어

소프트웨어 자동 업데이트 비활성화하여 중복 설치 방지

scoop install extras/another-redis-desktop-manager
scoop install extras/cherry-studio
scoop install extras/notepadplusplus
scoop install extras/potplayer
scoop install extras/reqable
scoop install extras/ayugram
scoop install extras/stranslate
scoop install nirsoft/searchmyfiles
scoop install extras-cn/m3u8-downloader
scoop install winapps/xterminal
scoop install winapps/pixpin

확장 작업

# Notepad++를 파일 우클릭 메뉴에 추가하여 빠른 열기 가능
reg import "$(scoop prefix notepadplusplus)\install-context.reg"

2. winget으로 소프트웨어 설치하기


자주 사용하거나 강제 업데이트가 필요한 소프트웨어는 winget으로 관리하여 중복 설치 방지

winget install Google.Chrome
winget install Tencent.WeType -i

# -l 명령으로 설치 디렉터리 지정
winget install Alibaba.aDrive -l "D:\dev-tools\WinGet\aDrive"
winget install Alibaba.QuarkCloudDrive -l "D:\dev-tools\WinGet\QuarkCloudDrive"
winget install NetEase.CloudMusic -l "D:\dev-tools\WinGet\CloudMusic"

# -l 호환성이 안 좋은 소프트웨어는 -i 인터랙티브 설치 사용하여 수동 설치 경로 지정
winget install Baidu.BaiduNetdisk -l "D:\dev-tools\WinGet\BaiduNetdisk" -i
winget install Tencent.QQ.NT -l "D:\dev-tools\WinGet\QQNT" -i
winget install Tencent.WeChat -l "D:\dev-tools\WinGet\WeChat" -i
winget install JetBrains.IntelliJIDEA.Ultimate -l "D:\dev-tools\WinGet\IntelliJIDEA" -i
winget install Microsoft.VisualStudioCode -l "D:\dev-tools\WinGet\VisualStudioCode" -i

태그: Windows scoop winget package-manager development-environment

6월 22일 00:52에 게시됨