
قم بتعزيز إعدادات مدير الحزم الخاص بك ضد هجمات سلسلة التوريد.
```text
_ _
| | ___ _ __ ___ __ _ _ _ __ _ _ __ | |
/
|/ _ \ '_ \/ __|/ _ | | | |/ | '__/ _ |
| (| | __/ |) _ \ (| | || | (| | | | (| |
_,_|_| ./|/_, |_,|_,|| _,|
|| |___/
احمِ تبعياتك من هجمات سلسلة التوريد. **ثنائي ثابت واحد، لا تبعيات لحزم Rust.**
بواسطة **[[arnica](https://arnica.io?utm_source=depsguard&utm_medium=referral&utm_campaign=community)]**
## جدول المحتويات
- [نظرة عامة](#overview)
- [تثبيت](#install)
- [الاستخدام](#usage)
- [ما يتم فحصه](#what-gets-checked)
- [مواقع ملفات الإعدادات](#config-file-locations)
- [إصلاح أمني عاجل](#urgent-security-fix)
- [النسخ الاحتياطي والاستعادة](#backups-and-restore)
- [كيف يعمل](#how-it-works)
- [استكشاف الأخطاء وإصلاحها](#troubleshooting)
- [المساعدة والملاحظات](#help--feedback)
- [الأدلة](#guides)
- [انظر أيضًا](#see-also)
- [الترخيص](#license)
## نظرة عامة
يبحث DepsGuard عن **npm** و **pnpm** و **yarn** و **bun** و **uv** و **pip** و **poetry** و **aube** على جهازك، ويقرأ ملفات الإعدادات الخاصة بها، ويقارنها بإعدادات سلسلة التوريد الموصى بها، ويمكنه **تطبيق الإصلاحات بشكل تفاعلي**. كما يفحص أيضًا إعدادات **Renovate** و **Dependabot** في مستودعاتك. لا يقوم أبدًا بتشغيل تثبيت الحزم؛ بل يقوم فقط بتعديل ملفات الإعدادات التي توافق عليها، ويكتب **نسخًا احتياطية** قبل أي تغيير.
### الميزات الرئيسية
- واجهة تفاعلية TUI: فحص، مراجعة، تبديل الإصلاحات، تطبيق
- أمر فرعي `scan` للتقرير للقراءة فقط
- أمر فرعي `restore` لاختيار نسخة احتياطية واسترجاع ملف
- متعدد المنصات: Linux و macOS و Windows
- لا توجد حزم Rust تابعة لجهات خارجية مرفقة (stdlib + قدر صغير من FFI المنصة للطرفية)
### المكدس التقني
| المجال | التفاصيل |
|------|---------|
| لغة | Rust (MSRV **1.74**، راجع `Cargo.toml`) |
| CLI / TUI | `src/main.rs`, `src/ui.rs`, `src/term.rs` |
| منطق الإعدادات | `src/manager.rs`, `src/fix.rs` |
| الموقع | موقع ثابت تحت `docs/` (منفصل عن الثنائي) |
## تثبيت
### ثنائيات مُجمَّعة مسبقًا
يتضمن كل [إصدار GitHub](https://github.com/arnica/depsguard/releases) أرشيفات لـ:
- Linux: `x86_64` (glibc)، `x86_64` (musl)، `aarch64` (glibc)
- macOS: Intel و Apple Silicon
- Windows: ملف ZIP لـ `x86_64` يحتوي على `depsguard.exe`
قم بتنزيل الأرشيف لمنصتك، قم بفك ضغطه، وضع الثنائي في `PATH` الخاص بك.
تحقق من التكامل باستخدام ملف `.sha256` المطابق بجانب كل أصل في صفحة الإصدار.
### التثبيت حسب المنصة
#### Linux (Debian/Ubuntu عبر APT)```bash
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://depsguard.com/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/depsguard.gpg
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/depsguard.gpg] https://depsguard.com/apt stable main" | sudo tee /etc/apt/sources.list.d/depsguard.list >/dev/null
sudo apt update
sudo apt install depsguard
brew install depsguard
DepsGuard موجود في [homebrew-core](https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/d/depsguard.rb)، لذلك لا حاجة إلى مستودع مخصص (tap).
> **هل تنتقل من المستودع القديم `arnica/depsguard`؟** قم بالتحويل إلى صيغة core formula مرة واحدة:
>
> ```bash
> brew uninstall depsguard
> brew untap arnica/depsguard
> brew update
> brew install depsguard
> ```
#### ويندوز```powershell
# WinGet
winget install Arnica.DepsGuard
# Scoop
scoop bucket add depsguard https://github.com/arnica/depsguard
scoop install depsguard
أو قم بالتنزيل يدويًا عبر PowerShell:```powershell $zip = "$env:TEMP\depsguard.zip" Invoke-WebRequest -Uri "https://github.com/arnica/depsguard/releases/latest/download/depsguard-x86_64-pc-windows-msvc.zip" -OutFile $zip Expand-Archive -LiteralPath $zip -DestinationPath "$env:TEMP\depsguard" -Force Copy-Item "$env:TEMP\depsguard\depsguard.exe" "$HOME\AppData\Local\Microsoft\WindowsApps\depsguard.exe" -Force depsguard.exe --help
### crates.io```bash
cargo install depsguard
يتطلب سلسلة أدوات Rust مع cargo.
إذا كانت مؤسستك تقوم بتوزيع DepsGuard عبر Homebrew أو Scoop أو WinGet، فاستخدم تعليماتهم. إعداد أو أتمتة تلك القنوات (PRs الأساسية لـ Homebrew، buckets، PRs لـ WinGet، أسرار CI) هي وثائق المشرف؛ انظر AGENTS.md تحت الإصدار والتوزيع.
استخدم القناة التي ثبتّ بها:
تحقق من الإصدار المثبت في أي وقت باستخدام depsguard --version، وانظر صفحة الإصدارات للحصول على أحدث إصدار.
git clone https://github.com/arnica/depsguard.git cd depsguard cargo build --release
الملف الثنائي هو `target/release/depsguard` (`.exe` على ويندوز). Rust **1.74+** مطلوب.
## الاستخدام```bash
depsguard # interactive: scan, choose fixes, apply
depsguard scan # report only; no writes (exits 1 if action is needed)
depsguard --no-search # skip recursive file search, check local configs only
depsguard restore # restore from a previous backup
depsguard --help # CLI help
depsguard لتشغيل واجهة TUI التفاعلية. يقوم بمسح نظامك ويعرض جدولًا بالنتائج. اضغط أي مفتاح للمتابعة إلى محدد الإصلاح. يبدأ اكتشاف التكوين على مستوى المستودع من الدليل الحالي ويبحث إلى الأسفل. استخدم depsguard scan لتقرير للقراءة فقط، أو depsguard --no-search لتخطي البحث المتكرر عن الملفات والتحقق فقط من تكوينات المستخدم.
ملاحظة: بعض الإعدادات تتطلب إصدارًا أدنى. إذا كان إصدارك قديمًا جدًا، سترى:
ℹ min-release-age – requires npm ≥ 11.10 (have 10.2.0). قم بالترقية باستخدامnpm install -g npm@latestوأعد التشغيل.
↑ ↓ للتحرك في القائمة (^u ^d للصفحات). اضغط Space لتبديل إصلاح. استخدم مفاتيح التصفية السريعة للتحديد الجماعي حسب الملف: a الكل، n .npmrc، uv.toml، إلخ. – اضغط مرة للتحديد، مرة أخرى لإلغاء التحديد، والثالثة لمسح التصفية. اضغط لعرض الإصلاحات المحددة حاليًا فقط.تتم قراءة ملفات التكوين على مستوى المستخدم من مواقعها القياسية (بما في ذلك المسارات المعتمدة على XDG حيثما يدعمها الأداة). يتم اكتشاف تكوينات المستودع عن طريق البحث إلى الأسفل من الدليل الحالي، مع تخطي الأدلة الكبيرة المعروفة (node_modules، .git، target، Library، .cache، وغيرها) للحفاظ على سرعة المسح. يتم البحث عن جميع ملفات .npmrc و.yarnrc.yml وpnpm-workspace.yaml وتكوينات Renovate وتكوينات Dependabot على مستوى المستودع. يمكن أن توجد إعدادات pnpm في ~/.npmrc (pnpm <= 10 فقط؛ pnpm >= 11 يقرأ فقط إعدادات المصادقة/السجل من .npmrc)، أو ملف التكوين العام لـ pnpm (rc على pnpm <= 10، config.yaml على pnpm >= 11)، أو pnpm-workspace.yaml؛ يتحقق DepsGuard من جميع المواقع الثلاثة بشكل مستقل. بالنسبة لـ pip وuv وpoetry، يقوم DepsGuard بحل ملف التكوين الفعال الوحيد على مستوى المستخدم ويبلغ عن هذا الملف فقط، بدلاً من وضع علامات على الملفات المخفية بشكل منفصل. يقوم pip وpoetry بدمج ملفات التكوين الخاصة بهما حسب الأسبقية (الملف الأعلى أسبقية الذي يحدد فترة التهدئة يفوز، أو الموقع المفضل إذا لم يفعل أي منهما)؛ يقرأ uv ملف مستخدم واحد ( عندما يتم تعيين ، وإلا ) بدلاً من دمج كليهما. بالنسبة لـ bun، إذا كانت هناك عدة ملفات تكوين على مستوى المستخدم (على سبيل المثال مسار XDG ومسار الدليل الرئيسي)، يقوم DepsGuard بمسح كل ملف موجود بشكل منفصل. يقرأ aube نفس مثل npm/pnpm (، بالدقائق) ويتم التحقق منه أيضًا في ملفات المكتشفة على مستوى المستودع؛ يتم مسح pip وpoetry في تكوين المستخدم الخاص بهما ( / ).
إذا كان الإصدار المصحح أحدث من نافذة فترة التهدئة الخاصة بك، أضف استثناءً ضيقًا، وقم بتثبيت الإصلاح، ثم قم بإزالة الاستثناء.
فضل استثناء خاص بالحزمة على خفض فترة التهدئة العامة. ذلك يحافظ على التأخير لكل تبعية أخرى.
قبل تجاوز فترة التهدئة:
قبل تعديل ملف، يقوم DepsGuard بكتابة نسخة احتياطية إلى ~/.depsguard/backups/.
قم بتشغيل depsguard restore لعرض النسخ الاحتياطية واستعادة واحدة.
src/ main.rs CLI args, run loop term.rs Raw mode + input (Unix termios / Windows console FFI) manager.rs Detection, scanning, recommendations fix.rs Read/write .npmrc, TOML, YAML; backup/restore ui.rs Banner, tables, selector
- **عدم استخدام أي مكتبات خارجية من طرف ثالث**: مقصود لأداة صغيرة مجاورة للأمان؛ راجع `AGENTS.md` إذا غيرت هذه السياسة.
- **الألوان** تستخدم تسلسلات ANSI؛ تدعم المحطات الطرفية الحديثة على ويندوز (مثل Windows Terminal).
## استكشاف الأخطاء وإصلاحها
| الأعراض | ما يجب تجربته |
|---------|---------------|
| `depsguard: command not found` | تأكد من أن دليل التثبيت موجود في `PATH`، أو استخدم المسار الكامل للملف الثنائي. |
| أخطاء الإذن عند كتابة الإعدادات | يقوم DepsGuard فقط بتعديل الملفات في ملف تعريف المستخدم الخاص بك؛ قم بتشغيله كمستخدم عادي، وليس بصلاحيات مرتفعة ما لم تكن تلك الملفات مملوكة للمسؤول. |
| المفاتيح لا تعمل على ويندوز | استخدم **Windows Terminal** أو محطة طرفية أخرى تدعم VT؛ قد لا تعالج `cmd.exe` القديمة جميع المفاتيح. |
| مساحات العمل pnpm مفقودة | تأكد من أن `pnpm-workspace.yaml` موجود تحت شجرة دليل منزلك؛ قد لا يتم اكتشاف التخطيطات غير العادية للغاية. |
| فشل `cargo install` | قم بتثبيت Rust عبر [rustup](https://rustup.rs/) واستخدم Rust **≥ 1.74**. |
## المساعدة والملاحظات
- [الإبلاغ عن خطأ أو طلب ميزة](https://github.com/arnica/depsguard/issues)
- [الإبلاغ عن ثغرة أمنية](https://github.com/arnica/depsguard/security/advisories/new) (انظر [`SECURITY.md`](https://github.com/arnica/depsguard/blob/HEAD/SECURITY.md))
- سير العمل التطويري للمساهمين موجود في [`AGENTS.md`](https://github.com/arnica/depsguard/blob/HEAD/AGENTS.md).
## أدلة
تشرح الأدلة المتعمقة على [depsguard.com](https://depsguard.com) كل إعداد تقوية وهجمات سلسلة التوريد التي يدافع عنها:
- [كيفية الحماية من هجمات سلسلة توريد npm](https://depsguard.com/guide/) (الدليل الكامل للتقوية)
- [فترة تبريد التبعية (الحد الأدنى لعمر الإصدار)](https://depsguard.com/cooldown/)
- [حظر سكريبتات التثبيت باستخدام ignore-scripts](https://depsguard.com/ignore-scripts/)
- [حظر التبعيات غير الموثوقة غير المباشرة (block-exotic-subdeps)](https://depsguard.com/block-exotic-subdeps/)
- [الفشل عند وجود سكريبتات بناء غير مراجعة (strict-dep-builds)](https://depsguard.com/strict-dep-builds/)
- [حظر تخفيضات الإثبات (trust-policy)](https://depsguard.com/trust-policy/)
- تقارير الحوادث: [axios](https://depsguard.com/axios-npm-attack/) · [Shai-Hulud](https://depsguard.com/shai-hulud/) · [TanStack](https://depsguard.com/tanstack-npm-attack/)
## انظر أيضًا
- [**فترات التبريد للتبعيات** (`cooldowns.dev`)](https://cooldowns.dev/): دليل مرجعي وأداة مساعدة طرفية مصاحبة (`cooldowns.sh`) تركز تحديدًا على **فترات التبريد حسب الحد الأدنى لعمر الإصدار**. يكمل DepsGuard: يغطي مجموعة أوسع من النظم البيئية على محور التبريد (pip, uv, npm, pnpm, Yarn, Bun, Deno, Cargo)، بينما يغطي DepsGuard npm/pnpm/yarn/bun/aube/uv/pip/poetry بالإضافة إلى Renovate/Dependabot ويضيف إعدادات تقوية أخرى (`ignore-scripts`, `block-exotic-subdeps`, `trust-policy`, `strict-dep-builds`) مع واجهة TUI تفاعلية، معاينة الفروق، والنسخ الاحتياطي/الاستعادة.
## الترخيص
MIT
---
**روابط:** [المستودع](https://github.com/arnica/depsguard) · [موقع التوثيق](https://depsguard.com)
| القناة | Linux | macOS | Windows | أمر التثبيت |
|---|
| APT (مستودع مخصص) | نعم | لا | لا | sudo apt install depsguard (بعد إعداد المستودع أعلاه) |
| crates.io | نعم | نعم | نعم | cargo install depsguard |
| Homebrew (homebrew-core) | نعم | نعم | لا | brew install depsguard |
| Scoop (bucket مخصص) | لا | لا | نعم | scoop bucket add depsguard https://github.com/arnica/depsguard ; scoop install depsguard |
| WinGet | لا | لا | نعم | winget install Arnica.DepsGuard |
| القناة | أمر الترقية |
|---|
| Homebrew | brew update && brew upgrade depsguard |
| APT (مستودع مخصص) | sudo apt update && sudo apt install --only-upgrade depsguard |
| crates.io | cargo install --force depsguard (يعيد تثبيت أحدث إصدار) |
| Scoop | scoop update && scoop update depsguard |
| WinGet | winget upgrade Arnica.DepsGuard |
ufd لرؤية الفرق (diff) لما سيتغير قبل الالتزام بأي شيء.Enter لتطبيق الإصلاحات المحددة. يتم إنشاء نسخة احتياطية بختم زمني قبل كتابة أي ملف.depsguard restore في أي وقت للتراجع من قائمة النسخ الاحتياطية. اضغط q أو Esc للخروج.| المدير | التكوين | الإعداد | الهدف | السبب |
|---|
| npm | ~/.npmrc | min-release-age | 7 (أيام) | تأخير الإصدارات الجديدة تمامًا (يتطلب npm >= 11.10) |
| npm/pnpm | ~/.npmrc | ignore-scripts | true | تقليل مخاطر نصوص التثبيت (npm يلتزم بهذا في .npmrc; pnpm >= 11 يقرأه من pnpm-workspace.yaml / config.yaml العام، وليس من .npmrc) |
| pnpm | ~/.npmrc | minimum-release-age | 10080 (دقيقة) | تأخير الإصدارات الجديدة بمقدار 7 أيام (pnpm 10.16–10.x فقط; pnpm >= 11 يتجاهل .npmrc; استخدم pnpm-workspace.yaml) |
| pnpm | rc العام (pnpm <= 10) | minimum-release-age | 10080 (دقيقة) | تأخير الإصدارات الجديدة بمقدار 7 أيام (يتطلب pnpm >= 10.16) |
| pnpm | rc العام (pnpm <= 10) | block-exotic-subdeps | true | منع التبعيات غير الموثوقة (يتطلب pnpm >= 10.26) |
| pnpm | rc العام (pnpm <= 10) | trust-policy | no-downgrade | منع تخفيضات المصدر (يتطلب pnpm >= 10.21) |
| pnpm | rc العام (pnpm <= 10) | strict-dep-builds | true | الفشل في نصوص البناء غير المراجعة (يتطلب pnpm >= 10.3) |
| pnpm | rc العام (pnpm <= 10) | ignore-scripts | true | منع نصوص التثبيت الضارة |
| pnpm | config.yaml العام (pnpm >= 11) | minimumReleaseAge | 10080 (دقيقة) | تأخير الإصدارات الجديدة بمقدار 7 أيام |
| pnpm | config.yaml العام (pnpm >= 11) | blockExoticSubdeps | true | منع التبعيات غير الموثوقة |
| pnpm | config.yaml العام (pnpm >= 11) | trustPolicy | no-downgrade | منع تخفيضات المصدر |
| pnpm | config.yaml العام (pnpm >= 11) | strictDepBuilds | true | الفشل في نصوص البناء غير المراجعة |
| pnpm | config.yaml العام (pnpm >= 11) | ignoreScripts | true | منع نصوص التثبيت الضارة |
| yarn | .yarnrc.yml | npmMinimalAgeGate | 7d | تأخير الإصدارات الجديدة بمقدار 7 أيام (يتطلب yarn >= 4.10) |
| pnpm | pnpm-workspace.yaml | minimumReleaseAge | 10080 (دقيقة) | تأخير الإصدارات الجديدة بمقدار 7 أيام (يتطلب pnpm >= 10.16) |
| pnpm | pnpm-workspace.yaml | strictDepBuilds | true | الفشل في نصوص البناء غير المراجعة (يتطلب pnpm >= 10.3) |
| pnpm | pnpm-workspace.yaml | trustPolicy | no-downgrade | منع تخفيضات المصدر (يتطلب pnpm >= 10.21) |
| pnpm | pnpm-workspace.yaml | blockExoticSubdeps | true | منع التبعيات غير الموثوقة (يتطلب pnpm >= 10.26) |
| pnpm | pnpm-workspace.yaml | ignoreScripts | true | منع نصوص التثبيت الضارة (يتطلب pnpm >= 10.16) |
| bun | ~/.bunfig.toml | install.minimumReleaseAge | 604800 (ثانية) | تأخير ~7 أيام (يتطلب bun >= 1.3) |
| aube | ~/.npmrc | minimumReleaseAge | 10080 (دقيقة) | تأخير الإصدارات الجديدة بمقدار 7 أيام |
| uv | uv.toml | exclude-newer | 7 days | تأخير الإصدارات الجديدة (يتطلب uv >= 0.9.17) |
| pip | pip.conf ([install]) | uploaded-prior-to | P7D (7 أيام) | تأخير الإصدارات الجديدة (يتطلب pip >= 26.1) |
| poetry | config.toml ([solver]) | min-release-age | 7 (أيام) | تأخير الإصدارات الجديدة (يتطلب poetry >= 2.4) |
| renovate | renovate.json إلخ. | minimumReleaseAge | 7 days | تأخير طلبات تحديث التبعيات بمقدار 7 أيام |
| dependabot | .github/dependabot.yml | cooldown.default-days | 7 | تأخير طلبات تحديث التبعيات بمقدار 7 أيام |
| المدير | لينكس | ماك | ويندوز |
|---|
| npm/pnpm/aube | ~/.npmrc | ~/.npmrc | %USERPROFILE%\.npmrc |
| pnpm العام (pnpm <= 10) | $XDG_CONFIG_HOME/pnpm/rc أو ~/.config/pnpm/rc | $XDG_CONFIG_HOME/pnpm/rc أو ~/Library/Preferences/pnpm/rc | %LOCALAPPDATA%\pnpm\config\rc |
| pnpm العام (pnpm >= 11) | $XDG_CONFIG_HOME/pnpm/config.yaml أو ~/.config/pnpm/config.yaml | $XDG_CONFIG_HOME/pnpm/config.yaml أو ~/Library/Preferences/pnpm/config.yaml | %LOCALAPPDATA%\pnpm\config\config.yaml |
| yarn | ~/.yarnrc.yml | ~/.yarnrc.yml | %USERPROFILE%\.yarnrc.yml |
| pnpm | pnpm-workspace.yaml | pnpm-workspace.yaml | pnpm-workspace.yaml |
| bun | $XDG_CONFIG_HOME/.bunfig.toml أو ~/.bunfig.toml | $XDG_CONFIG_HOME/.bunfig.toml أو ~/.bunfig.toml | %USERPROFILE%\.bunfig.toml |
| uv | $XDG_CONFIG_HOME/uv/uv.toml أو ~/.config/uv/uv.toml | $XDG_CONFIG_HOME/uv/uv.toml أو ~/.config/uv/uv.toml | %APPDATA%\uv\uv.toml |
| pip | $XDG_CONFIG_HOME/pip/pip.conf أو ~/.config/pip/pip.conf | ~/Library/Application Support/pip/pip.conf أو ~/.config/pip/pip.conf (أو $XDG_CONFIG_HOME/pip/pip.conf عند تعيينه) | %APPDATA%\pip\pip.ini |
| poetry | $XDG_CONFIG_HOME/pypoetry/config.toml أو ~/.config/pypoetry/config.toml | $XDG_CONFIG_HOME/pypoetry/config.toml (عند تعيينه) أو ~/Library/Application Support/pypoetry/config.toml | %APPDATA%\pypoetry\config.toml |
| renovate | renovate.json، .renovaterc، .github/renovate.json، إلخ. | (نفس الشيء) | (نفس الشيء) |
| dependabot | .github/dependabot.yml | (نفس الشيء) | (نفس الشيء) |
$XDG_CONFIG_HOME/uv/uv.tomlXDG_CONFIG_HOME~/.config/uv/uv.toml~/.npmrcminimumReleaseAge.npmrcpip.confpypoetry/config.toml| المدير | كيفية تجاوز فترة التهدئة |
|---|
| npm | npm install <pkg>@<ver> --min-release-age=0 |
| pnpm | أضف إدخالاً إلى minimumReleaseAgeExclude في pnpm-workspace.yaml، وقم بتشغيل pnpm add <pkg>@<ver>، ثم قم بإزالة الإدخال. يعمل الاستبعاد حسب اسم الحزمة على pnpm 10.16+؛ تحديد إصدار معين (<pkg>@<ver>) يتطلب أيضًا pnpm 10.19+. لا يوجد لدى pnpm تجاوز موثق لـ CLI لإعداد minimumReleaseAge. |
| yarn | أضف <pkg> (أو نمط glob) إلى npmPreapprovedPackages في .yarnrc.yml، أو قم بتشغيل YARN_NPM_MINIMAL_AGE_GATE=0s yarn up <pkg>@<ver> لأمر واحد. يعفي npmPreapprovedPackages المطابقات من جميع بوابات حزم Yarn، وليس فقط بوابة العمر. |
| bun | أضف <pkg> إلى install.minimumReleaseAgeExcludes في ملف bunfig.toml على مستوى المستودع أو ~/.bunfig.toml على مستوى المستخدم، أو قم بتشغيل bun add <pkg>@<ver> --minimum-release-age 0. |
| aube | أضف <pkg> إلى minimumReleaseAgeExclude في .npmrc، أو قم بتعيين AUBE_MINIMUM_RELEASE_AGE=0 (أو npm_config_minimum_release_age=0) لتثبيت واحد. |
| uv | أضف "<pkg>" = false إلى exclude-newer-package في uv.toml أو pyproject.toml، وقم بتشغيل uv add <pkg>==<ver>، ثم قم بإزالة الإدخال. exclude-newer-package هو تجاوز منفصل لكل حزمة للحد العام exclude-newer. تقبل واجهة سطر الأوامر في uv --exclude-newer-package PACKAGE=DATE ولكن ليس PACKAGE=false. |
| pip | قم بتشغيل pip install <pkg>==<ver> --uploaded-prior-to=P0D لتثبيت واحد. P0D يعطل فترة التهدئة فقط لهذا الأمر؛ لا يحتوي pip على استبعاد لكل حزمة في التكوين. |
| poetry | أضف <pkg> إلى solver.min-release-age-exclude (مفصولة بفواصل) في poetry.toml/config.toml، وقم بتشغيل poetry add <pkg>@<ver>، ثم قم بإزالة الإدخال. solver.min-release-age-exclude-source يعفي كل حزمة من فهرس محدد بدلاً من ذلك. |
| Renovate | تتجاوز التحديثات الأمنية بالفعل minimumReleaseAge. لتحديث إصدار، أضف إدخال packageRules مع matchPackageNames: ["<pkg>"] وminimumReleaseAge: null. |
| Dependabot | تتجاوز التحديثات الأمنية بالفعل cooldown. لتحديث إصدار، أضف <pkg> إلى cooldown.exclude. |