KB: 자체 업데이트 프로세스
triggerfish update의 작동 방식, 발생 가능한 문제 및 복구 방법입니다.
작동 방식
업데이트 명령은 GitHub에서 최신 릴리스를 다운로드하고 설치합니다:
버전 확인. GitHub API에서 최신 릴리스 태그를 가져옵니다. 이미 최신 버전인 경우 조기 종료합니다:
Already up to date (v0.4.2)개발 빌드(
VERSION=dev)는 버전 확인을 건너뛰고 항상 진행합니다.플랫폼 감지. OS와 아키텍처에 따라 올바른 바이너리 asset 이름을 결정합니다(linux-x64, linux-arm64, macos-x64, macos-arm64, windows-x64).
다운로드. GitHub 릴리스에서 바이너리와
SHA256SUMS.txt를 가져옵니다.체크섬 검증. 다운로드된 바이너리의 SHA256을 계산하고
SHA256SUMS.txt의 항목과 비교합니다. 체크섬이 일치하지 않으면 업데이트가 중단됩니다.Daemon 중지. 바이너리를 교체하기 전에 실행 중인 daemon을 중지합니다.
바이너리 교체. 플랫폼별:
- Linux/macOS: 이전 바이너리 이름 변경, 새 바이너리를 원래 위치로 이동
- macOS 추가 단계:
xattr -cr로 격리 속성 제거 - Windows: 이전 바이너리를
.old로 이름 변경(Windows는 실행 중인 실행 파일을 덮어쓸 수 없음), 새 바이너리를 원래 경로에 복사
Daemon 재시작. 새 바이너리로 daemon을 시작합니다.
변경 로그. 새 버전의 릴리스 노트를 가져와 표시합니다.
Sudo 에스컬레이션
바이너리가 root 액세스가 필요한 디렉토리(예: /usr/local/bin)에 설치된 경우, 업데이터가 sudo로 에스컬레이션하기 위해 비밀번호를 입력하라는 프롬프트를 표시합니다.
파일 시스템 간 이동
다운로드 디렉토리와 설치 디렉토리가 다른 파일 시스템에 있는 경우(별도의 파티션에 /tmp가 있는 경우 흔함) 원자적 이름 변경이 실패합니다. 업데이터는 복사 후 삭제로 대체되며, 이는 안전하지만 잠시 두 바이너리가 디스크에 존재합니다.
발생 가능한 문제
"Checksum verification exception"
다운로드된 바이너리가 예상 해시와 일치하지 않습니다. 일반적으로 다음을 의미합니다:
- 다운로드가 손상됨(네트워크 문제)
- 릴리스 asset이 오래되었거나 부분적으로 업로드됨
해결 방법: 몇 분 기다린 후 다시 시도하십시오. 지속되면 릴리스 페이지에서 바이너리를 수동으로 다운로드하십시오.
"Asset not found in SHA256SUMS.txt"
릴리스가 해당 플랫폼의 체크섬 없이 게시되었습니다. 릴리스 파이프라인 문제입니다.
해결 방법: GitHub issue를 작성하십시오.
"Binary replacement failed"
업데이터가 이전 바이너리를 새 것으로 교체할 수 없었습니다. 일반적인 원인:
- 파일 권한(바이너리가 root 소유이지만 일반 사용자로 실행 중)
- 파일이 잠김(Windows: 다른 프로세스가 바이너리를 열어 둠)
- 읽기 전용 파일 시스템
해결 방법:
- 수동으로 daemon을 중지하십시오:
triggerfish stop - 오래된 프로세스를 종료하십시오
- 적절한 권한으로 업데이트를 다시 시도하십시오
"Checksum file download failed"
GitHub 릴리스에서 SHA256SUMS.txt를 다운로드할 수 없습니다. 네트워크 연결을 확인하고 다시 시도하십시오.
Windows .old 파일 정리
Windows 업데이트 후 이전 바이너리는 triggerfish.exe.old로 이름이 변경됩니다. 이 파일은 다음 시작 시 자동으로 정리됩니다. 정리되지 않으면(예: 새 바이너리가 시작 시 충돌하는 경우) 수동으로 삭제할 수 있습니다.
버전 비교
업데이터는 시맨틱 버저닝 비교를 사용합니다:
- 선행
v접두사를 제거합니다(v0.4.2와0.4.2모두 허용) - major, minor, patch를 숫자로 비교합니다
- 프리릴리스 버전이 처리됩니다(예:
v0.4.2-rc.1)
수동 업데이트
자동 업데이터가 작동하지 않는 경우:
- GitHub Releases에서 플랫폼용 바이너리를 다운로드하십시오
- Daemon을 중지하십시오:
triggerfish stop - 바이너리를 교체하십시오:bash
# Linux/macOS sudo cp triggerfish-linux-x64 /usr/local/bin/triggerfish sudo chmod +x /usr/local/bin/triggerfish # macOS: 격리 제거 xattr -cr /usr/local/bin/triggerfish - Daemon을 시작하십시오:
triggerfish start
Docker 업데이트
Docker 배포는 바이너리 업데이터를 사용하지 않습니다. 컨테이너 이미지를 업데이트하십시오:
bash
# 래퍼 스크립트 사용
triggerfish update
# 수동
docker compose pull
docker compose up -d래퍼 스크립트는 최신 이미지를 pull하고 실행 중인 컨테이너가 있으면 재시작합니다.
변경 로그
업데이트 후 릴리스 노트가 자동으로 표시됩니다. 수동으로도 볼 수 있습니다:
bash
triggerfish changelog # 현재 버전
triggerfish changelog --latest 5 # 최근 5개 릴리스업데이트 후 변경 로그 가져오기가 실패하면 로그되지만 업데이트 자체에는 영향을 미치지 않습니다.
