
Athena OS è una distro basata su Arch/Nix focalizzata sulla Cybersecurity. Impara, esercitati e divertiti con qualsiasi strumento di hacking!
I pacchetti in questo repository vengono mantenuti aggiornati automaticamente tramite un workflow GitHub Actions giornaliero basato su nvchecker.
L'automazione viene eseguita ogni giorno (e può anche essere attivata manualmente) e segue i seguenti passaggi:
Generazione della configurazione — .nvchecker/generate-nvchecker-config.py esamina ogni PKGBUILD sotto src/ e genera automaticamente .nvchecker/nvchecker.toml. Ogni pacchetto viene classificato come uno dei seguenti:
pkgver= statico e un URL sorgente remoto. Viene monitorato tramite l'ultimo tag/release sulla piattaforma di hosting.pkgver() e una sorgente git+https://. Viene monitorato tramite l'ultimo commit upstream.Controllo versione — nvchecker interroga l'upstream di ogni pacchetto monitorato e scrive i risultati in .nvchecker/newver.json. Questi vengono confrontati con .nvchecker/oldver.json (committato nel repository) per trovare i pacchetti che hanno una nuova versione disponibile.
Aggiornamento PKGBUILD e PR — per ogni pacchetto obsoleto il workflow:
auto-update/<pkgname>-<newver>.pkgver e reimposta pkgrel a 1 nel PKGBUILD.updpkgsums.pkgver() localmente per calcolare la stringa di versione reale in stile Arch (es. 131.940a5d3) e mantiene sha512sums=('SKIP') così com'è.auto-update per la revisione umana prima che tutto arrivi su main.Salvataggio dello stato — .nvchecker/oldver.json viene aggiornato con le versioni viste in questa esecuzione e committato di nuovo su main, così la prossima esecuzione apre PR solo per modifiche realmente nuove.
| Piattaforma | Rilevamento |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + self-hosted) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (self-hosted) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
Sia il generatore di configurazione che il workflow CI risolvono i riferimenti alle variabili shell nelle righe source= in modo che URL indiretti come il seguente vengano gestiti correttamente:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Sono supportate le seguenti forme di espansione dei parametri bash:
| Sintassi | Significato | Esempio |
|---|---|---|
$var / ${var} | Sostituzione semplice | $pkgname → athena-settings |
${var#prefix} | Rimuovi il prefisso corrispondente più corto | ${pkgname#athena-} → settings |
${var%suffix} | Rimuovi il suffisso corrispondente più corto | ${pkgname%-git} → athena-settings |
I seguenti costrutti bash non vengono risolti dall'automazione. I PKGBUILD che si basano su di essi verranno saltati con garbo con una nota informativa: non viene generato alcun errore e possono sempre essere aggiornati manualmente.
| Sintassi non supportata | Esempio | Motivazione |
|---|---|---|
## rimozione greedy del prefisso | ${var##*/} | Solo # non greedy è implementato |
%% rimozione greedy del suffisso | ${var%%.*} | Solo % non greedy è implementato |
| Estrazione di sottostringhe | ${var:0:3} | Operatore diverso, raro nei PKGBUILD |
| Sostituzione di pattern | ${var//foo/bar} | Operatore diverso, raro nei PKGBUILD |
| Espansione aritmetica | $((pkgver + 1)) | Fuori ambito per il monitoraggio delle versioni |
| Espansioni annidate | ${${var}#prefix} | Non valido POSIX; non usato nella pratica |
Se il tuo PKGBUILD utilizza uno dei costrutti sopra e l'automazione lo salta, puoi riscrivere l'assegnazione come una semplice riga var=value oppure aprire una PR aggiornando manualmente la versione.