
Athena OS est une distribution basée sur Arch/Nix, axée sur la cybersécurité. Apprenez, pratiquez et amusez-vous avec n’importe quel outil de hacking !
Les paquets de ce dépôt sont maintenus à jour automatiquement grâce à un workflow GitHub Actions quotidien propulsé par nvchecker.
L'automatisation s'exécute chaque jour (et peut également être déclenchée manuellement) et suit les étapes suivantes :
Génération de la configuration — .nvchecker/generate-nvchecker-config.py scanne chaque PKGBUILD sous src/ et génère automatiquement .nvchecker/nvchecker.toml. Chaque paquet est classé dans l'une des catégories suivantes :
pkgver= statique et une URL de source distante. Suivi via le dernier tag/la dernière release sur la plateforme d'hébergement.pkgver() et une source git+https://. Suivi via le dernier commit amont.Vérification des versions — nvchecker interroge l'amont de chaque paquet suivi et écrit les résultats dans .nvchecker/newver.json. Ce fichier est comparé à .nvchecker/oldver.json (présent dans le dépôt) pour détecter les paquets ayant une nouvelle version disponible.
Mise à jour du PKGBUILD et PR — pour chaque paquet obsolète, le workflow :
auto-update/<pkgname>-<newver>.pkgver et réinitialise pkgrel à 1 dans le PKGBUILD.updpkgsums.pkgver() localement pour calculer la véritable chaîne de version au format Arch (par ex. 131.940a5d3), et conserve sha512sums=('SKIP') tel quel.auto-update pour relecture humaine avant que quoi que ce soit n'atterrisse sur main.Sauvegarde de l'état — .nvchecker/oldver.json est mis à jour avec les versions vues lors de cette exécution et réintégré dans main, afin que la prochaine exécution n'ouvre des PR que pour les changements réellement nouveaux.
| Plateforme | Détection |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + auto-hébergé) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (auto-hébergé) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
Le générateur de configuration et le workflow CI résolvent tous deux les références de variables shell dans les lignes source=, afin que les URL indirectes comme la suivante soient traitées correctement :
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Les formes d'expansion de paramètres bash suivantes sont prises en charge :
| Syntaxe | Signification | Exemple |
|---|---|---|
$var / ${var} | Substitution simple | $pkgname → athena-settings |
${var#prefix} | Supprime le préfixe le plus court correspondant | ${pkgname#athena-} → settings |
${var%suffix} | Supprime le suffixe le plus court correspondant | ${pkgname%-git} → athena-settings |
Les constructions bash suivantes ne sont pas résolues par l'automatisation. Les PKGBUILDs qui en dépendent seront ignorés proprement avec une note informative — aucune erreur n'est levée, et ils peuvent toujours être mis à jour manuellement.
| Syntaxe non prise en charge | Exemple | Raison |
|---|---|---|
## suppression gloutonne de préfixe | ${var##*/} | Seule la forme non gloutonne de # est implémentée |
%% suppression gloutonne de suffixe | ${var%%.*} | Seule la forme non gloutonne de % est implémentée |
| Extraction de sous-chaîne | ${var:0:3} | Opérateur différent, rare dans les PKGBUILDs |
| Substitution de motif | ${var//foo/bar} | Opérateur différent, rare dans les PKGBUILDs |
| Expansion arithmétique | $((pkgver + 1)) | Hors du périmètre du suivi de version |
| Expansions imbriquées | ${${var}#prefix} | Non valide en POSIX ; inutilisé en pratique |
Si votre PKGBUILD utilise l'une de ces constructions et que l'automatisation l'ignore, vous pouvez soit réécrire l'affectation comme une simple ligne var=value, soit ouvrir une PR pour mettre à jour la version manuellement.