
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 giornaliero di GitHub Actions 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 analizza ogni PKGBUILD sotto src/ e genera automaticamente .nvchecker/nvchecker.toml. Ogni pacchetto viene classificato in una delle seguenti categorie:
pkgver= statico e un URL sorgente remoto. Monitorato tramite l'ultimo tag/release sulla piattaforma di hosting.pkgver() e una sorgente git+https://. Monitorato tramite l'ultimo commit upstream.Controllo delle versioni - nvchecker interroga l'upstream di ogni pacchetto monitorato e scrive i risultati in .nvchecker/newver.json. Questo viene confrontato con .nvchecker/oldver.json (committato nel repository) per individuare i pacchetti per cui è disponibile una nuova versione.
Aggiornamento PKGBUILD e PR - per ogni pacchetto non aggiornato il workflow:
auto-update/<pkgname>-<newver>.pkgver e reimposta pkgrel a 1 nel PKGBUILD.updpkgsums.pkgver() per calcolare la stringa di versione reale in stile Arch (ad es. 131.940a5d3), e mantiene sha512sums=('SKIP') così com'è.auto-update per la revisione umana prima che qualsiasi cosa arrivi su main.Salvataggio dello stato - .nvchecker/oldver.json viene aggiornato con le versioni viste in questa esecuzione e sottoposto a commit su main, così l'esecuzione successiva 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> |
Il generatore di configurazione e il workflow CI risolvono entrambi i riferimenti alle variabili shell nelle righe source= in modo che URL indiretti come i seguenti siano gestiti correttamente:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Le seguenti forme di espansione dei parametri bash sono supportate:
| Sintassi | Significato | Esempio |
|---|---|---|
$var / ${var} | Sostituzione semplice | $pkgname → athena-settings |
${var#prefix} | Rimuove il prefisso corrispondente più corto | ${pkgname#athena-} → settings |
${var%suffix} | Rimuove il suffisso corrispondente più corto | ${pkgname%-git} → athena-settings |
Le seguenti costrutti bash non vengono risolti dall'automazione. I PKGBUILD che vi fanno affidamento verranno saltati in modo controllato con una nota informativa - non viene generato alcun errore e possono sempre essere aggiornati manualmente.
| Sintassi non supportata | Esempio | Motivo |
|---|---|---|
Rimozione greedy del prefisso ## | ${var##*/} | È implementato solo # non greedy |
Rimozione greedy del suffisso %% | ${var%%.*} | È implementato solo % non greedy |
| 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 tracciamento delle versioni |
| Espansioni annidate | ${${var}#prefix} | Non valido in POSIX; non usato in 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 che aggiorna la versione manualmente.
LOL Omuamua