मैं apt-get -y dist-upgrade बिना ग्रब कॉन्फिगर प्रॉम्प्ट के कैसे करूँ?


63

प्रति -बनाओ (या योग्यता) -y के साथ चलाएं, लेकिन कॉन्फ़िगरेशन फ़ाइलों के प्रतिस्थापन के लिए संकेत नहीं है?

मैंने निम्नलिखित कार्य किया:

ec2run ami-3c994355 --region us-east-1 -n 1 -t m1.large -z us-east-1d

मशीन पर:

sudo apt-get update
sudo apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

मुझे अभी भी एक प्रॉम्प्ट मिल रहा है जो मुझसे पूछ रहा है कि कौन सी फाइल का उपयोग करना है। ये वो लाइनें हैं जो प्रॉम्प्ट से पहले आती हैं:

Setting up grub-pc (1.99-21ubuntu3.1) ...

फिर:

                         ┌───────────────────────────────────────────────────────┤ Configuring grub-pc ├───────────────────────────────────────────────────────┐                              
                         │ A new version of configuration file /etc/default/grub is available, but the version installed currently has been locally modified.  │                              
                         │                                                                                                                                     │                              
                         │ What do you want to do about modified configuration file grub?                                                                      │                              
                         │                                                                                                                                     │                              
                         │                                     install the package maintainer's version                                                        │                              

असंतोषजनक वर्कअराउंड: इको ग्रब-पीसी होल्ड | सुडोकू dpkg - प्रथम चयन-कमांड से पहले
-सेट

मुझे यही मुद्दा मिलता है और Dpkg के कई अलग-अलग क्रमांकन / वर्तनी की कोशिश की है :: विकल्प :: =, जिसमें से किसी ने भी काम नहीं किया है। मैंने संकेत के अनुसार /etc/apt/apt.conf.d/local फ़ाइल में लाइनें जोड़ने की कोशिश की, और उन्होंने भी काम नहीं किया। यह सटीक में एक प्रतिगमन प्रतीत होता है।
स्कॉट रिची

+1 - पूछने के लिए धन्यवाद - इस कष्टप्रद समस्या के लिए इस धागे को ढूंढना आश्चर्यजनक रूप से आसान था
cwd

जवाबों:


94

/etc/default/grubफ़ाइल पैकेज स्थापित समय है, जो आवश्यक है, क्योंकि यह debconf के साथ एकीकृत में उत्पन्न होता है। इसका मतलब यह है कि इसे dpkg conf फ़ाइल के रूप में नहीं माना जा सकता है, और इसलिए dpkg की कॉन्फ़िगरेशन फ़ाइल हैंडलिंग इसके बारे में नहीं जानती है।

इसके बजाय, यह ucfविन्यास को संभालने के लिए एक अधिक परिष्कृत डेबियन उपकरण का उपयोग करता है। यह, दुर्भाग्य से, dpkg विकल्पों को नहीं समझता है, इसलिए सेटिंग Dpkg::Options::="--force-confdef"मदद नहीं करेगी। यह, UCF_FORCE_CONFFNEWऔर UCF_FORCE_CONFFOLDपर्यावरण चर के माध्यम से, हालांकि, शीघ्र-शीघ्र उन्नयन करने का अपना तरीका है ।

ucfdebconfप्रॉम्प्ट करने के लिए उपयोग करता है, इसलिए डिबेंक्फ़ इंटरफ़ेस को सेट करने के noninteractiveलिए भी संदेश को मौन किया जाएगा। यदि आप वास्तव में गैर-संवादात्मक अद्यतन चाहते हैं, तो आपको इसे वैसे भी करने की आवश्यकता होगी - मनमाने ढंग से पैकेज डिबेंक्फ प्रश्न पूछ सकते हैं (हालांकि वे आमतौर पर उन्नयन के दौरान नहीं होंगे)।

आप DEBIAN_FRONTEND=noninteractiveअपने वातावरण में जोड़कर डिबेंक इंटरफेस को एक- सेट के रूप में सेट कर सकते हैं, या इसे dpkg-reconfigure debconfगैर-सक्रिय फ़्रंट को चलाकर और चुनकर स्थायी रूप से सेट कर सकते हैं । यदि आप बिना रुकावट के उपयोग कर रहे हैं, तो आप किसी भी प्रश्न के लिए डिफ़ॉल्ट उत्तर प्राप्त कर सकते हैं जो एक पैकेज पूछ सकता है।

के लिए ucf, डिफ़ॉल्ट उत्तर "मौजूदा फ़ाइल रखें" है।

तो, वास्तव में करने की पूरी आज्ञा, 100% गारंटीड to नो-प्रॉम्प्टिंग अपडेट होगी।

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Ically: यह तकनीकी रूप से पैकेज के लिए डिबेंकफ की तुलना में संकेत देने का एक और तरीका उपयोग करने के लिए संभव है, लेकिन यह डेबियन नीति के खिलाफ है। यदि आप इस तरह के पैकेज में भाग लेते हैं, तो बग दर्ज करें।


8
ध्यान दें कि यदि आप एक शेल पर यह परीक्षण कर रहे हैं तो sudo कमांड DEBIAN_FRONTEND वैरिएबल को हटाने के लिए लगता है, यानी आपको sudo DEBIAN_FRONTEND = गैर-सक्रिय apt-get -y dist-upgrade की आवश्यकता है जबकि DEBIAN_FRONTEND = noninteractive sudo apt-get -y dist-उन्नयन विफल हो जाएगा
स्कॉट रिची

मेरे लिए अच्छा काम किया,
थैंक्यू

यह भी ध्यान दें कि यह एक बग माना जाता है और वे नई एएमआई छवियां जारी कर रहे हैं, जिनमें यह मुद्दा नहीं होना चाहिए: बग्सलाउन्चैप्ड.नेट
स्कॉट रिची

और नए एएमआई अब जारी किए गए हैं।
स्कॉट रिची

@ScottRitchie - आपकी टिप्पणी गैंग्लिया-वेबफ्रेंड पैकेज की स्थापना को स्वचालित करने में मदद करने के लिए भी काम करती है। यह नई conf फ़ाइल को संसाधित करने के लिए अपाचे के रिबूट के लिए पूछने के लिए एक संकेत है लेकिन गैंग्लिया की स्थापना को स्वचालित करने की कोशिश करते समय यह टूट जाता है - अपनी टिप्पणी को सामने जोड़ा और समस्या को ठीक किया
जेरेमी हजेक

19

RAOF के उत्तर से बाहर जाना और वेब पर खोज करने में अनगिनत घंटे बिताने के बाद, Ubuntu 12.04 पर पूरी तरह से हैंड्स-अप अपडेट और डिस्टर्ब-अप करने में सक्षम होने के लिए, मैं इस पोस्ट ( https: // बग) के लिए इस धन्यवाद के साथ आया हूं .launchpad.net / ubuntu / + source / grub / + bug / 239674 / comments / 1 ) बताते हैं कि ग्रब UCF का पालन करता है न कि Dpkg के विकल्पों का जब आप पैकेज मेंटेनर का उपयोग करना चाहते हैं तो ग्रब मेनू का उपयोग करें। किसी भी संभावित स्थानीय मेनू के बजाय। .lst संपादन

मैंने दूसरे पैकेजों के लिए Dpkg बल-कन्फ्यूजन विकल्प को छोड़ दिया है जो कि ग्रब नहीं हैं।

#!/bin/bash

unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /boot/grub/menu.lst

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -o Dpkg::Options::="--force-confnew" --force-yes -fuy dist-upgrade

1
यह केवल एक चीज थी जो मेरे लिए काम करती थी। धन्यवाद!
वेस

1
तो चलिए बताते हैं कि आप भी उपयोग कर रहे हैं unattended-upgradesऔर कुछ ग्रब कॉन्फिग को एडिट किया है: आप UCF_FORCE_CONFFNEWउस संदर्भ में कैसे सेट करते हैं ? या क्या आपको अपडेट होने से ग्रब को ब्लैकलिस्ट करने की आवश्यकता होगी?
thom_nic


1

मैं पिछले कुछ दिनों में Ubuntu 18.04 पर एक ही मुद्दे के साथ संघर्ष कर रहा हूँ। एक नया EC2 उदाहरण (विशेष रूप से ami-00035f41c82244dab) लॉन्च करने पर, मैं एक स्वचालित प्रावधान स्क्रिप्ट (आरंभिकता के समय उपयोगकर्ता डेटा कॉन्फिगरेशन के माध्यम से आपूर्ति) चलाता हूं, जिसमें से एक पहला चरण उपयुक्त अद्यतन / उन्नयन चलाना है।

उपयोगकर्ता द्वारा संशोधित GRUB फ़ाइलों के बारे में संकेत दिए जाने पर स्क्रिप्ट अवरुद्ध हो जाती है - पहले / आदि / डिफ़ॉल्ट / ग्रब, और फिर /boot/grub/menu.lst। चूंकि यह उपयोगकर्ता डेटा के रूप में आपूर्ति किए जाने पर अनअटेंडेड मोड में चल रहा है, इसलिए प्रक्रिया स्टाल हो जाती है और कभी भी पुनर्प्राप्त नहीं होती है।

Googling के बहुत से, ऐसा लगता है कि यह एक लंबे समय से एक या किसी अन्य रूप में चलने वाला GRUB मुद्दा रहा है, जिसमें सुधारों को लागू किया जा रहा है और बाद में फिर से प्राप्त किया जा सकता है, जहां तक ​​मैं बता सकता हूं।

अंत में, केवल एक ही हल मैं सफलतापूर्वक लागू करने में सक्षम है, मेरे प्रावधान स्क्रिप्ट में निम्नलिखित बदसूरत हैक है। उम्मीद है कि यह किसी और से एक बंधन से बाहर हो सकता है!

#!/bin/bash 

apt update

### Workaround: Pre-update /etc/default/grub and remove /boot/grub/menu.lst to avoid 'file changed' prompts from blocking completion of unattended update process
patch /etc/default/grub <<'EOF'
10c10
< GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0"
---
> GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme.io_timeout=4294967295"
19c19
< GRUB_TERMINAL=console
---
> #GRUB_TERMINAL=console
EOF
rm /boot/grub/menu.lst

apt upgrade -y

### Workaround part 2: re-generate /boot/grub/menu.lst
/usr/sbin/update-grub-legacy-ec2 -y

मैं केवल उस समस्या का अनुमान लगा सकता हूं जो मुझे सामना करना पड़ा है, वर्तमान में उपलब्ध उबंटू 18.04 एएमआई संस्करण के लिए काफी विशिष्ट है, और नए GRUB पैकेज को शामिल करने वाले किसी भी अद्यतन संस्करण को एक ही मुद्दे के अधीन नहीं किया जा सकता है। विशेष रूप से, परिवर्तनों की प्रकृति /etc/default/grubएएमआई के नए संस्करणों पर लागू होने की संभावना नहीं है। वैसे भी वहाँ बाहर डाल रहा है।


निम्नलिखित वन-लाइनर चलाने की कोशिश करें:sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" -qq --force-yes upgrade
DarkNeuron

इसके अलावा, यहाँ सबसे हाल ही में बग (प्रतिगमन) का उल्लेख किया गया है: Bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.