
Athena OS — это дистрибутив на базе Arch/Nix, ориентированный на кибербезопасность. Учитесь, практикуйтесь и получайте удовольствие с любым инструментом для взлома!

Пакеты в этом репозитории поддерживаются в актуальном состоянии автоматически с помощью ежедневного рабочего процесса GitHub Actions на базе nvchecker.
Автоматизация запускается ежедневно (а также может быть запущена вручную) и выполняет следующие шаги:
Генерация конфигурации — .nvchecker/generate-nvchecker-config.py сканирует каждый PKGBUILD в каталоге src/ и автоматически генерирует .nvchecker/nvchecker.toml. Каждый пакет классифицируется как один из:
pkgver= и URL удалённого источника. Отслеживается по последнему тегу/релизу на хостинговой платформе.pkgver() и источник git+https://. Отслеживается по последнему коммиту в upstream.Проверка версий — nvchecker опрашивает upstream каждого отслеживаемого пакета и записывает результаты в .nvchecker/newver.json. Они сравниваются с .nvchecker/oldver.json (закоммиченным в репозиторий) для поиска пакетов, для которых доступна новая версия.
Обновление PKGBUILD и PR — для каждого устаревшего пакета рабочий процесс:
auto-update/<pkgname>-<newver>.pkgver и сбрасывает pkgrel в 1 в PKGBUILD.updpkgsums.pkgver() локально для вычисления реальной строки версии в стиле Arch (например, 131.940a5d3) и оставляет sha512sums=('SKIP') без изменений.auto-update для проверки человеком, прежде чем что-либо попадёт в main.Сохранение состояния — .nvchecker/oldver.json обновляется версиями, увиденными в этом запуске, и коммитится обратно в main, чтобы следующий запуск открывал PR только для действительно новых изменений.
| Платформа | Обнаружение |
|---|---|
| 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> |
Генератор конфигурации и рабочий процесс CI оба разрешают ссылки на shell-переменные в строках source=, чтобы корректно обрабатывать косвенные URL, подобные следующему:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Поддерживаются следующие формы раскрытия параметров bash:
| Синтаксис | Значение | Пример |
|---|---|---|
$var / ${var} | Простая подстановка | $pkgname → athena-settings |
${var#prefix} | Удалить кратчайший совпадающий префикс | ${pkgname#athena-} → settings |
${var%suffix} | Удалить кратчайший совпадающий суффикс | ${pkgname%-git} → athena-settings |
Следующие конструкции bash не разрешаются автоматизацией. PKGBUILD, которые на них полагаются, будут корректно пропущены с информационным примечанием — ошибка не возникает, и их всегда можно обновить вручную.
| Неподдерживаемый синтаксис | Пример | Причина |
|---|---|---|
Жадное удаление префикса ## | ${var##*/} | Реализовано только нежадное # |
Жадное удаление суффикса %% | ${var%%.*} | Реализовано только нежадное % |
| Извлечение подстроки | ${var:0:3} | Другой оператор, редко встречается в PKGBUILD |
| Замена по шаблону | ${var//foo/bar} | Другой оператор, редко встречается в PKGBUILD |
| Арифметическое раскрытие | $((pkgver + 1)) | Вне области отслеживания версий |
| Вложенные раскрытия | ${${var}#prefix} | Не является допустимым POSIX; на практике не используется |
Если ваш PKGBUILD использует что-либо из вышеперечисленного и автоматизация его пропускает, вы можете либо переписать присваивание в виде простой строки var=value, либо открыть PR с ручным обновлением версии.
LOL Omuamua