कर्नेल अपडेट को कैसे छोड़ें?


25

मैं VirtulBox पर Ubuntu 12.04.1 LTS i686 चला रहा हूं। जब भी मैं अपडेट की जांच करता हूं, एक नया लिनक्स कर्नेल होता है। यदि मैं नया कर्नेल स्थापित करता हूं, तो मुझे वर्चुअलबॉक्स अतिथि अतिरिक्त को फिर से स्थापित करना होगा और सर्वर को रिबूट करना होगा। मैं हर हफ्ते ऐसा नहीं करना चाहता। मुझे पता है कि मैं कर्नेल पैकेज को मैन्युअल रूप से अपडेट मैनेजर से अनचेक कर सकता हूं, लेकिन क्या कर्नेल अपडेट को स्वचालित रूप से छोड़ने का कोई तरीका है? मुझे यहां एक उत्तर मिला, लेकिन यह उबंटू के लिए है 10. धन्यवाद।

जवाबों:


18

APT (एडवांस्ड पैकेजिंग टूल) वह प्रणाली है जो उबंटू सिस्टम में स्थापित सभी सॉफ्टवेयर के प्रबंधन के लिए उपयोग करता है। यह आपको एक निश्चित संस्करण के लिए एक पैकेज "पिन" करने की अनुमति देता है, ताकि जब आप अपडेट प्रबंधक चलाते हैं तो यह अपडेट न हो।

अपने कर्नेल पैकेजों को पिन करने के लिए, पहले आपको यह निर्धारित करना होगा कि आपका कर्नेल क्या संस्करण है। ऐसा करने का एक तरीका सिस्टम> प्रशासन में सिनैप्टिक पैकेज मैनेजर खोलना है।

यहाँ छवि विवरण दर्ज करें

क्विक सर्च टेक्स्ट फील्ड में “linux-generic” टाइप करें और एंटर करें।

यहाँ छवि विवरण दर्ज करें

"इंस्टॉल किए गए संस्करण" कॉलम में सूचीबद्ध संख्या पर ध्यान दें। हम इसे अगले चरण में उपयोग करेंगे।

अगला, हमें फ़ाइल / etc / apt / वरीयताओं को संपादित करने की आवश्यकता है। रन एप्लिकेशन विंडो को ऊपर लाने और इसमें प्रवेश करने के लिए Alt + F2 दबाकर इसे खोलें:

gksudo gedit /etc/apt/preferences

यहाँ छवि विवरण दर्ज करें

यह एक gedit विंडो खोलेगा। सबसे अधिक संभावना है कि विंडो खाली होगी, जब तक कि आपने पहले एपीटी के साथ नहीं खेला है।

विंडो में, निम्न में टाइप करें, वर्जन नंबर को आपने Synaptic Package Manager में पाए गए वर्जन नंबर से बदल दिया है।

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

यहाँ छवि विवरण दर्ज करें

फ़ाइल सहेजें और gedit बंद करें। यदि आप अपडेट मैनेजर खोलते हैं, तो आपको देखना चाहिए कि लिनक्स कर्नेल अपडेट अब छिपे हुए हैं!

यहाँ छवि विवरण दर्ज करें

स्रोत

APT / DPKG के साथ संकुल को अवरुद्ध करना

ऊपर से अपनी गिरी का पैकेज नाम याद रखें।

एक टर्मिनल खोलें और चलाएं:

sudo -s

और मारा enter

Sudo के लिए अपना पासवर्ड दर्ज करें:

echo kernel_package_name hold | dpkg --set-selections

kernel_package_nameउस कर्नेल के नाम से बदलें जिसे आप पिन करना चाहते हैं।

अब चलाएं:

sudo apt-get update && sudo apt-get upgrade

Apt / Dpkg से पिन निकालने के लिए:

एक टर्मिनल खोलें

sudo -s
echo kernel_package install | dpkg --set-selections

आप जिस पैकेज को पिन करना चाहते हैं, उसके साथ कर्नेल_पैकेज बदलें।

अब चलाएं:

sudo apt-get update &&  sudo apt-get upgrade

स्रोत

आप जो करने की कोशिश कर रहे हैं उसे पिनिंग कहा जाता है। जिन स्रोतों को मैंने आपको ऊपर दिया है, उनमें आपके कार्यों को पूरा करने के लिए आपको क्या करना चाहिए, इस पर आवश्यक बातें हैं।


1
आपके जवाब के लिए धन्यवाद। ऐसा लगता है कि हम विभिन्न संस्करण का उपयोग कर रहे हैं। मेरे पास अपने Ubuntu 12.04 पर Synaptic Package Manager और / etc / apt / प्राथमिकताएँ नहीं हैं।
garconcn

2
हाँ, Synaptic अब डिफ़ॉल्ट रूप से स्थापित नहीं है।
ish

1
@garconcn, आप सिनैप्टिक को स्थापित कर सकते हैं और आपके द्वारा बताए गए फिक्स को स्थापित कर सकते हैं, या प्रश्न को फिर से पढ़ सकते हैं, जैसा कि मैंने इस पर अधिक जानकारी दी है
LnxSlck

2
@LnxSlck, मैंने Synaptic स्थापित किया और आपके निर्देश का पालन किया। यह काम करता हैं। धन्यवाद।
garconcn

16

एक पंक्ति में यह है:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

यह कर्नेल की छवि स्थिति को स्थापित से होल्ड करने के लिए सेट करेगा और इस प्रकार अपडेट को रोक देगा।


8

क्रिस्टोफ़ द्वारा वन-लाइनर अतिरिक्त पैकेज को ध्यान में नहीं रखता है (जैसे linux-image-extra-3.13.0-45-generic)। बल्कि इसका उपयोग करें:

$ i में (dpkg -l "* $ (uname -r) *" | grep छवि '' {$ $ 2 प्रिंट करें '' थी); do echo $ i पकड़ | dpkg --सेट-चयन; किया हुआ

4

सुपरलेक्स के सुझाव के संबंध में: वह लाइन "हेडर" पैकेज याद करेगी:

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

तो कैसे बस निम्नलिखित का उपयोग करने के बारे में:

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

1
यदि अतिरिक्त / हेडर / आदि पैकेज चिह्नित नहीं हैं, तो क्या कोई समस्या है? या, क्या आप उन्हें पूर्णता के लिए चिह्नित करने का सुझाव दे रहे हैं? मुझे उम्मीद है कि उबंटू एक अद्यतन हेडर पैकेज स्थापित करने का प्रयास नहीं करेगा, जब तक कि लिनक्स-छवि स्थापित नहीं हो जाती (हेडर छवि की निर्भरता होती है)। मुझे अभी तक यह सत्यापित नहीं करना है।
व्हाइटहट101

2
आप लोग एक के बाद एक 3 खिलाड़ियों को ढेर करने के बजाय एक सिंगल-लाइनर पर सहयोग कर सकते हैं। = पी जस्ट
साईन

1
यदि आप पहले से ही जाग का उपयोग कर रहे हैं तो यह grep को लागू करने के लिए अनावश्यक है:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
जेवियर लोपेज़

1

यह मेटा कर्नेल पैकेज को शुद्ध करता है जो कर्नेल अपडेट को सक्षम करता है:

sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(यदि आपने अभी कर्नेल को अपग्रेड किया है, तो आपको पहले नए कर्नेल के साथ रिबूट करना होगा, या नवीनतम कर्नेल रिलीज़ ढूंढना होगा और इसे "$ (uname -r)" के बजाय ऊपर उपयोग करना होगा।)

यह गुठली अद्यतन स्थापित करने की सिफारिश की जाती है, क्योंकि वे अधिकतर सुरक्षा अद्यतन होते हैं।


0

Ubuntu 16.04.1 पर, निम्न कोड काम करता है

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done

सुपरलेक्स के कोड का सुधार है, sudoजोड़ा गया है

dpkg -l | grep linux-image

आप पाएंगे:

हाय लिनक्स-छवि-4.4.0-34-जेनेरिक ...

हाय लिनक्स-छवि-अतिरिक्त-4.4.0-34-जेनेरिक ...

ध्यान दें कि टैग अब पढ़ता है hi, नहींii

पिन निकालने के लिए

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done

अच्छा जवाब है, लेकिन आप sudoकमेंटरी में कमांड नहीं
डालते

0

छोटा संस्करण: (पिन हटाने के लिए "इंस्टॉल" के साथ "होल्ड" बदलें)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections

सभी कर्नेल छवियों और हेडर की स्थिति देखने के लिए, रन करें:

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