सबसे पहले, यदि आपने पहले से ही गलती से एक पीपीए से पैकेज को अपग्रेड किया है, तो यह उत्तर देखें: /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]?
चूंकि मैं चाहता हूं कि केवल पैकेज को उन्नत किया जाए, मुझे हां कहने में खुशी होगी।