alpacon update
CLI를 최신 릴리스로 업데이트합니다.
사용법
alpacon update [flags]
핵심 사항
- 직접 설치한 바이너리(Windows 설치 스크립트로 설치한 경우 포함)는 그 자리에서 교체
- 새 릴리스가 있어도 Homebrew, deb·rpm 패키지, mise, asdf로 설치한 바이너리는 건드리지 않음. 해당 도구로 업데이트하는 방법을 출력하고 종료 코드
1로 종료 --check는 아무것도 설치하지 않으며, 새 릴리스가 있으면 종료 코드8로 종료- 릴리스 후보처럼 최신 릴리스보다 새 빌드는 이전 버전으로 되돌리지 않음
플래그
| 플래그 | 유형 | 설명 | 기본값 |
|---|---|---|---|
--check | bool | 설치하지 않고 새 릴리스가 있는지만 확인 | false |
-h, --help | bool | 명령 도움말 표시 | false |
--output | string | 출력 형식: table 또는 json | table |
예제
최신 릴리스로 업데이트
alpacon update설치하지 않고 새 릴리스가 있는지 확인
alpacon update --check업데이트 과정
명령은 GitHub의 alpacon-cli 최신 릴리스를 읽어 설치된 버전과 비교합니다. 이미 최신 버전이면 alpacon <version> is already up to date.를 출력하고 종료 코드 0으로 끝납니다.
새 릴리스가 있으면 운영체제와 아키텍처에 맞는 압축 파일을 내려받습니다. 같은 릴리스에 게시된 SHA-256 체크섬 파일로 검증한 뒤 바이너리를 교체합니다. 교체가 끝날 때까지 기존 바이너리는 남겨 둡니다. 성공하면 Successfully updated to <version>.을 출력합니다.
Windows에서는 교체된 alpacon.exe가 설치 폴더에 alpacon.exe.old.<timestamp>로 남습니다. 이 파일은 다음 alpacon update에서 지웁니다.
업데이트 중에는 바이너리 옆에 .alpacon-update.lock 잠금 파일을 두므로 두 업데이트가 같은 파일을 동시에 교체하지 못합니다. 이 파일은 업데이트 후에도 남지만 그대로 두어도 됩니다.
패키지 관리자로 설치한 경우
다른 도구가 설치한 바이너리는 패키지 정보가 어긋나지 않도록 그 도구로 업데이트해야 합니다. 새 릴리스가 있으면 명령은 아무것도 바꾸지 않고 실행할 명령을 출력한 뒤 종료 코드 1로 끝납니다.
| 설치 방법 | 업데이트 방법 |
|---|---|
| Homebrew | brew upgrade alpacon-cli |
| deb 패키지 | sudo apt-get update && sudo apt-get install --only-upgrade alpacon |
| rpm 패키지 | sudo yum update alpacon |
| mise 또는 asdf | 해당 도구로 업데이트 |
다른 패키지 작업이 진행 중이라서 바이너리가 어느 패키지 소유인지 알 수 없으면 바이너리를 건드리지 않습니다. 그 작업이 끝난 뒤 다시 실행하거나 패키지 관리자로 업데이트하세요.
소스에서 직접 빌드한 바이너리는 버전이 dev로 표시되며, 이 버전에 맞는 릴리스가 없으므로 alpacon update가 거부합니다. 이 명령을 쓰려면 릴리스된 빌드를 설치하세요.
권한
명령을 실행하는 사용자에게 바이너리가 있는 폴더의 쓰기 권한이 있어야 합니다. 권한이 없으면 The install location is not writable by this user.를 출력하고 멈춥니다. Linux와 macOS에서는 sudo alpacon update로, Windows에서는 관리자 권한 터미널에서 alpacon update를 실행하세요. Windows 설치 스크립트는 사용자 본인의 %LOCALAPPDATA%\Alpacon\bin에 설치하므로 관리자 권한이 필요 없습니다.
임시 디렉터리에 쓸 수 없으면 TMPDIR(Windows에서는 TMP)에 쓰기 가능한 디렉터리를 지정한 뒤 다시 실행하세요.
업데이트 확인
alpacon update --check는 아무것도 설치하지 않고 새 릴리스가 있는지만 알려 줍니다. 스크립트는 메시지를 읽지 않고 종료 코드로 분기할 수 있습니다.
- 0: 이미 최신 릴리스임
- 8: 새 릴리스가 있음. 직접 설치한 바이너리면
alpacon update를, 패키지 관리자로 설치했으면 위 표의 명령을 함께 출력 - 1: 릴리스 정보를 가져오지 못하는 등 확인 자체가 실패함
스크립트에서 최신 버전 번호를 읽으려면 alpacon version --output json을 사용하세요.
종료 코드 (Exit codes)
- 0: CLI를 업데이트했거나 이미 최신 릴리스임
- 1: 업데이트에 실패했거나, 새 릴리스가 있지만 패키지 관리자나 버전 관리 도구가 설치한 바이너리이거나,
dev빌드임 - 8:
--check전용. 새 릴리스가 있음