केवल विशिष्ट रिपॉजिटरी से अपडेट कैसे स्थापित करें?


39

मैं उन अद्यतनों को कैसे सीमित करूं जो रिपॉजिटरी के विशिष्ट सेट से उन पर स्थापित हैं? क्या ये संभव भी है?


क्या आप रनटाइम के दौरान रेपो को निर्दिष्ट करने में सक्षम होना चाहते हैं, या यह एक स्थिर चीज होना चाहिए? दो जवाब नीचे दूसरा विकल्प मान।
tshepang

आदर्श रूप से यह रनटाइम के दौरान होगा। हालांकि स्थिर विकल्प पर्याप्त है।
टन वैन डेन हेउवेल

2
आप शीर्षक और आपके द्वारा अनुरोधित वास्तविक सहायता अलग-अलग हैं।
सूंदर

जवाबों:


29

पिनिंग का प्रयोग करें

पिनिंग एक ऐसी प्रक्रिया है जो आपको एक और अधिक संस्करण से पैकेजों को हथियाने के दौरान उबंटू (या किसी अन्य डेबियन सिस्टम) की एक स्थिर रिलीज पर बने रहने की अनुमति देती है। - help.ubuntu.com

aptनीतियों के माध्यम से पूरी तरह से हटाने के बिना आप कुछ रिपॉजिटरी से स्वचालित अपडेट को अक्षम कर सकते हैं :

रिपॉजिटरी से स्वचालित अपडेट को अक्षम करने के लिए repo,
/etc/apt/preferences.d/repoनिम्न सामग्री के साथ एक फ़ाइल जोड़ें :

Package: *
Pin: release n=repo
Pin-Priority: 50

जो इस भंडार से सभी पैकेजों को पहले से स्थापित पैकेजों की तुलना में कम प्राथमिकता देगा (जिसमें 100 हैं)।

अधिक जानकारी के लिए man apt_preferencesया उबंटू कम्युनिटी विकी को चेक करें ।


3
यह शर्म की बात है कि एकमात्र apt_preferences जवाब आखिरी है ...
रॉबर्ट सिएमर

कैसे पता करें कि कौन सा संस्करण किस रेपो से है?
मैक्स एन

2
@MaxN आप आमतौर पर उस जानकारी को चलाकरapt-cache policy package-name
अनवर

यह अद्यतन करते समय विचार नहीं किए जाने के लिए एक भंडार को बाध्य नहीं करेगा। क्योंकि release n=repoकोई भी कैश नहीं करेगा
अनवर

35

आप -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रिलीज रिपॉजिटरी नाम निर्दिष्ट करता है। उबंटू में कोई रिपॉजिटरी नाम नहीं है (रेडहैट आधारित लाइनक्स जैसे आरएचईएल, फेडोरा, सेंटोस, ...)"।


4
जैसा कि आप apt-getमैनुअल में देखते हैं , -tनिर्दिष्ट करें रिपॉजिटरी नाम नहीं। उबंटू में कोई रिपॉजिटरी नाम नहीं है (
रेडहैट

1
@ एसयूबी हां, आप सही कह रहे हैं! मैंने रिलीज के साथ रिपॉजिटरी नाम को भ्रमित कर दिया!
कार्टूनिस्ट

-t xenialएक पैकेज के लिए काम करता है। लेकिन यह सब निर्भरता अभी भी उच्च संकुल से प्राप्त किया जाएगा
अनवर

11

संक्षिप्त जवाब

आपको उन रिपॉजिटरी को पिन करना होगा जिन्हें आप 100 से कम प्राथमिकता के साथ इंस्टॉल नहीं करना चाहते हैं। इसका मतलब है ( apt_preferenceमैन पेज से)

100 <= P <500
एक संस्करण को स्थापित करने का कारण बनता है जब तक कि कोई संस्करण किसी अन्य वितरण से संबंधित उपलब्ध न हो या स्थापित संस्करण अधिक हाल का हो

और पिनिंग के लिए एक रिपॉजिटरी का चयन करने के लिए, आप रिपॉजिटरी की Releaseफ़ाइल से फ़ील्ड का उपयोग करेंगे । जैसे archive, label, release, versionआदि इन क्षेत्रों में से मानों को निर्दिष्ट करके, आप ठीक भंडार चुनकर, उसमें अधिकतम अपना पसंदीदा प्राथमिकता प्रदान कर सकते हैं। चेक apt_preference अधिक जानकारी के लिए पेज।


लंबा जवाब

आगे बढ़ने से पहले, हमें पिनिंग के बारे में कुछ महत्वपूर्ण बात जानना चाहिए। वे शामिल हैं

  1. Releaseफ़ाइलों का फ़ील्ड और apt-cache policyआउटपुट के लिए मैपिंग है

  2. उपयुक्त वरीयता फ़ाइलों का प्रारूप

  3. Releaseप्राथमिकताएँ सेट करने के लिए फ़ाइलें फ़ील्ड का उपयोग करना

1. 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मैन-पेज देखें ।

2. पिन फ़ाइल स्वरूप

पिन या उपयुक्त वरीयता फ़ाइलें /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:और यह एक संख्या है। जो ऊपर लक्षित वस्तुओं की प्राथमिकता को दर्शाता है।

3. Releaseप्राथमिकता तय करने के लिए फाइलों के खेतों का उपयोग करना

यहाँ एक उदाहरण है

Package: *
Pin: release a=xenial
Pin-Priority: 1001

इस उदाहरण में, xenialअभिलेखागार के पैकेज की तुलना में अधिक प्राथमिकता दी जाती है xenial-updatesऔर xenial-security

पिन करने के बाद, apt-cache policy nautilusयह दर्शाता है कि इसने वास्तव में xenialसंग्रह से उच्च- संस्करण वाले संग्रह से संग्रह के निचले संस्करण को उच्च प्राथमिकता दी है xenial-updatesCandidate:लाइन को नोटिस करें ।

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मैनुअल पेज की जाँच करें ।


7

एक gui आधारित विकल्प सॉफ्टवेयर सेंटर खोलना और edit> सॉफ्टवेयर स्रोतों का चयन करना होगा ...

सॉफ्टवेयर सॉफ्टवेयर उबंटू सॉफ्टवेयर टैब के साथ चयनित

अन्य सॉफ्टवेयर टैब के साथ सॉफ्टवेयर स्रोत चयनित

आपको केवल उन रिपॉजिटरी को अन-टिक करना है, जिनसे आप अपडेट नहीं चाहते हैं।

उम्मीद है की यह मदद करेगा


5

स्पष्ट पसंद /etc/apt/sources.listअन्य सभी रिपॉजिटरी को संशोधित करना और टिप्पणी करना है, और फिर चलाना है

apt-get update && apt-get upgrade && apt-get autoclean

और फिर टिप्पणियों को हटा दें sources.list। शायद सबसे अच्छा तरीका नहीं है, लेकिन कम से कम apt-getमैन पेज ऐसा करने का कोई तरीका नहीं बताते हैं।

संबंधित नोट पर, उदाहरण के लिए, उबंटू वितरण उन्नयन प्रक्रिया उन्नयन के दौरान सभी 3 पार्टी रिपॉजिटरी को निष्क्रिय कर देती है (और अस्थायी रूप से बाहर करने के लिए कुछ विकल्प नहीं चलाते हैं)।


1

एक अन्य जीयूआई विकल्प सिंटैप्टिक पैकेज मैनेजर में मूल को चुनना है।

  1. वह पैकेज नाम खोजें जिसे आप इंस्टॉल करना चाहते हैं
  2. उत्पत्ति बटन पर क्लिक करें
  3. उस रिपॉजिटरी को चुनें जिसे आप इंस्टॉल करना चाहते हैं
  4. पैकेज चुनें
  5. लागू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.