क्या पीपीए से केवल विशिष्ट पैकेज अपडेट की अनुमति देना संभव है


19

आइए हम कहते हैं कि मैंने एक पीपीए जोड़ा है जिसमें एक्स पैकेज है जो मैं चाहता हूं लेकिन इसमें वाई पैकेज भी है जो मैं अपडेट का उपयोग नहीं करना चाहता हूं। एक ही पीपीए से मैं कैसे कर सकता हूं, एक विशिष्ट पैकेज के लिए अपडेट प्राप्त कर सकता हूं लेकिन अन्य पैकेजों के लिए उसी पीपीए से अपडेट से इनकार कर सकता हूं।

एक कदम से कदम उदाहरण अच्छा होगा क्योंकि यह मेरे साथ कई पीपीए में हुआ है जो एक विशेष पैकेज है जो मैं चाहता हूं, लेकिन दूसरों का एक पूरा गुच्छा भी जोड़ें जिन्हें मैं अभी तक अपडेट नहीं करना चाहता हूं।

जवाबों:


16

आप "पिनिंग" कहते हैं

मान लें कि आप पीपीए से पैकेज फू स्थापित कर रहे हैं, तो आपको लगभग निश्चित रूप से पीपीए से किसी भी निर्भरता को स्थापित करने की आवश्यकता होगी।

लेकिन अगर अन्य कार्यक्रम हैं, तो आप निर्दिष्ट कर सकते हैं कि पिनिंग के साथ किस रिपॉजिटरी का उपयोग करना है।

उबंटू विकी पिनिंग देखें

उस पृष्ठ पर एक ppa पिनिंग का एक उदाहरण है

https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA

विकी पेज से:

पीपीपी पर पिन-प्रायॉरिटी को जितना संभव हो कम करने के लिए उपयुक्त रूप से अपग्रेड प्राप्त करने के लिए, यह अवांछित पैकेज संस्करणों को स्थापित करने से रोक देगा। एक बार सेट होने पर, ubuntu-mozilla-Daily PPA के पैकेज हमेशा अन्य रिपॉजिटरी से पैकेज के साथ किसी भी प्रतियोगिता में हार जाएंगे, भले ही उनका उच्च संस्करण हो।

फ़ाइल बनाएँ /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

फ़ाइल में निम्न जोड़ें:

Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400

पिन-प्राथमिकता को अद्यतन किया गया है, यह जांचने के लिए, पहले और बाद में, निम्न आदेशों का उपयोग करें।

apt-cache policy

apt-cache policy firefox-3.5

7

सबसे पहले, यदि आपने पहले से ही गलती से एक पीपीए से पैकेज को अपग्रेड किया है, तो यह उत्तर देखें: /ubuntu//a/142808/103117 विशेष रूप से ppa-purge का उपयोग करने पर अनुभाग। क्योंकि मेरे पास पहले से ही उन्नत पैकेज थे और उपयुक्तता प्राथमिकताओं की परवाह किए बिना डाउनग्रेड नहीं होगी, इसलिए पहले सभी अपग्रेडेड पैकेजों को शुद्ध करना सबसे आसान है, फिर प्राथमिकताओं को ठीक करें, फिर पीपीए को फिर से जोड़ें और केवल उन पैकेजों को अपग्रेड करें जो आप चाहते हैं।

प्राथमिकता / पिनिंग प्रणाली की पूरी व्याख्या के लिए, देखें man apt_preferences

यदि पैकेज कई स्रोतों से उपलब्ध है, तो प्रत्येक को प्राथमिकता दी जाएगी और आप इसे देख सकते हैं apt-cache policy <package name>। उदाहरण के लिए, मैं एक पीपीए का उपयोग करता हूं जिसे नातान-रेनेवल्डॉक / पीपा / ubuntu कहा जाता है और मैं वहां से mysql-server-5.5 (मेरा "पैकेज वाई") स्थापित नहीं करना चाहता। इसलिए मैं अपनी वर्तमान स्थिति की जांच कर सकता हूं:

rob@frodo:~$ apt-cache policy mysql-server-5.5
mysql-server-5.5:
  Installed: 5.5.27-1~ppa1~precise
  Candidate: 5.5.27-1~ppa1~precise
  Version table:
 *** 5.5.27-1~ppa1~precise 0
        500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status
     5.5.24-0ubuntu0.12.04.1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     5.5.22-0ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

इसलिए क्योंकि सब कुछ प्राथमिकता 500 है, मैन पेज के अनुसार उच्चतम संस्करण संख्या के साथ एक को चुना जाता है।

यदि, उदाहरण के लिए, आप केवल ddclient ("पैकेज X") स्थापित करना चाहते हैं, लेकिन कोई अन्य पैकेज नहीं, तो आप ddclient को छोड़कर PPA में सभी पैकेजों के लिए प्राथमिकता कम करना चाहते हैं। नामक एक फ़ाइल बनाएँ /etc/apt/preferences.d/nathan-preferences। ध्यान दें कि उस निर्देशिका की सभी फ़ाइलें पढ़ी जाती हैं और फ़ाइल नाम के बारे में कुछ नियम हैं (इसमें केवल अल्फ़ान्यूमेरिक वर्ण, हाइपेंस, डैश शामिल हैं और जिनका कोई विस्तार या समाप्ति .pref में नहीं है)।

पहले हमें यह जानना होगा कि हमारे पीपीए की पहचान कैसे करें। apt-cache policyसभी स्रोतों के बारे में अपने स्वयं के dispays सूचना के आधार पर आदेश। मुझे पता है कि मेरे PPA के नाम में "नथन" है इसलिए मैं करता हूँ:

$ apt-cache policy | grep nathan
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main

दिलचस्प हिस्सा "ओ = एलपी-पीपीए-नथन-रेन्यूवल्डॉक" है, जिसे हम /etc/apt/preferences.d/nathan-prefs फाइल में इस तरह उपयोग करते हैं:

Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400

Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500

यह PPA में सब कुछ 400 को प्राथमिकता देता है, फिर ddclient को डिफ़ॉल्ट 500 तक वापस लाता है। अब, मैं जांच कर सकता हूं कि उसने काम किया है:

$ apt-cache policy ddclient
ddclient:
  Installed: 3.8.0-11.4ubuntu1
  Candidate: 3.8.1-0~ppa1~precise
  Package pin: 3.8.1-0~ppa1~precise
  Version table:
     3.8.1-0~ppa1~precise 500
        400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
 *** 3.8.0-11.4ubuntu1 500
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
        100 /var/lib/dpkg/status

तो ddclient की प्राथमिकता 500 है, जो कि मूल उबंटू पैकेज के समान है, लेकिन इसे nathan PPA से स्थापित किया जाएगा क्योंकि यह एक उच्च संस्करण है। अब सुनिश्चित करें कि अन्य पैकेज स्थापित नहीं होंगे:

$ apt-cache policy mysql-server
mysql-server:
  Installed: 5.5.24-0ubuntu0.12.04.1
  Candidate: 5.5.24-0ubuntu0.12.04.1
  Version table:
     5.5.27-1~ppa1~precise 0
        400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
 *** 5.5.24-0ubuntu0.12.04.1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
        100 /var/lib/dpkg/status
     5.5.22-0ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

इस मामले में नाथन पीपीए के पैकेज में प्राथमिकता 400 है जो उबंटू की तुलना में कम है, इसलिए भले ही यह उच्च संस्करण का हो लेकिन इसे अपग्रेड नहीं किया जाएगा। हम साथ की जाँच कर सकते हैं:

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
  ddclient
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.7 kB of archives.
After this operation, 11.3 kB of additional disk space will be used.
Do you want to continue [Y/n]?

चूंकि मैं चाहता हूं कि केवल पैकेज को उन्नत किया जाए, मुझे हां कहने में खुशी होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.