
Athena OS — это дистрибутив на базе Arch/Nix, ориентированный на кибербезопасность. Учитесь, практикуйтесь и получайте удовольствие с любым инструментом для взлома!
Пакеты в этом репозитории автоматически поддерживаются в актуальном состоянии с помощью ежедневного рабочего процесса GitHub Actions на базе nvchecker.
Автоматизация запускается каждый день (а также может быть запущена вручную) и выполняет следующие шаги:
Генерация конфигурации — .nvchecker/generate-nvchecker-config.py сканирует все PKGBUILD в src/ и автоматически генерирует .nvchecker/nvchecker.toml. Каждый пакет классифицируется как один из:
pkgver= и удаленный URL источника. Отслеживается по последнему тегу/релизу на платформе хостинга.pkgver() и источник git+https://. Отслеживается по последнему коммиту в вышестоящем репозитории.Проверка версии — nvchecker запрашивает вышестоящий репозиторий для каждого отслеживаемого пакета и записывает результаты в .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 оба разрешают ссылки на переменные оболочки в строках 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 с ручным обновлением версии.