मैं उन अद्यतनों को कैसे सीमित करूं जो रिपॉजिटरी के विशिष्ट सेट से उन पर स्थापित हैं? क्या ये संभव भी है?
मैं उन अद्यतनों को कैसे सीमित करूं जो रिपॉजिटरी के विशिष्ट सेट से उन पर स्थापित हैं? क्या ये संभव भी है?
जवाबों:
पिनिंग एक ऐसी प्रक्रिया है जो आपको एक और अधिक संस्करण से पैकेजों को हथियाने के दौरान उबंटू (या किसी अन्य डेबियन सिस्टम) की एक स्थिर रिलीज पर बने रहने की अनुमति देती है। - help.ubuntu.com
apt
नीतियों के माध्यम से पूरी तरह से हटाने के बिना आप कुछ रिपॉजिटरी से स्वचालित अपडेट को अक्षम कर सकते हैं :
रिपॉजिटरी से स्वचालित अपडेट को अक्षम करने के लिए repo
, /etc/apt/preferences.d/repo
निम्न सामग्री के साथ एक फ़ाइल जोड़ें :
Package: *
Pin: release n=repo
Pin-Priority: 50
जो इस भंडार से सभी पैकेजों को पहले से स्थापित पैकेजों की तुलना में कम प्राथमिकता देगा (जिसमें 100 हैं)।
अधिक जानकारी के लिए man apt_preferences
या उबंटू कम्युनिटी विकी को चेक करें ।
apt-cache policy package-name
release n=repo
कोई भी कैश नहीं करेगा
आप -t
विकल्प के साथ एक रिलीज निर्दिष्ट कर सकते हैं । एक उदाहरण के रूप में, मैंने /etc/apt/sources.list
आइसवेज़ेल नवीनतम रिलीज़ को स्थापित करने के लिए निम्न भंडार को जोड़ा है :
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
जैसा कि आप जानते हैं iceweasel
कि आधिकारिक डेबियन भंडार में एक ही पैकेज है। यदि मैं इस विशिष्ट रिलीज़ से आइसव्हील स्थापित करना चाहता / चाहती हूँ:
apt-get install -t squeeze-backports iceweasel
apt-get मैन्युअल पृष्ठ से:
-t, --target-release, --default-release
This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
apt_preferences(5) manual page.
मुझे लगता है कि यह एक बेहतर उपाय है।
अद्यतन : जैसा कि @SuB ने टिप्पणी में उल्लेख किया है, " -t
रिलीज रिपॉजिटरी नाम निर्दिष्ट करता है। उबंटू में कोई रिपॉजिटरी नाम नहीं है (रेडहैट आधारित लाइनक्स जैसे आरएचईएल, फेडोरा, सेंटोस, ...)"।
apt-get
मैनुअल में देखते हैं , -t
निर्दिष्ट करें रिपॉजिटरी नाम नहीं। उबंटू में कोई रिपॉजिटरी नाम नहीं है (
-t xenial
एक पैकेज के लिए काम करता है। लेकिन यह सब निर्भरता अभी भी उच्च संकुल से प्राप्त किया जाएगा
आपको उन रिपॉजिटरी को पिन करना होगा जिन्हें आप 100 से कम प्राथमिकता के साथ इंस्टॉल नहीं करना चाहते हैं। इसका मतलब है ( apt_preference
मैन पेज से)
100 <= P <500
एक संस्करण को स्थापित करने का कारण बनता है जब तक कि कोई संस्करण किसी अन्य वितरण से संबंधित उपलब्ध न हो या स्थापित संस्करण अधिक हाल का हो
और पिनिंग के लिए एक रिपॉजिटरी का चयन करने के लिए, आप रिपॉजिटरी की Release
फ़ाइल से फ़ील्ड का उपयोग करेंगे । जैसे archive
, label
, release
, version
आदि इन क्षेत्रों में से मानों को निर्दिष्ट करके, आप ठीक भंडार चुनकर, उसमें अधिकतम अपना पसंदीदा प्राथमिकता प्रदान कर सकते हैं। चेक apt_preference अधिक जानकारी के लिए पेज।
आगे बढ़ने से पहले, हमें पिनिंग के बारे में कुछ महत्वपूर्ण बात जानना चाहिए। वे शामिल हैं
Release
फ़ाइलों का फ़ील्ड और apt-cache policy
आउटपुट के लिए मैपिंग है
उपयुक्त वरीयता फ़ाइलों का प्रारूप
Release
प्राथमिकताएँ सेट करने के लिए फ़ाइलें फ़ील्ड का उपयोग करना
Release
फ़ाइल और apt-cache policy
आउटपुट के क्षेत्रसे डेबियन विकी लेख
आप इस apt-cache policy
तरह से आउटपुट देखेंगे
500 http://mirrors.ircam.fr/pub/ubuntu/archive xenial/main amd64 Packages
release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=main,b=amd64
इन पंक्तियों में मान Release
फ़ाइलों से आता है ।
विवरण एक रिपॉजिटरी के लिए विवरण सेट करता है। यह apt-cache policy
आउटपुट में नहीं दिखाया गया है
लेबल यह रिपॉजिटरी का लेबल है। कई रिपॉजिटरी में खाली लेबल होते हैं। यह l=<label>
आउटपुट में दिखाया गया है ।
उत्पत्ति यह रिपॉजिटरी की उत्पत्ति के बारे में बताती है। आधिकारिक उबंटू भंडार का Ubuntu
मूल्य है। o=
आउटपुट में दिखाया गया है
संस्करण एक वितरण का संस्करण है। यह Xenial के लिए 16.04 है। v=
आउटपुट में दिखाया गया है
सुइट पुरालेख के समान है । डेबियन विकी से यह डेबियन के वितरण का नाम है इस निर्देशिका में पैकेज (या के लिए डिज़ाइन किए गए हैं), स्थिर, परीक्षण या अस्थिर हैं। । Ubuntu के लिए, ये हैं release-updates
, release-security
आदि उदाहरण के लिए, xenial-updates
, xenial-security
। यह रूप में उत्पादन में दिखाया गया है a=xenial
, a=xenial-security
। PPA इसके लिए सिर्फ रिलीज़ नाम का उपयोग करते हैं, इसीलिए यह Pinning में ज्यादा मदद नहीं करेगा।
घटक लाइसेंसिंग चीज़ के बारे में बताता है। यह main
, multiverse
, restricted
, universe
उबंटू में। आउटपुट के रूप में यह दिखाया गया है c=main
या c=restricted
आदि। अधिकांश पीपीए main
इस क्षेत्र के लिए उपयोग करते हैं, इस प्रकार यह बहुत पिन करने में मदद नहीं करता है।
आर्किटेक्चर OS आर्किटेक्चर के बारे में है। के रूप में b=i386
या b=amd64
आउटपुट में दिखाया गया है
कोडनेम वितरण का रिलीज नाम है। 16.04 के लिए यह है xenial
। 14.04 के लिए यह है trusty
। या के apt-cache policy
रूप में उत्पादन में दिखाया गया है । यह आमतौर पर एक वितरण के लिए सभी रिपॉजिटरी के लिए समान है। इसलिए यह ज्यादा पिन करने में मदद नहीं करता है।n=xenial
n=trusty
apt-cache policy
आउटपुट के साथ शुरू होने वाली दूसरी पंक्ति origin
रिपॉजिटरी के इंटरनेट मूल को बताती है। इसे पिनिंग में भी इस्तेमाल किया जा सकता है। लेकिन Release
फाइल Origin
फील्ड के साथ नहीं मिलनी चाहिए । वो अलग हैं।
हम इन मानों का उपयोग रिपॉजिटरी को पिन करने के लिए करेंगे।
तो, रिपॉजिटरी को प्रतिबंधित करने के लिए हम 1 पिनिंग का उपयोग कैसे करते हैं ?
पिनिंग को नियंत्रित करने के कई तरीके हैं और केवल एक छोटा सा उपसमुच्चय उबंटू के लिए प्रभावी है। एक विवरण स्पष्टीकरण हालांकि उत्तर के दायरे से परे है। कृपया इसके लिए apt_preference
मैन-पेज देखें ।
पिन या उपयुक्त वरीयता फ़ाइलें /etc/apt/preferences.d
फ़ोल्डर में रहती हैं । प्रत्येक पिनिंग में तीन लाइनें होती हैं।
पहली पंक्ति के साथ शुरू होता है Package:
और एक अल्पविराम से अलग संकुल नाम का पालन करते हैं। नियमित अभिव्यक्ति और ग्लब्स की अनुमति है
दूसरी पंक्ति के साथ शुरू होता है Pin:
और इसका उपयोग पैकेज के एक सेट को लक्षित करने के लिए किया जाता है।
यदि हम पैकेज को xenial
अधिक से अधिक पिन करना चाहते हैं xenial-updates
, तो हम उपयोग करेंगे release a=xenial
।
यदि हम 5.0 संस्करण को पिन करना चाहते हैं, तो हम version 5.0
यहां उपयोग करेंगे । ग्लोब पैटेंस की अनुमति है।
या अगर हम मूल से संकुल पिन करना चाहते हैं http://archive.ubuntu.com
, तो हम उपयोग करेंगे origin "archive.ubuntu.com"
। ध्यान दें, हम http://
वहां प्रोटोकॉल नहीं लिखते हैं।
तीसरी पंक्ति के साथ शुरू होता है Pin-Priority:
और यह एक संख्या है। जो ऊपर लक्षित वस्तुओं की प्राथमिकता को दर्शाता है।
Release
प्राथमिकता तय करने के लिए फाइलों के खेतों का उपयोग करनायहाँ एक उदाहरण है
Package: *
Pin: release a=xenial
Pin-Priority: 1001
इस उदाहरण में, xenial
अभिलेखागार के पैकेज की तुलना में अधिक प्राथमिकता दी जाती है xenial-updates
और xenial-security
।
पिन करने के बाद, apt-cache policy nautilus
यह दर्शाता है कि इसने वास्तव में xenial
संग्रह से उच्च- संस्करण वाले संग्रह से संग्रह के निचले संस्करण को उच्च प्राथमिकता दी है xenial-updates
। Candidate:
लाइन को नोटिस करें ।
nautilus:
Installed: 1:3.18.5-0ubuntu1~xenial1
Candidate: 1:3.18.4.is.3.14.3-0ubuntu4
Version table:
*** 1:3.18.5-0ubuntu1~xenial1 100
100 /var/lib/dpkg/status
1:3.18.4.is.3.14.3-0ubuntu5 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
1:3.18.4.is.3.14.3-0ubuntu4 1001
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
लेकिन, अगर हम पीपीए प्रदान किए गए पैकेज पर भी प्राथमिकता देना चाहते हैं, तो यह काम नहीं करेगा। क्योंकि PPA xenial
डिफ़ॉल्ट रूप से समान संग्रह नाम का उपयोग करते हैं । इसलिए, a=xenial
उन पैकेजों पर भी प्राथमिकता देने का प्रावधान लागू होगा। उदाहरण के लिए (सक्षम पीपीए के बाद),
13:31 $ apt-cache policy nautilus
nautilus:
Installed: 1:3.18.5-0ubuntu1~xenial1
Candidate: 1:3.18.5-0ubuntu1~xenial1
Version table:
*** 1:3.18.5-0ubuntu1~xenial1 1001
500 http://ppa.launchpad.net/budgie-remix/ppa/ubuntu xenial/main amd64 Packages
500 http://ppa.launchpad.net/gnome3-team/gnome3/ubuntu xenial/main amd64 Packages
100 /var/lib/dpkg/status
1:3.18.4.is.3.14.3-0ubuntu5 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
1:3.18.4.is.3.14.3-0ubuntu4 1001
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
अब उम्मीदवार संस्करण पीपीए से है। xenial
आधिकारिक उबंटू रेपो और पीपीए के संग्रह के दोनों पैकेजों की प्राथमिकता समान है 1001
, क्योंकि दोनों ही Archive
रिलीज़ फ़ाइल में समान मान का उपयोग करते हैं । सफलतापूर्वक पिन करने के लिए, हमें पिन फ़ाइल में अधिक फ़ील्ड को संयोजित करने की आवश्यकता है।
एक रिपॉजिटरी से पैकेज पिन करने के लिए, हमें apt-cache policy
कमांड से मिली जानकारी का उपयोग करके इसे लक्षित करने की आवश्यकता है । हमने सिर्फ देखा कि a=xenial
एक रिपॉजिटरी को इंगित करने में मदद नहीं करेगा। हमें एक रिपॉजिटरी को लक्षित करने के लिए एक वरीयता फ़ाइल में अल्पविराम का उपयोग करके एक साथ कई क्षेत्रों का उपयोग करने की आवश्यकता है।
उदाहरण के लिए, सभी पैकेजों को http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa से रोकने के लिए, हम उपयोग कर सकते हैं
Package: *
Pin: release n=xenial,o=LP-PPA-oibaf-graphics-drivers
Pin-Priority: 10
यहां हम कोडनाम मूल्य के साथ-साथ Origin
पीपीए के मूल्य का उपयोग कर रहे हैं । (हालांकि कोडनाम मूल्य की वास्तव में यहां आवश्यकता नहीं है)। कभी-कभी रिपॉजिटरी इन मूल्य को याद कर सकती है। उन मामलों में, कुछ अन्य तकनीकों का उपयोग किया जाना चाहिए। आउटपुट का apt-cache policy libgl1-mesa-glx
कहना है कि यह काम करता है। इसने इस पीपीए के सभी पैकेजों की प्राथमिकता को कम कर दिया।
libgl1-mesa-glx:
Installed: 12.1~git1608200730.16ef7a~gd~x
Candidate: 12.1~git1608200730.16ef7a~gd~x
Version table:
*** 12.1~git1608200730.16ef7a~gd~x 100
-10 http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu xenial/main amd64 Packages
100 /var/lib/dpkg/status
11.2.0-1ubuntu2.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
11.2.0-1ubuntu2 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
इस तथ्य को अनदेखा करें कि यह कैंडिडेट है। यह खुशी की बात है, क्योंकि यह पहले से ही मेरे सिस्टम में स्थापित है । प्राथमिकता को दाईं ओर जांचें
यदि हम एक रिपॉजिटरी को पिन करना चाहते हैं, जिसकी रिलीज की जानकारी गायब है, तो इस तरह http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, हमें दूसरी विधि का उपयोग करना चाहिए। चूंकि, कोई अन्य भंडार उस मूल का उपयोग नहीं कर रहा है, हम सुरक्षित रूप origin
से इस भंडार को पिन करने के लिए उपयोग कर सकते हैं ।
Package: *
Pin: origin download.opensuse.org
Pin-Priority: 10
नोट 1: यह मूल इंटरनेट मूल है, वह नहीं जो रिलीज़ फ़ाइल में विक्रेता को निर्दिष्ट करता है।
नोट 2: Pin-Priority
संख्या का विशेष अर्थ है। विवरण के लिए apt_preference
मैनुअल पेज की जाँच करें ।
स्पष्ट पसंद /etc/apt/sources.list
अन्य सभी रिपॉजिटरी को संशोधित करना और टिप्पणी करना है, और फिर चलाना है
apt-get update && apt-get upgrade && apt-get autoclean
और फिर टिप्पणियों को हटा दें sources.list
। शायद सबसे अच्छा तरीका नहीं है, लेकिन कम से कम apt-get
मैन पेज ऐसा करने का कोई तरीका नहीं बताते हैं।
संबंधित नोट पर, उदाहरण के लिए, उबंटू वितरण उन्नयन प्रक्रिया उन्नयन के दौरान सभी 3 पार्टी रिपॉजिटरी को निष्क्रिय कर देती है (और अस्थायी रूप से बाहर करने के लिए कुछ विकल्प नहीं चलाते हैं)।