
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는 정보 안내 메시지와 함께 정상적으로 건너뛰어지며, 오류는 발생하지 않고 언제든지 수동으로 업데이트할 수 있습니다.
| 지원되지 않는 구문 | 예시 | 이유 |
|---|---|---|
## 탐욕적 접두사 제거 | ${var##*/} | 비탐욕적 #만 구현됨 |
%% 탐욕적 접미사 제거 | ${var%%.*} | 비탐욕적 %만 구현됨 |
| 부분 문자열 추출 | ${var:0:3} | 다른 연산자이며 PKGBUILD에서 드묾 |
| 패턴 치환 | ${var//foo/bar} | 다른 연산자이며 PKGBUILD에서 드묾 |
| 산술 확장 | $((pkgver + 1)) | 버전 추적 범위를 벗어남 |
| 중첩 확장 | ${${var}#prefix} | 유효한 POSIX가 아니며 실제로 사용되지 않음 |
PKGBUILD에서 위 구문 중 하나를 사용하여 자동화가 건너뛰는 경우, 할당을 일반 var=value 줄로 다시 작성하거나 버전을 수동으로 업데이트하는 PR을 열 수 있습니다.
LOL Omuamua