dua 설치 스크립트 최신 릴리스 태그 필터링 오류 수정
This commit is contained in:
1 parent
8f2177b3b5
commit
5a67e7bbcf
4 files changed
+351
-194
No files matched your search
@@ -0,0 +1,38 @@
|
||||
# dua 설치 스크립트 오류 수정 계획 (FIX-DUA-INSTALL-IMP-PLAN)
|
||||
|
||||
## 1. 원인 분석
|
||||
`Byron/dua-cli` GitHub 저장소는 워크스페이스 내 라이브러리 크레이트(`dua-core-v5.0.1`, `dua-core-v5.0.0` 등)의 릴리스도 함께 발행합니다.
|
||||
기존 `install-dua.sh`는 단순히 `prerelease == false`인 첫 번째 릴리스 태그를 가져오도록 작성되어 있어, 바이너리 에셋이 전혀 없는 `dua-core-v5.0.1` 태그를 선택하고 `dua-dua-core-v5.0.1-x86_64-unknown-linux-musl.tar.gz`와 같은 존재하지 않는 다운로드 URL을 요청하여 404 에러로 실패하였습니다.
|
||||
또한 Windows용 `install-dua.ps1`은 `winget`에만 의존하고 있어, GitHub Releases에서 직접 최신 `v*` 바이너리를 다운로드하거나 폴백으로 설치하는 기능이 부족했습니다.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([설치 시작]) --> API[GitHub Releases API 조회]
|
||||
API --> Filter{태그가 'v*' 로 시작하고<br/>assets가 존재하는가?}
|
||||
Filter -- No (예: dua-core-v*) --> Skip[무시하고 다음 릴리스 검사]
|
||||
Skip --> Filter
|
||||
Filter -- Yes (예: v2.46.0) --> Download[아키텍처별 에셋 다운로드<br/>dua-vX.Y.Z-target.tar.gz/.zip]
|
||||
Download --> Extract[압축 해제 및 ~/.local/bin 배포]
|
||||
Extract --> PathConfig[PATH 환경변수 등록]
|
||||
PathConfig --> Done([설치 완료])
|
||||
```
|
||||
|
||||
## 2. 작업 단계 및 체크리스트
|
||||
|
||||
### 단계 1: 원인 분석 및 계획 수립
|
||||
- [x] GitHub Releases API 응답 구조 확인 (`dua-core-v*` vs `v*`)
|
||||
- [x] 실행 계획서(`VIBE-WORK/261031/FIX-DUA-INSTALL-IMP-PLAN.md`) 작성
|
||||
|
||||
### 단계 2: `install-dua.sh` 수정
|
||||
- [x] `_json_latest_tag` 함수에서 `prerelease == false` 조건뿐만 아니라 `tag_name`이 `v`로 시작하고(`startswith("v")`) `assets` 배열이 비어있지 않은 릴리스만 선택하도록 필터 강화
|
||||
- [x] GitHub API 호출 시 User-Agent 헤더 및 Fallback 태그(`v2.46.0`) 안전장치 추가
|
||||
- [x] `bash -n install-dua.sh` 문법 검사 및 태그 추출 테스트
|
||||
|
||||
### 단계 3: `install-dua.ps1` 개선
|
||||
- [x] GitHub Releases에서 `v*` 태그의 Windows 바이너리(`dua-{TAG}-{ARCH}-pc-windows-msvc.zip`)를 직접 다운로드하여 `$env:USERPROFILE\.local\bin`에 설치하도록 개선 (다른 스크립트들과 일관된 방식)
|
||||
- [x] PATH 환경변수 자동 등록 및 버전 확인 로직 구성
|
||||
|
||||
### 단계 4: 완료 보고서 작성 및 Graphify 업데이트 / Git 푸시
|
||||
- [x] 완료 보고서(`VIBE-WORK/261031/FIX-DUA-INSTALL-PHASE01.md`) 작성
|
||||
- [x] `uv tool run --from graphifyy graphify update .` 실행
|
||||
- [x] Git commit 및 push
|
||||
@@ -0,0 +1,20 @@
|
||||
# dua 설치 스크립트 오류 수정 완료 보고서 (FIX-DUA-INSTALL-PHASE01)
|
||||
|
||||
## 1. 장애 원인
|
||||
`Byron/dua-cli` GitHub 저장소에서 CLI 바이너리 릴리스(`v2.46.0` 등) 외에 내부 코어 라이브러리 릴리스(`dua-core-v5.0.1` 등, 바이너리 에셋 없음)를 함께 발행하기 시작하면서, 기존 `prerelease == false` 조건만 검사하던 로직이 `dua-core-v5.0.1` 태그를 선택하여 존재하지 않는 URL(`.../dua-dua-core-v5.0.1-...`)을 다운로드하려다 404 오류가 발생하였습니다.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
API[GitHub Releases API] --> Old[기존: 첫 번째 prerelease=false 선택<br/>dua-core-v5.0.1 선택됨 -> 404 에러]
|
||||
API --> New[수정: tag_name이 'v*'로 시작하고<br/>assets가 존재하는 릴리스만 선택<br/>v2.46.0 정상 다운로드]
|
||||
```
|
||||
|
||||
## 2. 주요 변경 사항
|
||||
|
||||
### 2.1. `install-dua.sh`
|
||||
- `jq` 및 `python3`, `grep` 파서에서 `tag_name`이 `v`로 시작하고(`startswith("v")`) `assets` 배열이 비어있지 않은 릴리스만 필터링하도록 수정
|
||||
- GitHub API Rate Limit 등으로 실패할 경우를 대비한 `FALLBACK_TAG="v2.46.0"` 안전장치 추가
|
||||
- Linux에서 불필요하게 실패하는 배포판 패키지 매니저(`apt`, `dnf` 등에는 기본적으로 `dua-cli`가 없음) 시도 과정을 제거하고 GitHub 공식 정적 바이너리(`musl`)를 `~/.local/bin/dua`에 직접 설치하도록 개선
|
||||
|
||||
### 2.2. `install-dua.ps1`
|
||||
- `winget` 의존성을 제거하고 GitHub Releases API에서 `v*` 태그의 Windows 아키텍처별 바이너리(`dua-{TAG}-{ARCH}-pc-windows-msvc.zip`)를 직접 다운로드하여 `$env:USERPROFILE\.local\bin\dua.exe`에 설치하고 사용자 PATH에 자동 등록하도록 개선
|
||||
Reference in new issue
Block a user