
Athena OS ist eine auf Arch/Nix basierende Distribution, die sich auf Cybersicherheit konzentriert. Lerne, übe und genieße mit jedem Hacking-Tool!
Die Pakete in diesem Repository werden automatisch über einen täglichen GitHub-Actions-Workflow auf dem neuesten Stand gehalten, der von nvchecker unterstützt wird.
Die Automatisierung läuft jeden Tag (und kann auch manuell ausgelöst werden) und durchläuft die folgenden Schritte:
Generierung der Konfiguration — .nvchecker/generate-nvchecker-config.py durchsucht jedes PKGBUILD unter src/ und erzeugt automatisch .nvchecker/nvchecker.toml. Jedes Paket wird einer der folgenden Kategorien zugeordnet:
pkgver= und eine Remote-Quell-URL. Wird anhand des neuesten Tags/Releases auf der Hosting-Plattform verfolgt.pkgver()-Funktion und eine git+https://-Quelle. Wird anhand des neuesten Upstream-Commits verfolgt.Versionsprüfung — nvchecker fragt den Upstream jedes verfolgten Pakets ab und schreibt die Ergebnisse in .nvchecker/newver.json. Diese werden mit .nvchecker/oldver.json (im Repo committet) verglichen, um Pakete zu finden, für die eine neue Version verfügbar ist.
PKGBUILD-Update & PR — für jedes veraltete Paket führt der Workflow Folgendes aus:
auto-update/<pkgname>-<newver>.pkgver und setzt pkgrel im PKGBUILD auf 1 zurück.updpkgsums neu.pkgver()-Funktion lokal aus, um die echte Arch-typische Versionszeichenfolge zu berechnen (z. B. 131.940a5d3), und lässt sha512sums=('SKIP') unverändert.auto-update zur manuellen Überprüfung, bevor etwas auf main landet.Speicherung des Status — .nvchecker/oldver.json wird mit den in diesem Lauf gesehenen Versionen aktualisiert und zurück auf main committet, sodass der nächste Lauf nur für wirklich neue Änderungen PRs eröffnet.
| Plattform | Erkennung |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + selbst gehostet) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (selbst gehostet) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
Sowohl der Konfigurationsgenerator als auch der CI-Workflow lösen Shell-Variablenreferenzen in source=-Zeilen auf, sodass indirekte URLs wie die folgende korrekt verarbeitet werden:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Die folgenden Bash-Parameterexpansionsformen werden unterstützt:
| Syntax | Bedeutung | Beispiel |
|---|---|---|
$var / ${var} | Einfache Ersetzung | $pkgname → athena-settings |
${var#prefix} | Kürzestes passendes Präfix entfernen | ${pkgname#athena-} → settings |
${var%suffix} | Kürzestes passendes Suffix entfernen | ${pkgname%-git} → athena-settings |
Die folgenden Bash-Konstrukte werden von der Automatisierung nicht aufgelöst. PKGBUILDs, die darauf angewiesen sind, werden mit einem informativen Hinweis sauber übersprungen – es wird kein Fehler ausgelöst, und sie können jederzeit manuell aktualisiert werden.
| Nicht unterstützte Syntax | Beispiel | Grund |
|---|---|---|
## gieriges Präfix-Entfernen | ${var##*/} | Nur nicht-gieriges # ist implementiert |
%% gieriges Suffix-Entfernen | ${var%%.*} | Nur nicht-gieriges % ist implementiert |
| Substring-Extraktion | ${var:0:3} | Anderer Operator, in PKGBUILDs selten |
| Musterersetzung | ${var//foo/bar} | Anderer Operator, in PKGBUILDs selten |
| Arithmetische Expansion | $((pkgver + 1)) | Nicht Teil der Versionsverfolgung |
| Verschachtelte Expansionen | ${${var}#prefix} | Nicht POSIX-konform; in der Praxis nicht verwendet |
Wenn dein PKGBUILD eines der oben genannten Konstrukte verwendet und die Automatisierung es überspringt, kannst du die Zuweisung entweder als einfache var=value-Zeile umschreiben oder einen PR eröffnen, der die Version manuell aktualisiert.