গ্রাব কনফিগার প্রম্পট ছাড়াই আমি কীভাবে ডিস্ট-আপগ্রেড করব?


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                                                        │                              

অসন্তুষ্টির মতো কাজ: ইকো গ্রাব-পিসি হোল্ড | sudo dpkg --set apt-get
started before

আমি এই একই সমস্যাটি পেয়েছি এবং Dpkg :: অপশন :: = এর অনেকগুলি পৃথক ক্রিয়াকলাপ / বানান চেষ্টা করেছি, যার কোনওটিই কাজ করে নি। আমি উল্লিখিত হিসাবে /etc/apt/apt.conf.d/local ফাইলটিতে লাইনগুলি যুক্ত করার চেষ্টা করেছি এবং সেগুলিও কার্যকর হয়নি। এটি যথার্থরূপে একটি রিগ্রেশন বলে মনে হচ্ছে।
স্কট রিচি

+1 - জিজ্ঞাসা করার জন্য ধন্যবাদ - এই বিরক্তিকর সমস্যাটির জন্য এই থ্রেডটি পাওয়া আশ্চর্যজনকভাবে সহজ ছিল
সিডাব্লুডে

উত্তর:


94

/etc/default/grubফাইল প্যাকেজটি ইনস্টল সময়, যা প্রয়োজনীয় কারণ এটি debconf সঙ্গে সংহত করে উৎপন্ন করা হয়। এর অর্থ এটি কোনও dpkg কনফিগ ফাইল হিসাবে বিবেচনা করা যায় না, এবং তাই dpkg এর কনফিগারেশন ফাইল হ্যান্ডলিং এটি সম্পর্কে জানে না।

পরিবর্তে, এটি ucfকনফিগারেশন পরিচালনা করার জন্য আরও পরিশীলিত ডেবিয়ান সরঞ্জাম ব্যবহার করে। এটি, দুর্ভাগ্যক্রমে, dpkg বিকল্পগুলি বোঝে না, সুতরাং সেটিংটি Dpkg::Options::="--force-confdef"কোনও সাহায্য করবে না। এটা মাধ্যমে, কোন প্রম্পট আপগ্রেড করছেন যদিও, তার নিজস্ব উপায়ে আছে UCF_FORCE_CONFFNEWএবং UCF_FORCE_CONFFOLDবিভিন্ন পরিবেশের।

ucfdebconfপ্রম্প্টিংয়ের জন্য ব্যবহার করে, সুতরাং ডিপকনফ ইন্টারফেসে সেট করা noninteractiveবার্তাটি নিঃশব্দ করে তুলবে। আপনি যদি সত্যিই অ-ইন্টারেক্টিভ আপডেট চান তবে আপনার এগুলি যেভাবেই করতে হবে - স্বেচ্ছাসেবী প্যাকেজগুলি ডাবকনফ প্রশ্ন জিজ্ঞাসা করতে পারে (যদিও তারা সাধারণত আপগ্রেড চলাকালীন হয় না)।

আপনি DEBIAN_FRONTEND=noninteractiveআপনার পরিবেশে যুক্ত করে ডাবকনফ ইন্টারফেসটিকে ওয়ান-অফ হিসাবে সেট করতে পারেন, বা dpkg-reconfigure debconfনন-ইন্টারেক্টিভ ফ্রন্টএন্ড নির্বাচন করে এবং এটি স্থায়ীভাবে সেট করতে পারেন । আপনি যদি নন-ইন্টারেক্টিভ ফ্রন্টএন্ড ব্যবহার করেন তবে কোনও প্যাকেজ জিজ্ঞাসা করতে পারে এমন কোনও প্রশ্নের জন্য আপনি ডিফল্ট উত্তর পাবেন।

কারণ ucf, ডিফল্ট উত্তরটি "বিদ্যমান ফাইলটি রাখুন"।

সুতরাং, সম্পূর্ণ কমান্ডটি সত্যিই করতে হবে, 100% গ্যারান্টিযুক্ত- নো-প্রম্প্টিং আপডেট হবে।

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

।: প্যাকেজগুলির পক্ষে ডেপকনফের চেয়ে অনুরোধের অন্য পদ্ধতিটি ব্যবহার করা প্রযুক্তিগতভাবে সম্ভব তবে এটি দেবিয়ান নীতিবিরোধী। আপনি যদি এই জাতীয় প্যাকেজ জুড়ে চালনা করেন তবে একটি বাগ ফাইল করুন।


8
নোট করুন যে আপনি যদি শেলটিতে এটি পরীক্ষা করে দেখেন যে sudo কমান্ডটি DEBIAN_FRONTEND ভেরিয়েবলটি সরিয়ে ফেলবে বলে মনে হচ্ছে, যেমন আপনার সুডো ডিবিআইএনএফআরএনটেন্ড = নন-ইন্টারেক্টিভ এপ-গেট-ডি-ডিস-আপগ্রেড প্রয়োজন যেখানে ডিবিআইএনএফআরন্টেন্ড = নন-ইন্টারেক্টিভ সুডো এপ-গেট-ডি-আপগ্রেড ব্যর্থ হবে
স্কট রিচি


এছাড়াও মনে রাখবেন যে এটি একটি ত্রুটি হিসাবে বিবেচিত এবং তারা নতুন এএমআই চিত্র প্রকাশ করছে যাতে এই সমস্যাটি হওয়া উচিত নয়: bugs.launchpad.net/ubuntu/+bug/1009294
স্কট রিচি

এবং নতুন এএমআইগুলি এখন প্রকাশিত হয়েছে।
স্কট রিচি

@ স্কটরিচি - আপনার মন্তব্যটি গ্যাংলিয়া-ওয়েবফ্রন্টের প্যাকেজটি স্বয়ংক্রিয়ভাবে ইনস্টল করতে সহায়তা করার জন্য কাজ করে। নতুন কনফিড ফাইলটি প্রক্রিয়া করার জন্য অ্যাপাচি পুনরায় বুট করার জন্য অনুরোধ জানানো হয়েছে তবে গ্যাংলিয়ার ইনস্টলটি স্বয়ংক্রিয় করার চেষ্টা করার সময় এই ব্রেকগুলি ঘটে - আপনার মন্তব্যটি সামনে যুক্ত করুন এবং সমস্যার সমাধান করেছেন
জেরেমি হাজেক

19

আরএওএফ এর উত্তরের বাইরে গিয়ে এবং উবুন্টু ১২.০৪-তে সম্পূর্ণ হ্যান্ডস অফ আপডেট এবং ডিস-আপগ্রেড করতে সক্ষম হতে ওয়েবে অনুসন্ধান করে অগণিত ঘন্টা ব্যয় করার পরে, এই পোস্টটির সত্যতার জন্য আমি এই ধন্যবাদটি নিয়ে এসেছি ( https: // বাগ .launchpad.net / উবুন্টু / + উত্স / গ্রুব / + বাগ / 239674 / মন্তব্য / 1 ) নির্দেশ করে যে গ্রাব ইউসিএফ অনুসরণ করে এবং ডিপি কেজি বিকল্পগুলিতে নয় যখন আপনি প্যাকেজ রক্ষণাবেক্ষণকারী গ্রাব মেনু ব্যবহার করতে চান তবে কোনও সম্ভাব্য স্থানীয় মেনু পরিবর্তে। .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

আমি গত কয়েকদিন ধরে উবুন্টু 18.04 এ একই ইস্যুটি নিয়ে ঘুরছি। একটি নতুন ইসি 2 উদাহরণ চালু করার সময় (বিশেষত ami-00035f41c82244dab), আমি একটি স্বয়ংক্রিয় প্রভিশন স্ক্রিপ্ট চালনা করি (প্রাথমিককরণের সময় সরবরাহ করা ইউজার ডেটা কনফিগারেশনের মাধ্যমে), যার প্রথম ধাপগুলির মধ্যে একটি হল অ্যাপটি আপডেট / আপগ্রেড চালানো।

স্ক্রিপ্টটি ব্লক হয়ে যায় যখন ব্যবহারকারীকে পরিবর্তিত 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 প্যাকেজ অন্তর্ভুক্ত করা কোনও আপডেট সংস্করণ একই সমস্যার অধীন নাও হতে পারে ass বিশেষত, পরিবর্তনের প্রকৃতিটি /etc/default/grubএএমআইয়ের নতুন সংস্করণগুলিতে প্রযোজ্য নয়। যাইহোক যাইহোক এটি এখানে রাখা।


নিম্নলিখিত ওয়ান-লাইনার চালানোর চেষ্টা করুন:sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" -qq --force-yes upgrade
ডার্কনিউরন

এছাড়াও, উপরে উল্লিখিত সর্বাধিক সাম্প্রতিক বাগ (রিগ্রেশন) এখানে রয়েছে: বাগস.লাঞ্চপ্যাড.net
ক্লাউড-
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.