
Athena OS ist eine auf Arch/Nix basierende Distribution, die sich auf Cybersicherheit konzentriert. Lerne, übe und genieße mit jedem Hacking-Tool!

Pakete in diesem Repository werden automatisch über einen täglichen GitHub Actions-Workflow auf dem neuesten Stand gehalten, der von nvchecker angetrieben wird.
Die Automatisierung läuft täglich (und kann auch manuell ausgelöst werden) und durchläuft folgende Schritte:
Konfigurationserstellung — .nvchecker/generate-nvchecker-config.py durchsucht jede PKGBUILD unter src/ und generiert automatisch .nvchecker/nvchecker.toml. Jedes Paket wird in eine der folgenden Kategorien eingeordnet:
pkgver= und eine Remote-Quell-URL. Verfolgt über das neueste Tag/Release auf der Hosting-Plattform.pkgver()-Funktion und eine git+https://-Quelle. Verfolgt über den neuesten Upstream-Commit.Versionsprüfung — nvchecker fragt den Upstream jedes verfolgten Pakets ab und schreibt die Ergebnisse in .nvchecker/newver.json. Dies wird mit .nvchecker/oldver.json (im Repository committet) verglichen, um Pakete zu finden, für die eine neue Version verfügbar ist.
PKGBUILD-Aktualisierung & PR — für jedes veraltete Paket führt der Workflow Folgendes aus:
auto-update/<pkgname>-<newver>.pkgver und setzt pkgrel auf 1 in der PKGBUILD zurück.updpkgsums neu.pkgver()-Funktion lokal aus, um die echte Arch-Versionszeichenkette zu berechnen (z. B. 131.940a5d3), und behält sha512sums=('SKIP') unverändert bei.auto-update zur menschlichen Überprüfung, bevor etwas auf main landet.Status speichern — .nvchecker/oldver.json wird mit den in diesem Lauf gesehenen Versionen aktualisiert und zurück auf main committet, sodass der nächste Lauf nur PRs für wirklich neue Änderungen ö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> |
Der Konfigurationsgenerator und der CI-Workflow lösen beide Shell-Variablenreferenzen in source=-Zeilen auf, sodass indirekte URLs wie die folgende korrekt behandelt 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 Substitution | $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 ordnungsgemäß mit einem Hinweis ü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 |
| Teilstring-Extraktion | ${var:0:3} | Anderer Operator, selten in PKGBUILDs |
| Mustersubstitution | ${var//foo/bar} | Anderer Operator, selten in PKGBUILDs |
| Arithmetische Expansion | $((pkgver + 1)) | Außerhalb des Umfangs der Versionsverfolgung |
| Verschachtelte Expansionen | ${${var}#prefix} | Nicht gültiges POSIX; in der Praxis nicht verwendet |
Wenn deine PKGBUILD eines der oben genannten Konstrukte verwendet und die Automatisierung sie überspringt, kannst du entweder die Zuweisung als einfache var=value-Zeile umschreiben oder einen PR öffnen, der die Version manuell aktualisiert.
LOL Omuamua