VSCodium(codium) 설치 스크립트 추가 및 README/NECESSARY 문서 반영

This commit is contained in:
mcchae committed 2026-11-05 08:44:42 +09:00
1 parent b41d2f68f3
commit 687ebb0e0a
7 files changed
+709 -8

No files matched your search

+29 -5
View File
@@ -17,6 +17,7 @@
### 🛠️ 3. 개발 유틸리티
* **[lazygit](https://github.com/jesseduffield/lazygit)** - Git 버전 관리를 키보드로 능숙하게 제어하는 시각적 TUI
* **[uv](https://docs.astral.sh/uv/)** - 초고속 Rust 기반 Python 패키지 & 프로젝트 통합 관리자
* **[VSCodium (codium)](https://vscodium.com/)** - VS Code에서 파생되었으나 원격 측정(Telemetry)·추적기·독점 요소를 제거하고 최소한의 필요한 핵심 기능만 남긴 순수 오픈소스 코드 에디터
### 🤖 4. AI 개발 에이전트 & 도우미
* **[Antigravity CLI (agy)](https://antigravity.google)** - Antigravity 2.0 플랫폼의 경량화 터미널 코딩 에이전트 CLI
@@ -52,6 +53,9 @@ curl -fsSL "https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-lazy
# uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# VSCodium (codium)
curl -fsSL "https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.sh?ref_type=heads" | bash
# 4. AI 개발 에이전트 & 도우미
# Antigravity CLI (agy)
curl -fsSL "https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-agy.sh?ref_type=heads" | bash
@@ -126,6 +130,16 @@ curl -fsSL "https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-grap
irm https://astral.sh/uv/install.ps1 | iex
```
* **VSCodium (codium):**
* **CMD:**
```cmd
powershell -ExecutionPolicy Bypass -c "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; $t=\"$env:TEMP\install-codium.ps1\"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.ps1' -OutFile $t; & $t"
```
* **PowerShell:**
```powershell
$t="$env:TEMP\install-codium.ps1"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.ps1' -OutFile $t; powershell -ExecutionPolicy Bypass -File $t
```
#### 4. AI 개발 에이전트 & 도우미
* **Antigravity CLI (agy):**
* **CMD:**
@@ -252,23 +266,33 @@ uv tool install <cli-tool> # 독립된 CLI 도구 글로벌 설치
---
### 6. AI 개발 에이전트 (Antigravity, Claude, Codex)
### 6. VSCodium (codium)
VS Code에서 출발했으나 원격 측정(Telemetry)·추적기·독점 요소를 모두 걷어내고 **개발에 꼭 필요한 최소한의 핵심 기능만 남긴 순수 오픈소스 코드 에디터**입니다.
```bash
codium . # 현재 디렉토리를 VSCodium으로 열기
codium <file> # 특정 파일 바로 열기
codium --install-extension <ext-id> # Open VSX 확장 플러그인 설치
```
#### 6.1. Antigravity CLI (agy)
---
### 7. AI 개발 에이전트 (Antigravity, Claude, Codex)
#### 7.1. Antigravity CLI (agy)
Google DeepMind의 Antigravity 플랫폼 터미널 코딩 에이전트입니다.
```bash
agy # 대화형 코딩 세션 시작
agy -p "작업 내용" # 단발성 프롬프트 실행
```
#### 6.2. Claude Code
#### 7.2. Claude Code
Anthropic의 공식 터미널 기반 대화형 코딩 어시스턴트입니다.
```bash
claude # 대화형 코딩 세션 시작
claude -p "작업 내용" # 단발성 프롬프트 실행
```
#### 6.3. Codex CLI
#### 7.3. Codex CLI
OpenAI의 공식 터미널 기반 로컬 대화형 코딩 에이전트입니다.
```bash
codex auth # 인증 로그인
@@ -278,7 +302,7 @@ codex -p "작업 내용" # 단발성 빌드/수정 지시
---
### 7. graphify
### 8. graphify
코드베이스와 문서를 지식 그래프(Knowledge Graph)로 인덱싱하여 복잡한 프로젝트 구조를 빠르게 분석하고 질문에 정밀하게 답하도록 돕는 도구입니다.
```bash
graphify . # 현재 프로젝트 그래프 빌드/갱신
+40
View File
@@ -23,6 +23,7 @@
### 🛠️ 3. 개발 유틸리티 & 웹 터미널
* **[lazygit](https://github.com/jesseduffield/lazygit)** - Git 버전 관리를 키보드로 능숙하게 제어하는 시각적 TUI
* **[uv](https://docs.astral.sh/uv/)** - 초고속 Rust 기반 Python 패키지 & 프로젝트 통합 관리자
* **[VSCodium (codium)](https://vscodium.com/)** - VS Code 오픈소스에서 원격 측정(Telemetry)·추적기·독점 요소를 모두 덜어내고 개발에 꼭 필요한 최소한의 핵심 기능만 남긴 순수 오픈소스 코드 에디터
### 🤖 4. AI 개발 에이전트 (AI Agents)
* **[Antigravity CLI (agy)](https://antigravity.google)** - Antigravity 2.0 플랫폼의 경량화 터미널 코딩 에이전트 CLI
@@ -112,6 +113,11 @@
> source ~/.bashrc
> ```
* **VSCodium (codium):**
```bash
curl -fsSL "https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.sh?ref_type=heads" | bash
```
#### 🤖 4. AI 개발 에이전트 (AI Agents)
* **Antigravity CLI (agy):**
@@ -284,6 +290,16 @@
> [System.Environment]::SetEnvironmentVariable('Path', $env:USERPROFILE + '\.local\bin;' + [System.Environment]::GetEnvironmentVariable('Path', 'User'), 'User')
> ```
* **VSCodium (codium):**
* **CMD 창에서 설치 시:**
```cmd
powershell -ExecutionPolicy Bypass -c "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; $t=\"$env:TEMP\install-codium.ps1\"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.ps1' -OutFile $t; & $t"
```
* **파워쉘 창에서 설치 시:**
```powershell
$t="$env:TEMP\install-codium.ps1"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.ps1' -OutFile $t; powershell -ExecutionPolicy Bypass -File $t
```
#### 🤖 4. AI 개발 에이전트 (AI Agents)
* **Antigravity CLI (agy):**
@@ -605,6 +621,30 @@ lazygit # 가동 명령어
| `P` / `p` | 원격 저장소에 Push / Pull 요청 실행 |
| `?` | 전체 단축키 치트 시트 일람 로드 |
#### 3.2. uv
Rust로 작성된 초고속 차세대 Python 패키지 및 프로젝트 통합 관리 도구입니다. 기존의 `pip`, `pip-tools`, `virtualenv`, `pyenv`, `pipx`, `poetry`를 단 하나의 단일 바이너리로 완벽히 대체하며 10~100배 빠른 속도를 제공합니다.
```bash
uv venv # 현재 폴더에 가상환경(.venv) 초고속 생성
uv pip install <package> # 가상환경에 패키지 설치
uv run <script.py> # 가상환경을 자동 구성하여 스크립트 실행
uv tool install <cli-tool> # CLI 도구를 격리된 환경에 글로벌 설치
```
#### 3.3. VSCodium (codium)
Microsoft의 **Visual Studio Code(VS Code) 오픈소스 코드베이스에서 출발**했으나, Microsoft의 독점 라이선스 래퍼·원격 측정(Telemetry)·사용자 추적(Tracking) 및 불필요한 부가 요소를 완전히 걷어내고 **개발에 꼭 필요한 최소한의 핵심 에디터 기능만 남긴 순수 오픈소스(MIT 라이선스) 코드 에디터**입니다.
* **VS Code 기반의 친숙함과 완벽한 호환성** — VS Code와 동일한 에디터 코어, 단축키, UI, 디버거, Git 통합 환경을 그대로 제공
* **최소한의 핵심 요소만 탑재 (Zero Telemetry)** — 백그라운드 데이터 수집이나 불필요한 독점 서비스 연동 없이 가볍고 깨끗하게 동작
* **오픈소스 마켓플레이스(Open VSX) 기본 연동** — 독점 마켓플레이스 대신 개방형 확장 생태계인 [Open VSX Registry](https://open-vsx.org/)를 기본 사용하여 필요한 확장 기능만 깔끔하게 설치 가능
```bash
codium . # 현재 디렉토리를 VSCodium으로 열기
codium <file> # 특정 파일 바로 열기
codium --install-extension <ext-id> # 확장 플러그인 설치
codium --list-extensions # 설치된 확장 플러그인 목록 확인
```
---
### 🤖 4. AI 개발 에이전트 (AI Agents)
@@ -0,0 +1,40 @@
# VSCodium (codium) 설치 스크립트 및 문서 추가 계획 (INSTALL-CODIUM-IMP-PLAN)
## 1. 개요
Visual Studio Code(VS Code)의 오픈소스 코드베이스에서 마이크로소프트의 원격 측정(Telemetry)/트래킹 및 불필요한 독점 요소를 완전히 제거하고 **개발에 꼭 필요한 순수 핵심 기능만 남긴 경량 오픈소스 바이너리 에디터 `VSCodium (codium)`**의 크로스 플랫폼 자동 설치 스크립트(`install-codium.sh`, `install-codium.ps1`)를 제작하고 `README.md` 및 `NECESSARY.md` 문서에 반영합니다.
```mermaid
flowchart TD
Start([install-codium 실행]) --> OSCheck{운영체제 감지}
OSCheck -- macOS --> BrewInstall["Homebrew Cask 설치<br/>(brew install --cask vscodium)<br/>또는 GitHub Release 폴백"]
OSCheck -- Linux --> LinuxRepo["공식 패키지 저장소 등록 및 설치<br/>APT (Debian/Ubuntu) / DNF·Zypper (RHEL/SUSE) /<br/>Pacman·AUR (Arch) / GitHub Release tarball 폴백"]
OSCheck -- Windows --> WinInstall["winget install --id VSCodium.VSCodium<br/>또는 GitHub Releases UserSetup.exe<br/>무인 설치(/VERYSILENT) 및 PATH 연결"]
BrewInstall & LinuxRepo & WinInstall --> CLI["codium CLI 명령어 및 PATH 검증"]
CLI --> Done([설치 완료])
```
## 2. 작업 단계 및 체크리스트
### 단계 1: 실행 계획 수립
- [x] 작업 계획서(`VIBE-WORK/261104/INSTALL-CODIUM-IMP-PLAN.md`) 작성
### 단계 2: Unix / macOS용 `install-codium.sh` 구현
- [x] macOS: Homebrew를 통한 `brew install --cask vscodium` 설치 및 `/Applications/VSCodium.app/Contents/Resources/app/bin/codium`을 `~/.local/bin/codium`에 심볼릭 링크 연결
- [x] Linux (Debian/Ubuntu): https://vscodium.com 공식 가이드에 따라 GPG 키(`/usr/share/keyrings/vscodium-archive-keyring.gpg`) 및 APT 저장소(`https://download.vscodium.com/debs`) 등록 후 `sudo apt-get install -y codium`
- [x] Linux (Fedora/RHEL/Rocky/openSUSE): 공식 RPM 저장소(`https://download.vscodium.com/rpms/`) 및 GPG 키 등록 후 `dnf` / `zypper` 설치
- [x] Linux (Arch): `yay` / `paru` 등 AUR 헬퍼 또는 Snap/Flatpak/GitHub Releases(`VSCodium-linux-<arch>-<ver>.tar.gz`) 3단계 방어 폴백 지원
- [x] 실행 권한 부여 및 `bash -n` 문법 검증
### 단계 3: Windows용 `install-codium.ps1` 구현
- [x] 1차: 공식 권장 방식인 `winget install -e --id VSCodium.VSCodium` 설치 시도
- [x] 2차(폴백): `winget`이 없거나 실패할 경우 GitHub Releases API(`VSCodium/vscodium`)에서 아키텍처(`x64`/`arm64`)에 맞는 최신 `VSCodiumUserSetup-<arch>-<version>.exe` 에셋을 다운로드하여 무인 설치(`/VERYSILENT /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath`) 수행 (Fallback 버전 `1.96.2.24355` 내장)
- [x] `codium.cmd` / `codium` 경로 확인 및 현재 세션/사용자 `PATH` 자동 등록
### 단계 4: `README.md` 및 `NECESSARY.md` 문서 업데이트
- [x] `README.md`의 `3. 개발 유틸리티 & 웹 터미널` 섹션에 `VSCodium (codium)` 추가 (VS Code에서 파생되었으나 불필요한 트래킹/독점 요소를 덜어내고 최소한의 핵심 기능만 담은 순수 오픈소스 코드 에디터임을 강조)
- [x] `NECESSARY.md`의 `3. 개발 유틸리티` 섹션 및 설치 가이드, 핵심 사용법에 `VSCodium (codium)` 추가
### 단계 5: 완료 보고서 작성 및 Graphify 갱신 / Git 푸시
- [x] 완료 보고서(`VIBE-WORK/261104/INSTALL-CODIUM-PHASE01.md`) 작성
- [x] `uv tool run --from graphifyy graphify update .` 실행
- [x] Git commit 및 push
@@ -0,0 +1,33 @@
# VSCodium (codium) 설치 스크립트 및 문서 추가 완료 보고서 (INSTALL-CODIUM-PHASE01)
## 1. 개요
Microsoft의 Visual Studio Code(VS Code) 오픈소스 코드베이스에서 원격 측정(Telemetry), 추적기, 독점 라이선스 요소를 모두 제거하고 **개발에 꼭 필요한 최소한의 핵심 기능만 남긴 순수 오픈소스 코드 에디터 `VSCodium (codium)`**의 크로스 플랫폼 자동 설치 스크립트(`install-codium.sh`, `install-codium.ps1`)를 구현하고 `README.md` 및 `NECESSARY.md`에 반영하였습니다.
```mermaid
flowchart LR
subgraph Script["VSCodium 자동 설치"]
SH["install-codium.sh<br/>(macOS Homebrew / Linux 공식 APT·RPM·AUR / GitHub Release 폴백)"]
PS1["install-codium.ps1<br/>(Windows winget / GitHub Release UserSetup.exe 폴백)"]
end
subgraph Docs["문서 반영"]
README["README.md<br/>3. 개발 유틸리티 섹션"]
NEC["NECESSARY.md<br/>3. 개발 유틸리티 & 핵심 사용법"]
end
Script --> Docs
```
## 2. 세부 구현 내역
### 2.1. `install-codium.sh` (macOS / Linux)
- **macOS**: 공식 가이드대로 `brew install --cask vscodium` 설치 및 `/Applications/VSCodium.app/Contents/Resources/app/bin/codium`을 `~/.local/bin/codium`에 심볼릭 링크 연결 (실패 시 GitHub Releases `VSCodium-darwin-<arch>-<tag>.zip` 직접 설치 폴백)
- **Linux (Debian/Ubuntu/Mint)**: 공식 GPG 키(`/usr/share/keyrings/vscodium-archive-keyring.gpg`) 및 APT 저장소(`https://download.vscodium.com/debs`) 등록 후 `codium` 설치
- **Linux (Fedora/RHEL/Rocky/openSUSE)**: 공식 RPM 저장소(`https://download.vscodium.com/rpms/`) 등록 후 `dnf` / `yum` / `zypper`를 통한 `codium` 설치
- **Linux (Arch & 범용 폴백)**: `yay`/`paru` 지원 및 비루트·기타 배포판 환경을 위한 GitHub Releases(`VSCodium-linux-<arch>-<tag>.tar.gz`) 3단계 폴백 다운로드 지원
### 2.2. `install-codium.ps1` (Windows PowerShell)
- **1차 설치**: 공식 권장 `winget install -e --id VSCodium.VSCodium` 실행
- **2차 폴백**: `winget` 미지원 또는 오류 발생 시 GitHub Releases API에서 `VSCodiumUserSetup-<arch>-<version>.exe`를 다운로드하여 무인 설치(`/VERYSILENT`) 및 PATH 자동 등록
### 2.3. 문서 업데이트 (`README.md`, `NECESSARY.md`)
- `3. 개발 유틸리티` 카테고리에 **VSCodium (codium)** 추가
- VS Code에서 출발했으나 원격 측정(Telemetry)·추적기·독점 요소를 걷어내고 최소한의 필요한 핵심 기능만 남긴 순수 오픈소스 코드 에디터라는 점을 강조
+243
View File
@@ -0,0 +1,243 @@
#Requires -Version 5.1
<#
.SYNOPSIS
Installs VSCodium (codium) — Free/Libre Open Source Software Binaries of VS Code.
.DESCRIPTION
Installs VSCodium on Windows following https://vscodium.com/ recommendations:
1) Primary: winget install -e --id VSCodium.VSCodium
2) Fallback: Downloads the latest VSCodiumUserSetup-<arch>-<version>.exe
from GitHub Releases (VSCodium/vscodium) and runs silent user install.
Supported architectures:
- Windows x64 (AMD64 / Intel 64bit)
- Windows ARM64
.PARAMETER AddToPath
Whether to permanently add VSCodium's bin directory to User PATH. Default: $true
.EXAMPLE
.\install-codium.ps1
# One-liner install from remote (works on Windows 10+):
powershell -ExecutionPolicy Bypass -c "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; $t=\"$env:TEMP\install-codium.ps1\"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-codium.ps1' -OutFile $t; & $t"
.NOTES
If execution policy error occurs:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
#>
[CmdletBinding()]
param(
[bool] $AddToPath = $true
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
# Force TLS 1.2+ for HTTPS downloads (required on Windows 10 / PowerShell 5.1)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# ────────────────────────────────────────────
# Constants
# ────────────────────────────────────────────
$REPO = "VSCodium/vscodium"
$API_URL = "https://api.github.com/repos/$REPO/releases"
$FALLBACK_TAG = "1.96.2.24355"
$LOCAL_BIN = Join-Path $env:USERPROFILE ".local\bin"
# ────────────────────────────────────────────
# Utility functions
# ────────────────────────────────────────────
function Info { Write-Host "[INFO] $args" -ForegroundColor Cyan }
function Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow }
function Success { Write-Host "[OK] $args" -ForegroundColor Green }
function ErrExit { Write-Host "[ERROR] $args" -ForegroundColor Red; exit 1 }
# ────────────────────────────────────────────
# Architecture detection
# ────────────────────────────────────────────
function Get-CodiumArch {
$envArch = $env:PROCESSOR_ARCHITEW6432
if (-not $envArch) { $envArch = $env:PROCESSOR_ARCHITECTURE }
switch -Regex ($envArch) {
'^AMD64$' { return "x64" }
'^ARM64$' { return "arm64" }
'^x86$' { return "ia32" }
default { return "x64" }
}
}
# ────────────────────────────────────────────
# Get latest release tag with assets from GitHub API
# ────────────────────────────────────────────
function Get-LatestTag {
Info "Fetching latest VSCodium release from GitHub API..."
try {
$releases = Invoke-RestMethod -Uri $API_URL -UseBasicParsing `
-Headers @{ 'User-Agent' = 'install-codium-ps1' } -TimeoutSec 15
$latest = $releases | Where-Object {
$_.prerelease -eq $false -and $_.assets -and $_.assets.Count -gt 0
} | Select-Object -First 1
if ($latest -and $latest.tag_name) {
return $latest.tag_name
}
} catch {
Warn "GitHub API lookup failed: $_"
}
Warn "Using fallback release tag: $FALLBACK_TAG"
return $FALLBACK_TAG
}
# ────────────────────────────────────────────
# Install via GitHub Releases UserSetup.exe (Fallback)
# ────────────────────────────────────────────
function Install-FromGitHub {
$arch = Get-CodiumArch
$tag = Get-LatestTag
Info "Target VSCodium release: $tag ($arch)"
$exeName = "VSCodiumUserSetup-${arch}-${tag}.exe"
$downloadUrl = "https://github.com/$REPO/releases/download/$tag/$exeName"
$fallbackExe = "VSCodiumUserSetup-${arch}-${FALLBACK_TAG}.exe"
$fallbackUrl = "https://github.com/$REPO/releases/download/$FALLBACK_TAG/$fallbackExe"
$tmpDir = Join-Path $env:TEMP "codium_install_$(Get-Random)"
New-Item -ItemType Directory -Path $tmpDir -Force | Out-Null
try {
$setupPath = Join-Path $tmpDir $exeName
Info "Downloading installer: $downloadUrl"
try {
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri $downloadUrl -OutFile $setupPath -UseBasicParsing
$ProgressPreference = 'Continue'
} catch {
if ($downloadUrl -ne $fallbackUrl) {
Warn "Primary download failed. Retrying with fallback version ($FALLBACK_TAG): $fallbackUrl"
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri $fallbackUrl -OutFile $setupPath -UseBasicParsing
$ProgressPreference = 'Continue'
} else {
ErrExit "Failed to download VSCodium installer: $_"
}
}
Info "Running VSCodium silent installer..."
$installArgs = "/VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath"
$proc = Start-Process -FilePath $setupPath -ArgumentList $installArgs -Wait -PassThru
if ($proc.ExitCode -ne 0) {
Warn "Installer exited with code $($proc.ExitCode)"
} else {
Success "VSCodium installed via official UserSetup installer."
}
} finally {
if (Test-Path $tmpDir) {
Remove-Item -Path $tmpDir -Recurse -Force -ErrorAction SilentlyContinue
}
}
}
# ────────────────────────────────────────────
# Add directory to User PATH
# ────────────────────────────────────────────
function Add-ToUserPath {
param([string]$Dir)
$normalizedDir = $Dir.TrimEnd('\')
if ($env:Path -notlike "*$normalizedDir*") {
$env:Path = "$normalizedDir;$env:Path"
Info "Added $normalizedDir to current session PATH."
}
$currentPath = [Environment]::GetEnvironmentVariable('Path', 'User')
if (-not $currentPath) { $currentPath = '' }
$dirs = @($currentPath -split ';' | Where-Object { $_ -ne '' })
$alreadyInPath = $false
foreach ($d in $dirs) {
if ($d.Trim().TrimEnd('\') -eq $normalizedDir) {
$alreadyInPath = $true
break
}
}
if (-not $alreadyInPath) {
$newPath = if ($currentPath) { "$normalizedDir;$currentPath" } else { $normalizedDir }
[Environment]::SetEnvironmentVariable('Path', $newPath, 'User')
Success "Added '$normalizedDir' to User PATH permanently."
} else {
Info "'$normalizedDir' is already in User PATH."
}
}
# ────────────────────────────────────────────
# Main
# ────────────────────────────────────────────
function Main {
Info "===== VSCodium (codium) install script (Windows PowerShell) ====="
$installed = $false
# 1) Try official winget installation first (https://vscodium.com/#install-with-winget-windows)
if (Get-Command winget -ErrorAction SilentlyContinue) {
Info "Installing VSCodium via winget (VSCodium.VSCodium)..."
try {
& winget install -e --id VSCodium.VSCodium --accept-package-agreements --accept-source-agreements
if ($LASTEXITCODE -eq 0 -or $LASTEXITCODE -eq -1978335189) {
# -1978335189 = APPINSTALLER_CLI_ERROR_UPDATE_NOT_APPLICABLE (already installed)
$installed = $true
Success "VSCodium installed/verified via winget."
}
} catch {
Warn "winget installation encountered an issue: $_"
}
}
# 2) Fallback to GitHub Releases direct UserSetup installer
if (-not $installed) {
Info "Falling back to direct download from VSCodium GitHub Releases..."
Install-FromGitHub
}
# 3) Locate codium bin directory and ensure PATH registration
$candidateDirs = @(
(Join-Path $env:LOCALAPPDATA "Programs\VSCodium\bin"),
(Join-Path $env:ProgramFiles "VSCodium\bin"),
(Join-Path ${env:ProgramFiles(x86)} "VSCodium\bin")
)
$codiumBinDir = $null
foreach ($dir in $candidateDirs) {
if ($dir -and (Test-Path (Join-Path $dir "codium.cmd"))) {
$codiumBinDir = $dir
break
}
}
if ($codiumBinDir -and $AddToPath) {
Add-ToUserPath -Dir $codiumBinDir
}
Info ""
Info "=================================================="
Success "VSCodium (codium) installation complete!"
Info "=================================================="
Info ""
Info "Getting started:"
Info " codium . - Open current folder in VSCodium"
Info " codium <file> - Open file in VSCodium"
Info " codium --install-extension - Install Open VSX extension"
Info " codium --version - Show version info"
Info ""
Info "NOTE: Open a new terminal window if 'codium' command is not immediately recognized."
}
Main
+313
View File
@@ -0,0 +1,313 @@
#!/usr/bin/env bash
# shellcheck disable=SC2086
# VSCodium (codium) 공식 가이드 기반 자동 설치 스크립트
# 공식 사이트: https://vscodium.com/
# 공식 GitHub: https://github.com/VSCodium/vscodium
#
# VS Code 오픈소스에서 불필요한 원격 측정(Telemetry)/추적기 및 독점 요소를 제거하고
# 개발에 필요한 핵심 기능만 깔끔하게 남긴 순수 오픈소스 바이너리 에디터입니다.
#
# 지원 플랫폼:
# macOS : Homebrew Cask (brew install --cask vscodium) + GitHub Release 폴백
# Linux :
# - Debian / Ubuntu / Mint : 공식 APT 저장소 등록 및 설치
# - Fedora / RHEL / Rocky / Alma / openSUSE : 공식 RPM 저장소 등록 및 설치
# - Arch Linux : AUR 헬퍼(yay/paru) 또는 Snap / GitHub Release tarball 폴백
# - 범용 폴백 : GitHub Releases 정식 바이너리 (VSCodium-linux-<arch>-<tag>.tar.gz)
set -euo pipefail
# ────────────────────────────────────────────
# 상수 정의
# ────────────────────────────────────────────
REPO="VSCodium/vscodium"
API_URL="https://api.github.com/repos/${REPO}/releases"
FALLBACK_TAG="1.96.2.24355"
INSTALL_DIR="${HOME}/.local/bin"
OPT_DIR="${HOME}/.local/share/vscodium"
GPG_KEY_URL="https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg"
# ────────────────────────────────────────────
# 유틸리티 함수 (모두 stderr 출력)
# ────────────────────────────────────────────
info() { echo "[INFO] $*" >&2; }
warn() { echo "[WARN] $*" >&2; }
error() { echo "[ERROR] $*" >&2; exit 1; }
success() { echo "[OK] $*" >&2; }
# ────────────────────────────────────────────
# 필수 명령어 확인
# ────────────────────────────────────────────
for cmd in curl uname; do
command -v "$cmd" &>/dev/null || error "'$cmd' 명령어가 필요합니다."
done
# ────────────────────────────────────────────
# macOS용 Homebrew 확인 및 설치
# ────────────────────────────────────────────
ensure_brew() {
if command -v brew &>/dev/null; then
return 0
fi
info "Homebrew가 설치되어 있지 않습니다. Homebrew 설치를 진행합니다..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [ -d /opt/homebrew/bin ]; then
export PATH="/opt/homebrew/bin:$PATH"
fi
if [ -d /usr/local/bin ]; then
export PATH="/usr/local/bin:$PATH"
fi
command -v brew &>/dev/null || return 1
success "Homebrew 설치 완료"
}
# ────────────────────────────────────────────
# GitHub API에서 에셋이 존재하는 최신 릴리스 태그 조회
# ────────────────────────────────────────────
if command -v jq &>/dev/null; then
_json_latest_tag() {
jq -r '[.[] | select(.prerelease==false and ((.assets | length) > 0))] | .[0].tag_name'
}
elif command -v python3 &>/dev/null; then
_json_latest_tag() {
python3 -c "
import sys, json
data = json.load(sys.stdin)
for r in data:
if not r.get('prerelease') and r.get('assets'):
print(r.get('tag_name', ''))
break
"
}
else
_json_latest_tag() {
grep -oE '"tag_name":[[:space:]]*"[^"]+"' | head -1 | sed -E 's/.*"([^"]+)"$/\1/'
}
fi
get_latest_tag() {
info "GitHub API에서 VSCodium 최신 릴리스 버전을 조회하는 중..."
local releases="" tag=""
releases="$(curl -fsSL -H "User-Agent: install-codium-sh" --connect-timeout 10 "${API_URL}" 2>/dev/null)" || true
if [[ -n "$releases" ]]; then
tag="$(echo "$releases" | _json_latest_tag 2>/dev/null || true)"
fi
if [[ -z "$tag" || "$tag" == "null" ]]; then
warn "GitHub API 조회 실패. 검증된 폴백 버전(${FALLBACK_TAG})을 사용합니다."
tag="${FALLBACK_TAG}"
fi
echo "$tag"
}
# ────────────────────────────────────────────
# Linux 공식 APT 저장소 설치 (Debian / Ubuntu / Mint)
# https://vscodium.com/#install-on-debian-ubuntu-deb-package
# ────────────────────────────────────────────
install_linux_apt() {
info "Debian/Ubuntu 계열 감지: 공식 VSCodium APT 저장소를 구성합니다..."
sudo apt-get update -y 2>/dev/null || true
sudo apt-get install -y wget gpg apt-transport-https 2>/dev/null || true
# 1. GPG 키 등록
curl -fsSL "${GPG_KEY_URL}" | gpg --dearmor | sudo dd of=/usr/share/keyrings/vscodium-archive-keyring.gpg 2>/dev/null
# 2. APT 저장소 등록
echo 'deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg] https://download.vscodium.com/debs vscodium main' |
sudo tee /etc/apt/sources.list.d/vscodium.list >/dev/null
# 3. 패키지 업데이트 및 codium 설치
sudo apt-get update -y
sudo apt-get install -y codium
success "APT 공식 저장소를 통해 VSCodium (codium) 설치 완료!"
}
# ────────────────────────────────────────────
# Linux 공식 RPM 저장소 설치 (Fedora / RHEL / Rocky / openSUSE)
# https://vscodium.com/#install-on-fedora-rhel-opensuse-rpm-package
# ────────────────────────────────────────────
install_linux_rpm() {
info "RHEL/Fedora/openSUSE 계열 감지: 공식 VSCodium RPM 저장소를 구성합니다..."
sudo rpmkeys --import "${GPG_KEY_URL}"
if command -v dnf &>/dev/null || command -v yum &>/dev/null; then
printf "[gitlab.com_paulcarroty_vscodium_repo]\nname=download.vscodium.com\nbaseurl=https://download.vscodium.com/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=${GPG_KEY_URL}\nmetadata_expire=1h\n" |
sudo tee /etc/yum.repos.d/vscodium.repo >/dev/null
if command -v dnf &>/dev/null; then
sudo dnf install -y codium
else
sudo yum install -y codium
fi
success "DNF/YUM 공식 저장소를 통해 VSCodium (codium) 설치 완료!"
elif command -v zypper &>/dev/null; then
printf "[gitlab.com_paulcarroty_vscodium_repo]\nname=gitlab.com_paulcarroty_vscodium_repo\nbaseurl=https://download.vscodium.com/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=${GPG_KEY_URL}\nmetadata_expire=1h\n" |
sudo tee /etc/zypp/repos.d/vscodium.repo >/dev/null
sudo zypper -n --gpg-auto-import-keys refresh
sudo zypper -n install codium
success "Zypper 공식 저장소를 통해 VSCodium (codium) 설치 완료!"
else
return 1
fi
}
# ────────────────────────────────────────────
# GitHub Releases 직접 다운로드 폴백 (Linux / macOS)
# ────────────────────────────────────────────
install_from_github_tarball() {
local os="$1"
local arch="$2"
local codium_arch=""
case "$arch" in
x86_64 | amd64) codium_arch="x64" ;;
aarch64 | arm64) codium_arch="arm64" ;;
armv7l | armhf) codium_arch="armhf" ;;
*) error "지원하지 않는 아키텍처입니다: $arch" ;;
esac
local tag
tag="$(get_latest_tag)"
info "GitHub Releases에서 VSCodium (${tag}) 바이너리를 다운로드합니다..."
local tmpdir
tmpdir="$(mktemp -d)"
trap '[[ -d "${tmpdir:-}" ]] && rm -rf "$tmpdir"' EXIT
if [[ "$os" == "Darwin" ]]; then
local filename="VSCodium-darwin-${codium_arch}-${tag}.zip"
local url="https://github.com/${REPO}/releases/download/${tag}/${filename}"
local fallback_url="https://github.com/${REPO}/releases/download/${FALLBACK_TAG}/VSCodium-darwin-${codium_arch}-${FALLBACK_TAG}.zip"
info "다운로드 중: $url"
if ! curl -fsSL --progress-bar -o "${tmpdir}/${filename}" "$url"; then
warn "최신 버전 다운로드 실패. 폴백 버전(${FALLBACK_TAG})으로 재시도합니다: $fallback_url"
curl -fsSL --progress-bar -o "${tmpdir}/${filename}" "$fallback_url" ||
error "다운로드 실패: $fallback_url"
fi
info "/Applications 경로에 압축 해제 중..."
unzip -q -o "${tmpdir}/${filename}" -d "/Applications"
mkdir -p "$INSTALL_DIR"
ln -sf "/Applications/VSCodium.app/Contents/Resources/app/bin/codium" "${INSTALL_DIR}/codium"
success "VSCodium.app 설치 및 ${INSTALL_DIR}/codium 심볼릭 링크 생성 완료!"
else
local filename="VSCodium-linux-${codium_arch}-${tag}.tar.gz"
local url="https://github.com/${REPO}/releases/download/${tag}/${filename}"
local fallback_url="https://github.com/${REPO}/releases/download/${FALLBACK_TAG}/VSCodium-linux-${codium_arch}-${FALLBACK_TAG}.tar.gz"
info "다운로드 중: $url"
if ! curl -fsSL --progress-bar -o "${tmpdir}/${filename}" "$url"; then
warn "최신 버전 다운로드 실패. 폴백 버전(${FALLBACK_TAG})으로 재시도합니다: $fallback_url"
curl -fsSL --progress-bar -o "${tmpdir}/${filename}" "$fallback_url" ||
error "다운로드 실패: $fallback_url"
fi
info "${OPT_DIR} 경로에 압축 해제 중..."
rm -rf "$OPT_DIR"
mkdir -p "$OPT_DIR"
tar -xzf "${tmpdir}/${filename}" -C "$OPT_DIR"
mkdir -p "$INSTALL_DIR"
ln -sf "${OPT_DIR}/bin/codium" "${INSTALL_DIR}/codium"
success "VSCodium 리눅스 바이너리 배포 및 ${INSTALL_DIR}/codium 연결 완료!"
fi
}
# ────────────────────────────────────────────
# 메인 설치 로직
# ────────────────────────────────────────────
main() {
local os arch
os="$(uname -s)"
arch="$(uname -m)"
info "===== VSCodium (codium) 설치 스크립트 ====="
info "감지된 환경: OS=${os}, ARCH=${arch}"
if command -v codium &>/dev/null; then
info "이미 codium이 설치되어 있습니다: $(command -v codium)"
codium --version 2>/dev/null | head -n 1 || true
fi
case "$os" in
Darwin)
info "macOS 환경에서 공식 권장 방식(Homebrew Cask)으로 설치를 시도합니다..."
if ensure_brew && brew install --cask vscodium; then
success "Homebrew를 통해 VSCodium이 설치되었습니다!"
if [ -x "/Applications/VSCodium.app/Contents/Resources/app/bin/codium" ]; then
mkdir -p "$INSTALL_DIR"
ln -sf "/Applications/VSCodium.app/Contents/Resources/app/bin/codium" "${INSTALL_DIR}/codium" 2>/dev/null || true
fi
else
warn "Homebrew Cask 설치 실패. GitHub Releases 직접 다운로드 방식으로 전환합니다..."
install_from_github_tarball "$os" "$arch"
fi
;;
Linux)
local installed="false"
# 1. Debian / Ubuntu 계열 (apt-get)
if command -v apt-get &>/dev/null && command -v sudo &>/dev/null; then
if install_linux_apt; then
installed="true"
fi
# 2. Fedora / RHEL / openSUSE 계열 (dnf / yum / zypper)
elif (command -v dnf &>/dev/null || command -v yum &>/dev/null || command -v zypper &>/dev/null) && command -v sudo &>/dev/null; then
if install_linux_rpm; then
installed="true"
fi
# 3. Arch Linux 계열 (yay / paru)
elif command -v pacman &>/dev/null; then
if command -v yay &>/dev/null; then
info "Arch Linux 감지: yay를 통해 vscodium-bin을 설치합니다..."
if yay -S --noconfirm vscodium-bin; then
installed="true"
fi
elif command -v paru &>/dev/null; then
info "Arch Linux 감지: paru를 통해 vscodium-bin을 설치합니다..."
if paru -S --noconfirm vscodium-bin; then
installed="true"
fi
fi
fi
# 4. 패키지 매니저 설치 실패 또는 비루트 환경일 경우 GitHub 공식 tarball 폴백
if [[ "$installed" != "true" ]]; then
warn "배포판 패키지 매니저 설치를 사용할 수 없거나 실패하여 GitHub 공식 릴리스 바이너리로 설치합니다..."
install_from_github_tarball "$os" "$arch"
fi
;;
MINGW* | MSYS* | CYGWIN*)
error "Windows 환경입니다. PowerShell에서 install-codium.ps1을 실행해 주세요."
;;
*)
error "지원하지 않는 운영체제입니다: $os"
;;
esac
# PATH 안내
if ! echo ":${PATH}:" | grep -q ":${INSTALL_DIR}:"; then
export PATH="${INSTALL_DIR}:${PATH}"
warn "'${INSTALL_DIR}' 경로가 PATH에 없을 경우 쉘 설정(~/.bashrc 또는 ~/.zshrc)에 추가하세요:"
warn " export PATH=\"\$HOME/.local/bin:\$PATH\""
fi
echo "" >&2
info "=================================================="
success "VSCodium (codium) 설치가 완료되었습니다!"
info "=================================================="
info "주요 사용법:"
info " codium . # 현재 디렉토리를 VSCodium으로 열기"
info " codium <file> # 특정 파일 편집"
info " codium --install-extension # Open VSX 확장 플러그인 설치"
info " codium --version # 설치된 버전 확인"
}
main "$@"
+11 -3
View File
@@ -1,7 +1,15 @@
# 2초마다 0번 팬(install-sh:0.0) 화면을 확인하여 선택 프롬프트가 뜨면 Enter(기본값 1번 선택) 전송
#!/usr/bin/env bash
# 현재 tmux 세션 이름 자동 추출
SESSION=$(tmux display-message -p '#S')
# 첫 번째 인자로 팬 번호를 받되, 없으면 기본값 0번 팬 사용
PANE=${1:-0}
TARGET="${SESSION}:0.${PANE}"
echo "Watching tmux pane: ${TARGET} ..."
while true; do
if tmux capture-pane -t install-sh:0.0 -p | grep -q "> 1\. Yes"; then
tmux send-keys -t install-sh:0.0 Enter
if tmux capture-pane -t "${TARGET}" -p | grep -q "> 1\. Yes"; then
tmux send-keys -t "${TARGET}" Enter
fi
sleep 2
done