मैं उन अद्यतनों को कैसे सीमित करूं जो रिपॉजिटरी के विशिष्ट सेट से उन पर स्थापित हैं? क्या ये संभव भी है?
मैं उन अद्यतनों को कैसे सीमित करूं जो रिपॉजिटरी के विशिष्ट सेट से उन पर स्थापित हैं? क्या ये संभव भी है?
जवाबों:
पिनिंग एक ऐसी प्रक्रिया है जो आपको एक और अधिक संस्करण से पैकेजों को हथियाने के दौरान उबंटू (या किसी अन्य डेबियन सिस्टम) की एक स्थिर रिलीज पर बने रहने की अनुमति देती है। - 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=xenialn=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 पार्टी रिपॉजिटरी को निष्क्रिय कर देती है (और अस्थायी रूप से बाहर करने के लिए कुछ विकल्प नहीं चलाते हैं)।