1 Blacklist_hi
Anagnostakis Ioannis edited this page 2026-07-01 14:26:02 +03:00

EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE

ब्लैकलिस्ट (blacklist)

ब्लैकलिस्ट उन पैकेजों को जमा देती है जिन्हें आप छेड़ना नहीं चाहते, और उन्हें छिपा देती है जिन्हें आप प्रस्तावित नहीं देखना चाहते। नियम /etc/slacker/blacklist में रहते हैं (प्रति पंक्ति एक, टिप्पणी के लिए #), या frozen तथा unfrozen आदेशों द्वारा आपके लिए जोड़े और हटाए जाते हैं।

ब्लैकलिस्ट कमांड-लाइन के PATTERN मिलान से भिन्न है। PATTERN उप-स्ट्रिंग + श्रृंखला

  • ठीक-ठीक होते हैं; जबकि ब्लैकलिस्ट नियम glob या अनैंकर किए गए नियमित व्यंजक होते हैं (साथ ही series/ और @repo क्षेत्रन), जो पूरे पहचानकर्ता name-version-arch-build से मिलाए जाते हैं, ठीक slackpkg की तरह।

नियम वाक्य-विन्यास

[@repo] PATTERN
  • PATTERN एक Slackware श्रृंखला है जब वह / पर समाप्त होता है (जैसे kde/)। अन्यथा वह पूरे पहचानकर्ता से मिलाया गया एक glob या एक अनैंकर किया regex है — slacker आपके लिखे के अनुसार तय करता है:
    • कोई regex वाक्य-विन्यास नहीं → glob. * वर्णों की किसी भी शृंखला से मेल खाता है, ? एक से, और हर अन्य वर्ण (शब्दशः . सहित, जैसे webkit2gtk6.0 या python3.11 में) ज्यों-का-त्यों लिया जाता है। तो vlc-*, webkit2gtk6.0*, *-l10n-* वैसे ही काम करते हैं जैसी आप अपेक्षा करते हैं।
    • regex वाक्य-विन्यास → regex. ऐसा पैटर्न जिसमें [ ] ( ) { } | ^ $ \ वर्ण हो, या .* / .+ («कोई भी वर्ण») मुहावरा हो, ज्यों-का-त्यों regex के रूप में लिया जाता है। तो xf86-.*-202.* 202x बिल्ड पकड़ता है, ^vlc-[0-9] vlc पैकेज पर एंकर होता है, और एक नंगा vlc vlc युक्त किसी भी पहचानकर्ता से मेल खाता है। ठीक मेल हेतु ^...$ से एंकर करें।
  • वैकल्पिक @repo उपसर्ग नियम को एक रिपॉज़िटरी तक सीमित करता है — रिपॉज़िटरी के नाम या बिल्ड टैग से मेल कराते हुए: उपलब्ध पैकेज के लिए, उसका उम्मीदवार रिपॉज़िटरी; स्थापित के लिए, उसका स्रोत। तो @testing xf86-.* testing रिपॉज़िटरी तक सीमित होता है, जबकि @_SBo foo उन पैकेजों तक जो _SBo बिल्ड टैग रखते हैं।

जमा बनाम छिपा

मेल किस अवस्था में है… प्रभाव
स्थापित वह उम्मीदवार जमा (frozen) है — इसे ऐसे बरता जाता है मानो उसका रिपॉज़िटरी पैकेज देता ही नहीं; पैकेज स्वयं कभी clean-system द्वारा सूचीबद्ध नहीं होता
अस्थापित install-new, उन्नयन और check-updates से छिपा दिया जाता है, पर search/info द्वारा [blacklisted] चिह्नित अब भी दिखाया जाता है

ब्लैकलिस्ट का पालन तंत्र बदलने वाला हर आदेश करता है (reinstall सहित)।

जमाव एक फ़ॉलबैक है, पिन नहीं

जमाव केवल स्थापित संस्करण को पिन नहीं करता। एक जमा उम्मीदवार को ऐसे बरता जाता है मानो उसका रिपॉज़िटरी पैकेज देता ही नहीं, और तब समाधान शेष (बिना-जमे) उम्मीदवारों पर सामान्य रूप से प्राथमिकता के अनुसार आगे बढ़ता है। एक स्थापित पैकेज केवल तभी अपरिवर्तित रोक रखा जाता है जब वह जिन सभी उम्मीदवारों पर विचार करता, वे सब जमा हों।

  • बिना @repo का frozen xf86-.* उस नाम को हर रिपॉज़िटरी में जमा देता है → वह हर जगह रोक रखा जाता है।
  • सीमित @testing xf86-.* केवल testing के उम्मीदवार को जमाता है → समाधान प्राथमिकता से अगले रिपॉज़िटरी (जैसे slackware) पर गिर जाता है, और उस रिपॉज़िटरी के अद्यतन बहते रहते हैं।

फ़ॉलबैक कभी उस स्रोत की प्राथमिकता से नीचे नहीं जाता जहाँ से पैकेज इस समय स्थापित है, इसलिए जमाव कभी अवनयन (downgrade) नहीं बनता; यदि एकमात्र बिना-जमा उम्मीदवार उससे नीचे आता, तो पैकेज उसके बजाय रोक रखा जाता है। एक pin पहले उम्मीदवार-समुच्चय को सीमित करता है, और जमाव उसी के भीतर लागू होता है, इसलिए एक ही पैकेज जो पिन और जमा दोनों है, रोक रखा जाता है।


frozen आदेश

frozen नियमों को सत्यापित करता है और आपके लिए उन्हें ब्लैकलिस्ट में जोड़ देता है।

slacker frozen "@alienbob vlc-[0-9]"     # केवल alienbob का vlc जमाएँ (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 जमाएँ

मान लें आप alienbob से vlc रखते हैं और कभी नहीं चाहते कि वह बदला या हटाया जाए:

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- कुल को, प्लगइन सहित, जमा देता है; जब आप केवल vlc पैकेज चाहें तो regex ^vlc-[0-9] का उपयोग करें।)


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 का उपयोग करें (वह glob और regex स्वीकारता है)।
  • किसी पैकेज का अधिक-से-अधिक एक pin होता है। उसे किसी अन्य रिपॉज़िटरी पर पिन करना पुराने को बदल देता है।
  • यदि पिन किया रिपॉज़िटरी इस समय पैकेज नहीं देता, तो पैकेज बस ज्यों-का-त्यों रहता है (कभी कहीं और से नहीं खींचा जाता) जब तक वह रिपॉज़िटरी उसे न दे। slacker status ऐसे pin को चिह्नित करता है जिसका रिपॉज़िटरी सक्रिय नहीं है, और del-repo आपको चेताता है यदि जिस रिपॉज़िटरी को आप हटा रहे हैं उस पर पैकेज पिन किए हों।
  • clean-system में, अकेला pin किसी पैकेज की रक्षा नहीं करता। पर एक बाहरी पैकेज जो पिन किया गया है और सचमुच उसी रिपॉज़िटरी से स्थापित हुआ जिस पर वह पिन है, एक अलग चरण में पेश किया जाता है — [R]emove all / [K]eep all / [P]rompt each, जिसका डिफ़ॉल्ट Keep है (pin एक स्पष्ट चुनाव है)। एक पिन किया नाम जिसकी स्थापित प्रति किसी अन्य स्रोत से आई, उसे वह चरण अनदेखा करता है और सामान्य clean-system तर्क का पालन करता है।
  • एक ही पैकेज पर जमाना सदा pin पर जीतता है: यदि vlc एक साथ जमा और पिन दोनों है, तो जमाना लागू होता है और pin तब तक कुछ नहीं करता जब तक आप उस पर unfrozen न करें।

Pin बनाम ऊपर के उदाहरण का सीमित जमाव: @alienbob vlc alienbob के vlc को जमाता है (और अन्य रिपॉज़िटरीयों को उसे प्राथमिकता से अद्यतन करने देता है); @alienbob 100% vlc vlc को alienbob पर पिन करता है (और किसी अन्य रिपॉज़िटरी को उसे देने नहीं देता)। ये विलोम हैं।


ब्लैकलिस्ट बनाम रिपॉज़िटरी क्वारंटीन

ये भिन्न समस्याएँ हल करते हैं:

ब्लैकलिस्ट (frozen) क्वारंटीन (distrust-repo)
दायरा विशिष्ट पैकेज (regex/श्रृंखला द्वारा) एक पूरा रिपॉज़िटरी
प्रभाव उन पैकेजों को जमाना / छिपाना रिपॉज़िटरी कोई भी पैकेज नहीं देता
किसके लिए «इस पैकेज को कभी न छेड़ें» «अभी इस स्रोत पर भरोसा न करें»

क्वारंटीन मॉडल के लिए देखें Security