सवाल एक विशिष्ट पैकेज को अद्यतन करने से कैसे रोकें?


वजह से बग # 693758 मैं रोकना चाहता हूँ apt-get upgrade और "libgtk2.0-0" पैकेज को अद्यतन करने से अद्यतन प्रबंधक।

यह कैसे हासिल किया जा सकता है?


324
2017-12-23 17:29


मूल


@hhlp: लेकिन यह सवाल एक पैकेज के बारे में पूछ रहा है जिसे कभी स्थापित नहीं किया गया था। - Nathan Osman
@ जॉर्ज एडिसन - पैकेज होल्डिंग भी है, जो आपको पैकेज को अपडेट नहीं करने की अनुमति देती है। तो पैकेज को मूल रूप से पकड़ना मतलब है कि आप मौजूदा संस्करण को रखने के लिए पैकेज प्रबंधक को बता रहे हैं कि इससे कोई फर्क नहीं पड़ता। यह उपयोगी है अगर वर्तमान में काम करने वाले प्रोग्राम का हालिया संस्करण अद्यतन के बाद टूट जाता है। (आप उस पैकेज को नहीं पकड़ सकते जो कभी स्थापित नहीं हुआ था, मेरा प्रश्न भी वही है) .... मैंने अभी परीक्षण किया - उसने कहा disable packages from the auto-update - hhlp


जवाब:


होल्डिंग

बैक पैकेज को पकड़ने के चार तरीके हैं: डीपीकेजी, एपीटी, योग्यता या चयन के साथ।

dpkg

पकड़ पर एक पैकेज रखो:

echo "<package-name> hold" | sudo dpkg --set-selections

पकड़ हटाएं:

echo "<package-name> install" | sudo dpkg --set-selections

अपने पैकेज की स्थिति प्रदर्शित करें:

dpkg --get-selections

एक पैकेज की स्थिति प्रदर्शित करें:

dpkg --get-selections | grep "<package-name>"

उपयुक्त

एक पैकेज पकड़ो:

sudo apt-mark hold <package-name>

पकड़ हटाएं:

sudo apt-mark unhold <package-name>

dselect

अचयनित करने के साथ, [एस] इलेक्ट्रिक स्क्रीन दर्ज करें, उस पैकेज को ढूंढें जिसे आप अपने वर्तमान स्थिति में रखना चाहते हैं और दबाएं = या एच। [एस] इलेक्ट्रिक स्क्रीन से बाहर निकलने के तुरंत बाद परिवर्तन प्रभावी होंगे।


निम्नलिखित दृष्टिकोण सीमित हैं कि एक लॉकिंग / योग्यता के भीतर एक पैकेज को पकड़ना या synaptic apt-get / apt को प्रभावित नहीं करता है।

योग्यता

एक पैकेज पकड़ो:

sudo aptitude hold <package-name>

पकड़ हटाएं:

sudo aptitude unhold <package-name>

सिनैप्टिक पैकेज प्रबंधक के साथ लॉकिंग

के लिए जाओ सिनैप्टिक पैकेज प्रबंधक (सिस्टम> प्रशासन> सिनैप्टिक पैकेज प्रबंधक)।

खोज बटन पर क्लिक करें और पैकेज का नाम टाइप करें।

जब आप पैकेज पाते हैं, तो इसे चुनें और जाएं पैकेज मेनू और चयन करें ताला संस्करण

Synaptic menu

वह पैकेज अब अद्यतन प्रबंधक में नहीं दिखाया जाएगा और अपडेट नहीं किया जाएगा।


474
2017-12-23 18:04



यह पैकेज को स्थापित होने से रोकने के लिए भी काम करता है। स्थापित करते समय devscripts, बहुत पैक किए गए संकुल पैकेज के रूप में खींचे जाते हैं। चूंकि मुझे मेलसर्वर (पोस्टफिक्स) की आवश्यकता नहीं है, इसलिए मैं इसे चलाकर इंस्टॉलेशन को अक्षम कर सकता हूं echo postfix hold | sudo dpkg --set-selections दौड़ने से पहले sudo apt-get install devscripts। इंस्टॉलेशन के बाद चयन रीसेट हो जाने के बाद, यह होल्ड कार्रवाई केवल इस स्थापना के लिए बनी रहती है। - Lekensteyn
इसके अलावा, यह इंगित करने के लायक है कि पैकेज कभी-कभी ऐसी स्थिति बनाकर ब्रेक अपग्रेड और पैच करता है जहां कोई कानूनी समाधान नहीं है, जो निर्भरता की गणना कर सकता है। यदि पैकेज फू में एक == <या <= libbar पर निर्भरता है, तो apt libbar के साथ-साथ foo को अपग्रेड करने से इंकार कर देगा। समय के साथ, महत्वपूर्ण सुरक्षा अद्यतनों सहित बड़ी संख्या में अपडेट को अवरुद्ध करने के लिए ये कैस्केडिंग निर्भरता बढ़ सकती है। आपको या तो होल्ड को हटाने की आवश्यकता होगी और अपग्रेड होने दें, या यदि ऐसा होता है तो आप अपने निर्भरताओं के नए संस्करणों के विरुद्ध रखे गए पैकेजों का पुनर्निर्माण करने की आवश्यकता होगी। - Stephanie
सिर्फ एक नोट: apt-mark समर्थन नहीं करता है hold संस्करण 0.7.25 (उबंटू ल्यूसिड) में - Joril
ग्राफिक्स ड्राइवरों को पकड़ने की कोशिश करते समय यह विशेष रूप से उपयोगी होता है। अति उपयोगकर्ताओं के लिए, apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev। - earthmeLon
वर्तमान में synaptic और योग्यता केवल उन कार्यक्रमों के भीतर पैकेज लॉक। "कुछ भी जो पैकेज उन्नयन करता है (पढ़ें: अद्यतन प्रबंधक, उपयुक्त प्राप्त, योग्यता, आदि) इसे अनदेखा करता है।" से यह प्रश्न। - holocronweaver


पकड़ पर पैकेज "foo" डालने के लिए:

echo "foo hold" | dpkg --set-selections

आपके मामले में हम शराब को पकड़ने जा रहे हैं:

sudo -i
echo "wine hold" | dpkg --set-selections

पकड़ को हटाने के लिए:

sudo -i
echo "wine install" | dpkg --set-selections

43
2017-12-08 20:15



यह भी ध्यान रखें कि एक पैकेज पकड़ पर है, आप कर सकते हैं के माध्यम से एक विशिष्ट संस्करण स्थापित करें apt-get install wine=1.2.3। पकड़ पर होने से रोकता है apt-get (dist-)upgrade इसे बदलने से। - rcoup
@rcoup यदि आपके पास होल्ड पर पुराना संस्करण है, और फिर आप मैन्युअल रूप से होल्डिंग को हटाए बिना नए संस्करण में अपग्रेड करते हैं, तो पुराने संस्करण को कैश में रखा जाएगा ताकि आप इसे वापस जा सकें? - cxrodgers
स्थानीय कैश @cxrodgers (आमतौर पर /var/cache/apt/archives) धारण और उन्नयन और सामान से स्वतंत्र है, इसलिए आपके द्वारा डाउनलोड किए जाने वाले सभी संस्करण तब तक होंगे जब तक आप दौड़ नहीं लेते apt-get [auto]clean - rcoup


मैं एक ही चीज़ की तलाश में था और बहुत सारे शोध के बाद मैंने पाया कि निम्नलिखित वाक्यविन्यास का उपयोग करके आप एक विशिष्ट संस्करण को रोक सकते हैं लेकिन अगले अपडेट को अनुमति दे सकते हैं:

पैकेज: कंपिज़-प्लगइन्स-मुख्य
पिन: संस्करण 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
पिन-प्राथमिकता: -1

यह / etc / apt / प्राथमिकता फ़ाइल में जाता है।


28
2017-07-22 11:13



अनिश्चित काल तक अद्यतनों को रोकने से यह एक बेहतर तरीका है - Eero Aaltonen
इस विधि के साथ, मुझे लगता है कि उबंटू 'एडवेयर' को रोकने के लिए संभावनाएं बड़ी हैं जैसे उबंटू एक या अमेज़ॅन आइकन को अगले रिलीज अपग्रेड के साथ पुनर्स्थापित किया जा रहा है ... - Daniel Alder


इंस्टॉल करें synaptic का उपयोग करते हुए sudo apt-get install synaptic

उपयोग कर चलाएं gksudo synaptic और खोज बॉक्स पर उस पैकेज का पता लगाएं जिसे आप लॉक करना चाहते हैं, यानी: gedit

enter image description here

पैकेज मेनू से चुनें ताला संस्करण:

enter image description here

और यह सब कुछ है, वर्तमान में लॉक के समय स्थापित संस्करण अपग्रेड के दौरान भी स्थापित रहेगा।


19
2017-12-08 20:06



कृपया देखें "लॉक संस्करण उतना चालाक नहीं है जितना लगता है। यह टिन पर जो कहता है वह करना है, संस्करण को लॉक करें ... लेकिन यह केवल इसे सिनैप्टिक के भीतर लॉक करता है। कुछ और जो पैकेज उन्नयन करता है (पढ़ना: अद्यतन प्रबंधक , apt-get, योग्यता, आदि) इसे अनदेखा करता है। यह शायद छोटी गाड़ी का व्यवहार है इसलिए मैं उम्मीद करता हूं कि यह समय पर तय हो। " से askubuntu.com/questions/9607/what-does-lock-version-do। वर्तमान स्थिति क्या है? यदि सिनैप्टिक में कुछ लॉक है, तो क्या अन्य पैकेज प्रबंधक लॉक "सम्मान" करेंगे?
vasa1: संस्करण 0.75.13 के रूप में, अभी भी नहीं :( योग्यता के साथ एक ही समस्या है। - syockit


एक पैकेज को स्थापित करने से रोकना "पैकेज होल्डिंग" कहा जाता है और यह करना बहुत आसान है:

गूंज पैकेज का नाम पकड़ो | डीपीकेजी - सेट-चयन

... जहां * package_name * उस पैकेज का नाम है जिसे आप इंस्टॉलेशन से रोकना चाहते हैं।

ध्यान दें: उपरोक्त आदेश रूट विशेषाधिकार मानता है। दूसरे शब्दों में, आपको शायद टाइप करने की आवश्यकता होगी sudo su इसे चलाने से पहले।


16
2018-02-05 01:18



उत्तम इस जवाब था धन्यवाद। - asoundmove
s/sudo su/sudo -s/g (या sudo -i)। (-i एक लॉगिन खोल देगा, -s नहीं होगा)। - derobert


कुछ समय से apt-get द्वारा प्रतिस्थापित किया गया है apt, इसलिए उदाहरण के लिए मैं फ़ायरफ़ॉक्स को 56 से ऊपर संस्करण में अपडेट करने से रोकना चाहता हूं, क्योंकि बहुत सारे ऐड-ऑन, जैसे "टैब समूह" नए फ़ायरफ़ॉक्स 57 के साथ और काम न करें ("वेब एक्सटेंशन अपडेट" देखें)।

एक आदेश के साथ एक से अधिक पैकेजों को पकड़ना और वाइल्डकार्ड का उपयोग करना संभव है।

फ़ायरफ़ॉक्स को अपडेट करने से रोकें

sudo apt-mark hold firefox firefox-locale-*

यदि आपको बाद में उन्हें रोकना चाहिए, तो यह आदेश होगा:

sudo apt-mark unhold firefox firefox-locale-*

5
2017-11-19 07:45





मैं synaptic आप एक विशिष्ट पैकेज के संस्करण को जमा कर सकते हैं मैं 100% सुनिश्चित नहीं हूं कि यह apt-get में संशोधन करेगा, लेकिन यह निश्चित रूप से अद्यतन प्रबंधक को रोक देगा।

पैकेज को फ्रीज करने के लिए इसे synaptic में चुनें, फिर पैकेज मेनू खोलें और फ्रीज संस्करण का चयन करें।

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

को संशोधित प्रश्न 16668 एक समान स्थिति के साथ सौदा करता है


4
2017-12-23 17:35





सब कुछ जो आप कभी भी "होल्डिंग" और "पिनिंग" पैकेज के बारे में जानना चाहते थे, विशिष्ट संस्करणों में: https://help.ubuntu.com/community/PinningHowto


3
2017-12-23 21:09





बग देखें # 75,332, # 158,981 तथा # 72,806

संक्षेप यह है कि एपीटी-गेट / योग्यता स्तर पर पकड़ डीपीकेजी में होल्ड स्थिति को ट्रिगर नहीं कर रहा है (विशेष रूप से बग 72806 देखें) और अपडेट-मैनेजर डीपीकेजी से स्थिति पढ़ता है।

वर्कअराउंड रूट के रूप में चलाया जाता है: echo "package hold" | dpkg --set-selections


3
2017-11-26 07:24





यदि आपके पास सिनैप्टिक इंस्टॉल है तो आप पैकेज का चयन कर सकते हैं और मेनू पैकेज -> लॉक संस्करण का उपयोग इसे अद्यतन करने से रोकने के लिए कर सकते हैं।

आप सिनोप्टिक के साथ सिनैप्टिक स्थापित कर सकते हैं-synaptic स्थापित करें। मैं व्यक्तिगत रूप से इसे सॉफ्टवेयर केंद्र से अधिक उपयोगी लगता हूं ... फिर फिर, मैं काफी पुराना स्कूल हूं। :)


1
2017-12-08 20:06





आप "विशिष्ट ओवरराइड" की योग्यता पर इसका उपयोग कर सकते हैं, जैसे:

aptitude reinstall ~i oracle-java8-jre:

यह एक बार का उपयोग है (भविष्य में पुनर्स्थापना के लिए संग्रहीत नहीं है), विशिष्ट ओवरराइड रखें, अपने सिस्टम में सभी संकुल को पुनर्स्थापित करने के लिए, लेकिन ऑरैक-जावा 8-जेर नहीं।

यदि आप एक विशिष्ट विशिष्ट ओवरराइड का उपयोग करते हैं, तो पैकेज क्षणिक रूप से एक योग्यता रखने की स्थिति में होगा, इसे इंस्टॉल करने का प्रयास नहीं करेगा।

एक बहुत अच्छी बात अगर आपको लगता है कि आपके सिस्टम से कुछ समझौता किया गया था।


1
2018-05-18 16:27