Dpkg के साथ कर्नेल अपडेट को ब्लॉक करना


16

मैं हाल ही में मेरे साथ हुई एक खराब चीज के कारण सभी वितरण-शिप किए गए कर्नेल अपडेट को ब्लॉक करना चाहता हूं। (मैं एक Ubuntu 12.04 amd64 व्युत्पन्न पर हूँ।)

मैं करने के लिए नाबालिग संस्करण 3.2 की स्थापित कर्नेल के सभी अपडेट अवरुद्ध करना चाहते हैं linux-headers, linux-headers-generic, linux-image, और linux-image-extraसंकुल। मैं जिस समस्या का सामना कर रहा हूं वह यह है कि इन सभी में एक संस्करण है और अगर मैं एक विशिष्ट संस्करण को अवरुद्ध करता हूं, तो कुछ भी प्राप्त नहीं होता है क्योंकि एक नया संस्करण स्थापित किया जाएगा (जैसे: यदि मैं ब्लॉक करता हूं linux-image-3.2.0-35, तो linux-image-3.2.0-36अवरुद्ध नहीं है और अभी भी संभावित रूप dist-upgradeसे एक से स्थापित किया जा सकता है apt।)


ध्यान दें कि यह अब Ubuntu 16.04 में काम नहीं करता है। आपको इस मार्गदर्शिका का उपयोग करके संकुल को ब्लैकलिस्ट करने की आवश्यकता है: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

जवाबों:


17

आपको जो उपयोग करने की आवश्यकता है वह apt-get की एक विशेषता है जिसे होल्ड करना कहते हैं

आप इसे या तो Synaptic या Dpkg के माध्यम से कर सकते हैं, यहाँ बताया गया है कि मैं dpkg विधि का उपयोग करके अपनी कर्नेल को कैसे पकड़ूंगा।

सबसे पहले अपना कर्नेल इमेज नाम जांचें

dpkg -l | grep linux-image

मेरे लिए आउटपुट:

ii  linux-image-3.2.0-4-amd64              3.2.35-2                           amd64        Linux 3.2 for 64-bit PCs
ii  linux-image-amd64                      3.2+46                             amd64        Linux for 64-bit PCs (meta-package)

फिर dpkg को मेटाफ़ेज (किसी भी संस्करण संख्या के बिना सामान्य संस्करण) को पकड़ने के लिए कहें

echo linux-image-amd64 hold | sudo dpkg --set-selections

फिर आप इस के माध्यम से काम कर सकते हैं dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
hi  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

नीचे दिए गए 'hi' पर ध्यान दें, h का अर्थ है आयोजित और इसका मतलब है कि वर्तमान में स्थापित है। यह पैकेज स्थापित है लेकिन इसे अपग्रेड नहीं किया जाएगा।

आप इसके माध्यम से उल्टा कर सकते हैं

echo linux-image-amd64 install | sudo dpkg --set-selections

और फिर से देख सकते हैं dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
ii  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

सूचना 'ii', पहला i अर्थात यह पैकेज स्थापित करने के लिए सेट किया गया है और दूसरा i अर्थात यह वर्तमान में स्थापित है। यह पैकेज स्थापित है और इसे अपग्रेड किया जाएगा

इन झंडों के बारे में अधिक जानकारी के लिए man dpkgविशेष रूप से 'पैकेज सिलेक्शन स्टेट्स' सेक्शन देखें।


1
मेरी छवि के नाम यहाँ हैं । क्या मैं "लिनक्स-इमेज-जेनेरिक" पर प्रतिबंध लगाना चाहता हूं?
Naftuli Kay

1
@TKKocheran हाँ; आप एक विशिष्ट संस्करण के बजाय मेटापेजैक पर एक पकड़ रखना चाहते हैं।
cjh

काम नहीं करता - dpkg: चेतावनी: पंक्ति 1 में स्थिति और न ही उपलब्ध डेटाबेस में पैकेज: linux-image-amd64 dpkg: चेतावनी: अज्ञात पैकेज मिला; इसका मतलब यह हो सकता है कि उपलब्ध डेटाबेस पुराना है, और इसे फ्रंटएंड विधि के माध्यम से अद्यतन करने की आवश्यकता है; कृपया अक्सर पूछे जाने वाले प्रश्न देखें < wiki.debian.org/Teams/Dpkg/FAQ >
एम।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.