
Athena OSは、Arch/NixベースのCybersecurityに特化したディストリビューションです。あらゆるハッキングツールを使って学び、練習し、楽しみましょう!
このリポジトリのパッケージは、nvcheckerを利用した毎日のGitHub Actionsワークフローにより、自動的に最新状態に保たれています。
自動化は毎日実行され(手動でトリガーすることも可能)、以下の手順を実行します:
設定生成 — .nvchecker/generate-nvchecker-config.py が src/ 以下のすべての PKGBUILD をスキャンし、.nvchecker/nvchecker.toml を自動生成します。各パッケージは次のいずれかに分類されます:
pkgver= とリモートソースURLを持ちます。ホスティングプラットフォーム上の最新のタグ/リリースで追跡されます。pkgver() 関数と git+https:// ソースを持ちます。最新のアップストリームコミットで追跡されます。バージョンチェック — nvchecker が追跡対象の各パッケージのアップストリームを照会し、結果を .nvchecker/newver.json に書き込みます。これは .nvchecker/oldver.json(リポジトリにコミット済み)と比較され、新しいバージョンが利用可能なパッケージを特定します。
PKGBUILD更新 & PR — 古くなった各パッケージに対してワークフローは次のことを行います:
auto-update/<pkgname>-<newver> を作成します。PKGBUILD 内の pkgver を更新し、pkgrel を 1 にリセットします。updpkgsums でチェックサムを再生成します。pkgver() 関数を実行して実際のArchスタイルのバージョン文字列(例: 131.940a5d3)を計算し、sha512sums=('SKIP') をそのまま保持します。main にマージされる前に、人間によるレビューのため auto-update ラベルが付いたプルリクエストを開きます。状態保存 — .nvchecker/oldver.json が今回実行で確認されたバージョンで更新され、main にコミットされます。これにより、次回の実行では真に新しい変更に対してのみPRが開かれるようになります。
| プラットフォーム | 検出方法 |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + セルフホステッド) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (セルフホステッド) | 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を開くことができます。