This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
القائمة السوداء (blacklist)
تُجمِّد القائمة السوداء الحزم التي لا تريد المساس بها، وتُخفي ما لا تريد أن
يُعرَض عليك. تعيش القواعد في /etc/slacker/blacklist (واحدةٌ في كل سطر، و#
للتعليقات)، أو يُضيفها ويُزيلها لك أمرا frozen وunfrozen.
القائمة السوداء مختلفة عن مطابقة PATTERN في سطر الأوامر. فالـ PATTERN هو سلسلةٌ جزئية + سلسلة + مطابقةٌ تامّة؛ أما قواعد القائمة السوداء فهي globs أو تعابير نمطية غير مثبَّتة (إضافةً إلى نطاق
series/و@repo)، تُطابَق مقابل المعرِّف الكاملname-version-arch-build، كما فيslackpkg.
بنية القاعدة
[@repo] PATTERN
- يكون
PATTERNسلسلة Slackware حين ينتهي بـ/(مثلkde/). وإلا فهو glob أو تعبيرٌ نمطيٌّ غير مثبَّت يُطابَق مقابل المعرِّف الكامل — يُقرِّر slacker بحسب ما كتبت:- لا بنية regex → glob. يطابق
*أيَّ سلسلةٍ من المحارف، ويطابق?محرفًا واحدًا، ويُؤخَذ كل محرفٍ آخر (بما في ذلك النقطة الحرفية.، كما في webkit2gtk6.0أوpython3.11) كما هو. فتعملvlc-*، وwebkit2gtk6.0*، و*-l10n-*كما تتوقّع. - بنية regex → regex. النمط الذي يحوي محرفًا من
[ ] ( ) { } | ^ $ \، أو تعبير «أيّ محارف».*/.+، يُؤخَذ كـ regex كما هو. فتلتقطxf86-.*-202.*بناء 202x، و^vlc-[0-9]تُثبَّت على حزمةvlc، وvlcالمجرَّدة تطابق أيّ معرِّفٍ يحويvlc. ثبِّت بـ^...$للمطابقة التامّة.
- لا بنية regex → glob. يطابق
- يقصر البادئة الاختيارية
@repoالقاعدةَ على مستودعٍ واحد — بمطابقة اسم المستودع أو وسم البناء (build tag): للحزمة المتاحة، مستودعُها المرشَّح؛ وللمثبَّتة، مصدرُها. فـ@testing xf86-.*يقتصر على مستودعtesting، بينما@_SBo fooيقتصر على الحِزم التي تحمل وسم البناء_SBo.
مجمَّد مقابل مخفيّ
| المُطابَق… | الأثر |
|---|---|
| مثبَّت | هذا المرشَّح مجمَّد — يُعامَل كأنّ مستودعه لا يوفّر الحزمة؛ والحزمة نفسها لا تُدرِجها clean-system أبدًا |
| غير مثبَّت | مخفيٌّ من install-new والترقيات وcheck-updates، لكنه يظلُّ يظهر في search/info موسومًا بـ [blacklisted] |
تحترم القائمةَ السوداء كلُّ أمرٍ يُعدِّل النظام (بما في ذلك reinstall).
التجميد رجوعٌ احتياطي، لا تثبيت
لا يكتفي التجميد بتثبيت الإصدار المُثبَّت. فالمرشَّح المجمَّد يُعامَل كأنّ مستودعه لا يوفّر الحزمة إطلاقًا، ثم يتابع الحلُّ عمله عادةً بحسب الأولوية على المرشَّحين الباقين (غير المجمَّدين). ولا تبقى الحزمة المُثبَّتة مُبقاةً دون تغيير إلا حين يكون كلُّ مرشَّحٍ قد ينظر فيه مجمَّدًا.
-
frozen xf86-.*بلا@repoيُجمِّد ذلك الاسم في كل مستودع → فتبقى مُبقاةً في كل مكان. - أما
@testing xf86-.*المقصور فيُجمِّد مرشَّح testing فقط → فيتراجع الحلُّ إلى المستودع التالي بحسب الأولوية (مثلslackware)، وتظلُّ تحديثات ذلك المستودع تتدفّق.
لا ينزل الرجوع الاحتياطي أبدًا دون أولوية المصدر الذي رُكِّبت منه الحزمة حاليًّا، فلا
يصير التجميد قطُّ خفضًا للإصدار؛ وإن كان المرشَّح الوحيد غير المجمَّد أدنى من ذلك، بقيت
الحزمة مُبقاةً بدلًا من ذلك. ويقيِّد الـ pin مجموعةَ المرشَّحين أوّلًا، ثم يُطبَّق
التجميد ضمنها، فالحزمة المثبَّتة بـ pin والمجمَّدة معًا تبقى مُبقاةً.
أمر frozen
يتحقّق frozen من القواعد ويُلحِقها بالقائمة السوداء نيابةً عنك.
slacker frozen "@alienbob vlc-[0-9]" # جمِّد vlc الخاص بـ alienbob فقط (regex)
slacker frozen "vlc-*" # glob: كل ما يبدأ بـ "vlc-"
slacker frozen "webkit2gtk6.0*" # glob؛ النقطة حرفية
slacker frozen kde/ # جمِّد سلسلة kde كاملة
slacker frozen "xf86-.*-202.*" # قاعدة regex
slacker frozen "@conraid ^ffmpeg-" # شبه مضبوطة، مقصورة على conraid
- كل وسيطٍ قاعدةٌ واحدة؛ اقتبس أيَّ قاعدةٍ تحوي فراغات (قاعدة
@repoمثلًا). - يُشير slacker إلى خطأٍ مرجَّح —
@repoلا يُسمّي أيَّ مستودعٍ مُفعَّل، أو regex يحوي فراغًا (لا معرِّف حزمةٍ يحوي فراغات، فهذا عادةً@منسيّ أو زلّة اقتباس) — ويسأل إن كان يُصرِّح بها رغم ذلك. - يطبع ما ستُجمِّده كل قاعدةٍ ويطلب التأكيد. ويتخطّى
--yesالمُطالبات. والقواعد الموجودة سلفًا تُتخطّى.
أمر unfrozen
unfrozen نظيرُ frozen: يُزيل القواعد من القائمة السوداء.
slacker unfrozen # أدرِج القواعد الحالية (لا حاجة إلى root للقراءة)
slacker unfrozen emacs # أزِل القاعدة "emacs"
slacker unfrozen "@alienbob vlc-[0-9]" # أزِل قاعدةً مقصورة (اقتبسها)
slacker unfrozen "xf86-.*-202.*" # المحارف الخاصة تُطابَق حرفيًّا
المطابقة تامّةٌ وحرفية — وليست نمطًا أبدًا. يجب أن يساوي كلُّ وسيطٍ قاعدةً قائمةً
محرفًا بمحرف؛ ومحارف الـ regex الخاصة في القاعدة (.*، *، -، [، ]، /)
تُقارَن كما هي، ولا تُفسَّر. فـ unfrozen "fcitx5*" يُزيل القاعدة fcitx5*
فقط ولا يمسُّ fcitx5-qt أبدًا، وunfrozen fcitx5 (سلسلةٌ أقصر) لا يطابق شيئًا
بدل أن يُزيل fcitx5* بالخطأ. وهذا متعمَّد: القائمة السوداء مليئةٌ بالمحارف الخاصة،
والمطابقة التامّة هي السبيل الآمن الوحيد لإزالة السطر الصحيح.
- شغِّله دون وسيط لطباعة القواعد الحالية، لتنسخ النص الدقيق المراد إزالته.
- تُحفَظ أسطر التعليق والأسطر الفارغة وأيُّ قاعدةٍ لم تُسمِّها كما هي؛ ويُبلَّغ عن قاعدةٍ لم تُوجَد، ولا يُكتَب شيءٌ ما لم تتطابق قاعدةٌ واحدةٌ على الأقل فعليًّا.
- اقتبس أيَّ قاعدةٍ تحوي فراغاتٍ أو محارف صدفةٍ خاصة (قاعدة
@repo، أو*في النهاية)، تمامًا كما فيfrozen.
إزالة قاعدةٍ من الملف يدويًّا تعمل أيضًا — لكن
unfrozenيفعلها بأمان، مع ضمان المطابقة التامّة وإدراج القواعد الحالية.
مثالٌ معالَج: جمِّد vlc من مستودعٍ واحدٍ فقط
لنقل إنك تُبقي vlc من alienbob ولا تريد أبدًا أن يُستبدَل أو يُزال:
slacker frozen "@alienbob vlc-[0-9]"
لماذا vlc-[0-9] وليس vlc فحسب؟ تُطابَق القاعدة دون تثبيت على المعرِّف
الكامل. فـ vlc وحدها ستطابق أيضًا vlc-plugin-foo أو أيَّ شيءٍ يحوي تلك
الحروف؛ بينما vlc-[0-9] تُثبَّت عند حدِّ الإصدار لتطابق حزمة vlc نفسها.
وللمطابقة الصارمة يمكنك كتابة ^vlc-[0-9]. (وتُقبَل أيضًا الـ glob vlc-* — إذ
تُترجَم إلى vlc-.* وتُجمِّد عائلة vlc- كاملةً بما فيها الإضافات؛ استخدم الـ
regex ^vlc-[0-9] حين تريد حزمة vlc فقط.)
التثبيت (Pins): خذ حزمةً من مستودعٍ واحدٍ فقط
يُخزِّن ملف blacklist نفسه أيضًا pins — النقيض الموجب للتجميد. التجميد يقول
لا تأخذ هذه الحزمة أبدًا (أو ليس من هذا المستودع)؛ أما الـ pin فيقول خذ هذه
الحزمة فقط من هذا المستودع، متجاهلًا الأولوية.
أدِر الـ pins بأمرين:
slacker pin alienbob:vlc # يأتي vlc الآن من alienbob فقط، حتى لو قدّم مستودعٌ
# أعلى أولويةً بناءً آخر
slacker unpin vlc # العودة إلى الحلِّ المعتاد بحسب الأولوية
slacker unpin # (دون وسيط) أدرِج الـ pins الحالية
يُكتَب الـ pin في ملف blacklist بعلامة 100%، فيمكنك أيضًا إضافته أو قراءته
يدويًّا:
@alienbob 100% vlc
كيف يتصرّف:
- كل أمرٍ يحترمه — فـ
installوupgradeوupgrade-allتجلب الحزمة من المستودع المُثبَّت فقط، بصرف النظر عن الأولوية. والخطّة التي تتضمّن حزمةً مُثبَّتة تُدرِجها تحت «pinned (taken only from their repo, ignoring priority)»، كما تُبرَز الحزم المجمَّدة. - تستخدم الـ pins اسم حزمةٍ مضبوطًا تمامًا، وليس نمطًا أبدًا (
vlc، لاvlc*). والنقطة الحرفية مقبولة —python3.11وwebkit2gtk6.0اسما pin صالحان. ولتجميد نمط، استخدمfrozenبدلًا منه (فهو يقبل globs و regex). - للحزمة pin واحدٌ على الأكثر. وتثبيتها على مستودعٍ آخر يستبدل القديم.
- إن لم يكن المستودع المُثبَّت يُقدِّم الحزمة حاليًّا، تبقى الحزمة كما هي (ولا
تُجلَب من أيِّ مكانٍ آخر) إلى أن يُقدِّمها ذلك المستودع. ويُشير
slacker statusإلى pin مستودعُه غير مُفعَّل، ويُحذِّركdel-repoإن كانت حزمٌ مُثبَّتةً على المستودع الذي تُزيله. - في
clean-system، لا يحمي الـ pin وحده الحزمة. لكن حزمةً غريبةً مثبَّتةً بـ pin ورُكِّبت فعلًا من المستودع المثبَّتة عليه تُعرَض في خطوةٍ منفصلة — [R]emove all / [K]eep all / [P]rompt each، والافتراض Keep (الـ pin اختيارٌ صريح). أما اسمٌ مثبَّتٌ بـ pin جاءت نسخته المُركَّبة من مصدرٍ آخر فتتجاهله تلك الخطوة ويتبع منطق clean-system المعتاد. - يفوز التجميد دائمًا على الـ pin لنفس الحزمة: فإن كان
vlcمجمَّدًا ومُثبَّتًا معًا، يسري التجميد ولا يفعل الـ pin شيئًا حتى تُلغي التجميد بـ unfrozen.
الـ pin مقابل التجميد المقصور في المثال أعلاه: @alienbob vlc يُجمِّد vlc الخاص
بـ alienbob (ويدع مستودعاتٍ أخرى تُحدِّثه بحسب الأولوية)؛ أما @alienbob 100% vlc
فـ يُثبِّت vlc على alienbob (ولا يدع أيَّ مستودعٍ آخر يُقدِّمه). إنهما نقيضان.
القائمة السوداء مقابل حَجْر المستودع
يحلّان مشكلتين مختلفتين:
القائمة السوداء (frozen) |
الحَجْر (distrust-repo) |
|
|---|---|---|
| النطاق | حزمٌ بعينها (بـ regex/سلسلة) | مستودعٌ بأكمله |
| الأثر | تجميد / إخفاء تلك الحزم | لا يُقدِّم المستودع أيَّ حزمة |
| متى | «لا تمسَّ هذه الحزمة أبدًا» | «لا تثق بهذا المصدر الآن» |
انظر Security لنموذج الحَجْر.
slacker
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors
slacker - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)