
Athena OS는 사이버 보안에 중점을 둔 Arch/Nix 기반 배포판입니다. 학습하고, 실습하고, 어떤 해킹 도구로도 즐기세요!

이 저장소의 패키지는 nvchecker로 구동되는 일일 GitHub Actions 워크플로를 통해 자동으로 최신 상태로 유지됩니다.
자동화는 매일 실행되며(수동으로도 트리거 가능) 다음 단계를 거칩니다.
구성 생성 — .nvchecker/generate-nvchecker-config.py는 src/ 아래의 모든 PKGBUILD를 스캔하고 .nvchecker/nvchecker.toml을 자동 생성합니다. 각 패키지는 다음 중 하나로 분류됩니다:
pkgver=와 원격 소스 URL을 가집니다. 호스팅 플랫폼의 최신 태그/릴리스로 추적됩니다.pkgver() 함수와 git+https:// 소스를 가집니다. 최신 업스트림 커밋으로 추적됩니다.버전 확인 — nvchecker는 추적된 모든 패키지의 업스트림을 조회하고 결과를 .nvchecker/newver.json에 기록합니다. 이를 .nvchecker/oldver.json(저장소에 커밋됨)과 비교하여 새 버전이 있는 패키지를 찾습니다.
PKGBUILD 업데이트 및 PR — 각 업데이트가 필요한 패키지에 대해 워크플로는:
auto-update/<pkgname>-<newver>를 생성합니다.PKGBUILD에서 pkgver를 업데이트하고 pkgrel을 1로 재설정합니다.updpkgsums로 체크섬을 재생성합니다.pkgver() 함수를 실행하여 실제 Arch 스타일 버전 문자열(예: 131.940a5d3)을 계산하며, sha512sums=('SKIP')는 그대로 유지합니다.main 브랜치에 병합되기 전에 사람이 검토할 수 있도록 auto-update 레이블이 붙은 풀 리퀘스트를 엽니다.상태 저장 — .nvchecker/oldver.json은 이번 실행에서 확인된 버전으로 업데이트되어 main에 다시 커밋되므로, 다음 실행에서는 실제로 새로운 변경 사항에 대해서만 PR이 열립니다.
| 플랫폼 | 감지 |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + 자체 호스팅) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (자체 호스팅) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
구성 생성기와 CI 워크플로는 모두 source= 줄에서 셸 변수 참조를 해석하여 다음과 같은 간접 URL이 올바르게 처리되도록 합니다:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
다음 bash 매개변수 확장 형식이 지원됩니다:
| 구문 | 의미 | 예시 |
|---|---|---|
$var / ${var} | 단순 대체 | $pkgname → athena-settings |
${var#prefix} | 가장 짧은 일치 접두사 제거 | ${pkgname#athena-} → settings |
${var%suffix} | 가장 짧은 일치 접미사 제거 | ${pkgname%-git} → athena-settings |
다음 bash 구문은 자동화에서 해결되지 않습니다. 이에 의존하는 PKGBUILD는 정보 메모와 함께 정상적으로 건너뛰어집니다 — 오류가 발생하지 않으며, 항상 수동으로 업데이트할 수 있습니다.
| 지원되지 않는 구문 | 예시 | 이유 |
|---|---|---|
## greedy prefix strip | ${var##*/} | 비탐욕적 #만 구현됨 |
%% greedy suffix strip | ${var%%.*} | 비탐욕적 %만 구현됨 |
| Substring extraction | ${var:0:3} | 다른 연산자, PKGBUILD에서 드물게 사용됨 |
| Pattern substitution | ${var//foo/bar} | 다른 연산자, PKGBUILD에서 드물게 사용됨 |
| Arithmetic expansion | $((pkgver + 1)) | 버전 추적 범위를 벗어남 |
| Nested expansions | ${${var}#prefix} | 유효한 POSIX가 아님; 실제로 사용되지 않음 |
PKGBUILD에서 위의 구문 중 하나를 사용하고 자동화가 건너뛰는 경우, 할당을 일반 var=value 줄로 다시 작성하거나 수동으로 버전을 업데이트하는 PR을 열 수 있습니다.