
أثينا أو إس هي توزيعة تعتمد على أرش/نيكس وتركز على الأمن السيبراني. تعلم، تدرب واستمتع مع أي أداة اختراق!

يتم إبقاء الحزم في هذا المستودع محدثة تلقائيًا عبر سير عمل GitHub Actions يومي مدعوم بـ nvchecker.
تعمل الأتمتة كل يوم (ويمكن أيضًا تشغيلها يدويًا) وتمر بالخطوات التالية:
توليد الإعدادات — يقوم .nvchecker/generate-nvchecker-config.py بفحص كل PKGBUILD تحت src/ ويولّد تلقائيًا .nvchecker/nvchecker.toml. تُصنَّف كل حزمة كواحدة من:
pkgver= ثابت ورابط مصدر بعيد. تُتبَّع عبر أحدث وسم/إصدار على منصة الاستضافة.pkgver() ومصدر git+https://. تُتبَّع عبر أحدث commit في المنبع.فحص الإصدار — يستعلم 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، بحيث لا تفتح الجولة التالية PRs إلا للتغييرات الجديدة فعليًا.
| المنصة | الكشف |
|---|---|
| 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= بحيث تُعالَج الروابط غير المباشرة التالية بشكل صحيح:
_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} | معامل مختلف، نادر في PKGBUILDs |
| استبدال النمط | ${var//foo/bar} | معامل مختلف، نادر في PKGBUILDs |
| التوسيع الحسابي | $((pkgver + 1)) | خارج نطاق تتبع الإصدارات |
| التوسيعات المتداخلة | ${${var}#prefix} | غير صالح في POSIX؛ لا يُستخدم عمليًا |
إذا كان PKGBUILD الخاص بك يستخدم أيًا مما سبق وتخطته الأتمتة، يمكنك إما إعادة كتابة الإسناد كسطر var=value بسيط أو فتح PR لتحديث الإصدار يدويًا.
LOL Omuamua