Files
install-sh/VIBE-WORK/261031/HARDEN-INSTALL-LINKS-PHASE01.md

29 lines
2.2 KiB
Markdown

# 전체 설치 스크립트 다운로드 안정성 강화 완료 보고서 (HARDEN-INSTALL-LINKS-PHASE01)
## 1. 개요
외부 오픈소스 저장소들의 릴리스 정책 변화(서브 크레이트 릴리스 혼재, CI 빌드 중 빈 에셋 상태, 파일명 변경)나 GitHub API Rate Limit(시간당 60회 제한)이 발생하더라도 모든 설치 스크립트가 중단 없이 정상 설치되도록 **3단계 방어 로직**을 전체 스크립트(`install-*.sh`, `install-*.ps1`)에 일괄 적용하였습니다.
```mermaid
flowchart LR
Step1["1단계: 에셋 존재 검증<br/>(assets 배열이 비어있지 않은<br/>릴리스만 선택)"] --> Step2["2단계: API 폴백<br/>(API Rate Limit/오류 시<br/>검증된 FALLBACK_TAG 사용)"]
Step2 --> Step3["3단계: 다운로드 폴백<br/>(최신 URL 404/실패 시<br/>FALLBACK_TAG URL로 자동 재시도)"]
```
## 2. 도구별 적용 내역 및 Fallback 버전
| 도구 | 대상 스크립트 | 에셋 필터링 조건 | 검증된 Fallback 태그 |
| :--- | :--- | :--- | :--- |
| **all-smi** | `install-all-smi.{sh,ps1}` | `assets.length > 0` | `v0.25.0` |
| **bottom** | `install-bottom.{sh,ps1}` | `assets.length > 0` (Nightly & Stable) | `0.12.3` |
| **ctop** | `install-ctop.{sh,ps1}` | `prerelease == false && assets.length > 0` | `v0.7.7` |
| **dua** | `install-dua.{sh,ps1}` | `prerelease == false && startswith("v") && assets.length > 0` | `v2.46.0` |
| **Helix** | `install-helix.{sh,ps1}` | `prerelease == false && assets.length > 0` | `25.07.1` |
| **lazydocker** | `install-lazydocker.{sh,ps1}` | `prerelease == false && assets.length > 0` | `v0.25.2` |
| **lazygit** | `install-lazygit.{sh,ps1}` | `prerelease == false && assets.length > 0` | `v0.61.1` |
| **ocr** | `install-ocr.{sh,ps1}` | `assets.length > 0` | `v1.3.19` |
| **ttyd** | `install-ttyd.{sh,ps1}` | `assets.length > 0` | `1.7.7` |
## 3. 추가 개선 사항
- `jq`와 `python3`가 모두 없는 최소 리눅스 컨테이너 환경에서도 `grep`/`sed` 폴백 및 `FALLBACK_TAG`를 통해 설치가 중단되지 않도록 개선했습니다.
- 모든 GitHub API 요청에 `User-Agent` 헤더와 타임아웃(`--connect-timeout 10` / `-TimeoutSec 15`)을 명시하여 무한 대기 현상을 방지했습니다.