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

2.2 KiB

전체 설치 스크립트 다운로드 안정성 강화 완료 보고서 (HARDEN-INSTALL-LINKS-PHASE01)

1. 개요

외부 오픈소스 저장소들의 릴리스 정책 변화(서브 크레이트 릴리스 혼재, CI 빌드 중 빈 에셋 상태, 파일명 변경)나 GitHub API Rate Limit(시간당 60회 제한)이 발생하더라도 모든 설치 스크립트가 중단 없이 정상 설치되도록 3단계 방어 로직을 전체 스크립트(install-*.sh, install-*.ps1)에 일괄 적용하였습니다.

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)을 명시하여 무한 대기 현상을 방지했습니다.