2 Repositories and Priority.ar
Anagnostakis Ioannis edited this page 2026-06-30 21:10:06 +03:00
This file contains invisible Unicode characters

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

المستودعات والأولوية

هذه هي الفكرة التي تُعرِّف slacker، وما يُميّزه عن أداة مرايا بسيطة: كل مستودعٍ يعيش في نموذجٍ واحدٍ مرتَّبٍ حسب الأولوية، والأولوية لا تُنتهَك بصمتٍ أبدًا.


قاعدة الأولوية

حين يُقدِّم اسمَ الحزمة نفسه عدّةُ مستودعات، يفوز الذي من المستودع الأعلى أولوية. والأهم:

الحزمة المثبَّتة لا تُنقَل أبدًا بصمتٍ إلى مستودعٍ آخر، ولا يُخفَّض إصدارها أبدًا. ولا يُقترَح مرشَّحٌ إلا من مستودعٍ ذي أولويةٍ أعلى أو مساوية. والاستثناء الوحيد هو repo:name صريح.

لذا فإن منح مستودعٍ أولويةً عاليةً متمايزةً يقفل حزمه: لا يستطيع أيُّ شيءٍ من مستودعٍ أدنى أن يستبدلها، ولو برقم إصدارٍ أحدث.

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
  I["حزمة مثبَّتة<br/>(الـ build tag = مصدرها)"] --> D{"أولوية المستودع المرشَّح<br/>مقابل المصدر المثبَّت"}
  D -->|أعلى أو مساوية| U["يجوز ترقية / استبدال"]
  D -->|أدنى| K["تُبقى - لا يُخفَّض إصدارها أبدًا<br/>لا تُنقَل أبدًا"]
  PIN["repo:name"] -. "يفرض مستودعًا,<br/>متجاوزًا الأولوية" .-> U
  classDef grey fill:#0d1117,stroke:#6e7781,color:#8b949e;
  classDef blue fill:#0d1117,stroke:#1f6feb,color:#e6edf3;
  classDef green fill:#0d1117,stroke:#2ea043,color:#e6edf3;
  class I,PIN grey
  class D blue
  class U green
  class K grey

كيف يعرف slacker «مصدر» حزمةٍ مثبَّتةٍ دون قاعدة بيانات؟ من الـ build tag الخاص بها — حقل build منقوصًا منه الأرقام الأولى (1_SBo_SBo، 7cfcf، 1 → رسمي). سطرُ tag-priority من المستخدم، أو المستودع الثنائي الأعلى أولويةً الذي يُقدِّم ذلك الوسم (cf → conraid، alien → alienbob، يُكتشَف تلقائيًّا)، هو ما يُقرِّر الأولوية التي تنتمي إليها.


ملف repos

# priority  name        url|mirror|mirror/<subpath>                          [flags]
100         slackware   mirror                                                official
200         patches     mirror/patches                                        subtree immutable
90          extras      mirror/extra                                          subtree immutable
85          testing     mirror/testing                                        subtree immutable
80          conraid     https://slackers.it/repository/slackware64-current    immutable
60          alienbob    https://slackware.nl/people/alien/sbrepos/current/x86_64
# أسطر tag-priority (يجوز أن تتشارك أولوية واحدة):
100         SBo         _SBo
100         local       _rtz

حقل URL

الصيغة المعنى
رابطٌ حرفي https:// أو http:// أو file:// (الأخير لنسخةٍ محلية / NFS / وسيطٍ مُركَّب — ثلاث شَرَطاتٍ مائلة للمسار المطلق)
mirror السطر المُفعَّل من mirrors، كما هو — استخدمه للمستودع الرسمي
mirror/<مسار-فرعي> المرآة المُفعَّلة مع إلحاق مسارٍ فرعي (mirror/extra، mirror/testing، mirror/patches) — شجرةٌ فرعيةٌ تتبع المرآة التي اخترتها

يشير الرابط إلى جذر المستودع الذي يحوي PACKAGES.TXT؛ وللمرايا الرسمية، يقع MANIFEST.bz2 في مجلَّدٍ فرعيٍّ حسب المعمارية يجده slacker تلقائيًّا.

الأعلام

العلم ما يفعله
official يُعلِّم المستودع المتتبَّع: فهو يُغذّي show-changelog وهو الافتراضي لـ install-new. يبقى موضعه بالأولوية فقط — فالمستودع الرسمي يمكن أن يقع في أيِّ مكان.
immutable كل حزمةٍ تُنسَب إلى هذا المستودع تبقى خارج clean-system. استخدمه لما تُبقيه مثبَّتًا من extra/testing/patches، بدل إدراج كلٍّ منها في القائمة السوداء.
subtree هذا الرابط شجرةٌ فرعيةٌ من توزيعة Slackware (extra، patches، testing، pasture). يُدرِج PACKAGES.TXT الخاص بها مواقع نسبيّةً إلى جذر التوزيعة، فتُجلَب الحزم وGPG-KEY من الرابط الأب (الجذر) بينما تأتي البيانات الوصفية من الرابط نفسه. وبدونه، تُعطي هذه الحزم 404 مع جزء مسارٍ مكرَّر. ويجب أن تحمل الأشجار الفرعية الأربع هذا العلم دائمًا.
verify=... تجاوزُ التحقُّق لكل مستودع (انظر Security).

mirror/extra + subtree زوجٌ متلازم. يحلُّ mirror/extra الرابط؛ ويُصحِّح subtree كيفية جلب الحزم والمفتاح منه.


التثبيت (pinning) والمحدِّدات

قد يكون PATTERN في سطر الأوامر:

الصيغة يُطابِق
firefox اسم حزمةٍ مضبوطًا تمامًا
python سلسلةً جزئيّة من الاسم — كل python-*
kde سلسلة Slackware (a، ap، d، k، kde، l، n، t، x، xap، xfce، y، …) — تلك السلسلة فقط، وليس السلاسل الجزئية أبدًا
repo:name pin — يفرض مستودعًا بصرف النظر عن الأولوية (مثل alienbob:vlc)
@repo محدِّد مجموعة — كل حزمةٍ في ذلك المستودع (install @gnome، remove @gnome)
@_tag كل حزمةٍ تحمل وسم البناء ذاك (remove @_SBo)

الـ @ إلزامي، كي لا تُؤخَذ كلمةٌ مجرَّدةٌ على أنها مستودع. ويُعطي @repo/@_tag المجهول اقتراح «did you mean» ويُدرِج المستودعات والأوسمة المتاحة.

حين يُطابِق نمطٌ أكثر من حزمة، تُظهِر install/upgrade/reinstall/remove قائمةً مرقَّمة — Enter للكل، أرقام/نطاقات مثل 1 3 5 أو 2-4، وn للإلغاء.

لا محرف بدلٍ * للاختيار في سطر الأوامر. فالـ * غير المُقتبَس تُوسِّعه الصدفة (shell) لديك إلى أسماء ملفّات المجلَّد الحالي قبل تشغيل slacker (لا يرى slacker الـ * أبدًا ولا يقرأ مجلَّدك)؛ وإن أنتج ذلك سيلًا من وسائط ليست حزمًا، يُدرِك slacker ذلك ويرفض الأمر دون تغيير أيِّ شيء. اقتبس نمطًا حرفيًّا، أو استخدم @repo لمستودعٍ كامل. (وBlacklist هي الموضع الوحيد الذي تكون فيه الأنماط فعلًا glob/regex.)


إدارة المستودعات من سطر الأوامر

slacker add-repo  85 ktown https://slackware.nl/people/alien/ktown/current/x86_64
slacker add-repo  90 extras mirror/extra subtree immutable
slacker del-repo  ktown
slacker pri-repo  95 extras          # إعادة ضبط أولوية مستودعٍ قائم
slacker add-tag   100 SBo _SBo
slacker del-tag   _SBo
slacker list-repos          # الأولوية، verify، الأعلام، أعداد المثبَّت

يتحقّق add-repo من السطر، ويجلب المستودع ويفحصه (vets) بعد التأكيد (انظر Security).

يُغيِّر pri-repo PRIORITY NAME أولوية مستودعٍ تملكه سلفًا. يتحقّق من أن NAME مستودعٌ مُفعَّل (مقترِحًا أقرب تطابقٍ عند خطأٍ مطبعي)، ويرفض PRIORITY يحملها مستودعٌ آخر، مُسمّيًا التعارض كي تختار قيمةً أخرى — إذ يجب أن تبقى الأولويات متمايزة. ولا يُعاد كتابة إلا أولوية ذلك السطر؛ أما الرابط والأعلام فيبقيان تمامًا كما كانا.