100% गैर-इंटरैक्टिव डेबियन डिस्ट-अपग्रेड


38

क्या apt-get dist-upgradeडेबियन में ऐसा करने का एक तरीका है जो न केवल स्वचालित रूप से पूछे गए सभी सवालों के "हाँ" का जवाब देता है, बल्कि उन सवालों के जवाब के रूप में उचित चूक का भी उपयोग करता है जो पॉप अप करने के लिए विभिन्न इंटरैक्टिव डायलॉग बॉक्स की आवश्यकता के लिए परिष्कृत हैं? मैं यहां केमैप सामान के बारे में सोच रहा हूं जो अपग्रेड करते समय दिखाता है libc6, और कर्नेल इमेज विकल्प।

लक्ष्य दूर से एक बड़ी शुरुआत करने में सक्षम होना है dist-upgrade- यहां तक ​​कि एक ऐसी मशीन के लिए भी, जो समय के पीछे गंभीर रूप से है - और इसे बिल्कुल भी दाईं ओर नहीं करना है, जब तक कि कुछ केवल भयानक , विनाशकारी रूप से गलत न हो।

निश्चित रूप से यह संभव है?

अग्रिम में धन्यवाद!


उन लोगों के लिए जो केवल उबंटू पर अपग्रेड (डिस्ट-अपग्रेड) करना चाहते हैं, अनअटेंडेड-अपग्रेड पैकेज की कोशिश करें ।
जोइस

जवाबों:


42

आप सेट करते हैं DEBIAN_FRONTEND=noninteractive(प्रदर्शित होने से debconf संकेतों को रोकने के लिए) और जोड़ने force-confoldऔर force-confdefअपने को /etc/dpkg/dpkg.cfgफ़ाइल, आप एक पूरी तरह से गैर-सहभागी पैकेज स्थापना अनुभव होना चाहिए। कोई भी पैकेज जो अभी भी आपको जानकारी के लिए संकेत देता है, उसकी रिलीज़ क्रिटिकल बग है (और मैं कहता हूं कि ऑटोमेशन के दीवाने के रूप में और डेविल डेवलपर के रूप में)।


इसने मेरे लिए काम नहीं किया। apt-listchangesद्वारा खोला गया था less
चुंबक

@magnetar: यह apt-listchanges के साथ एक समस्या है, apt नहीं। Apt-listchanges की स्थापना रद्द करें, या इसे उचित रूप से कॉन्फ़िगर करें।
Womble

1
प्रयास करें: env APT_LISTCHANGES_FRONTEND = कोई भी उपयुक्त-अप-अप-अप -यू -y
-डर्क श्मिट

21

फ़्लोरियन लोहॉफ़ ने एक एकल कमांड में सुझाव दिया कि वोमल ने क्या तरीका निकाला है :

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

बेशक आप भी उपयोग कर सकते हैं -o Dpkg::Options::="--force-confnew --force-confdef"( डीएनकेजी मैन पेज को कन्फ्यूजन के लिए खोजें)। मुझे यकीन नहीं है कि किन मामलों में इससे फर्क पड़ेगा। मुझे व्यक्तिगत रूप से वैनिला छवियों को अप-टू-डेट लाने के लिए गैर-संवादात्मक उन्नयन की आवश्यकता है, जिस स्थिति में मुझे लगता है कि हमेशा नई कॉन्फिग फ़ाइल (बिना --force-confdef) चुनना एक उचित बात है।


W: --force-yes is deprecated, use one of the options starting with --allow instead.
एलेक्स

3

भले ही ऊपर womble का उत्तर आम तौर पर अच्छा हो, लेकिन यह मेरे लिए काम नहीं करता था और मुझे 100% छूट जाने के लिए कुछ अतिरिक्त शोध करने पड़े। मुझे लगा कि मैं आने वाले आगंतुकों के लिए चीजों को सरल बनाने के लिए परिणाम को संक्षिप्त तरीके से साझा करूंगा।

निम्नलिखित एक स्क्रिप्ट है जो डेबियन 8 रिलीज नोट्स के अनुसार चलेगी (ज्यादातर) झंडे और पर्यावरण चर के साथ सिफारिशें अपग्रेड करती हैं जो इसे अप्राप्य बना देगा। ( echoएस सिर्फ डिबगिंग के लिए हैं और उन्हें हटाया जा सकता है - हालांकि मैं उन्हें रखने की सलाह देता हूं ताकि अगर स्क्रिप्ट अटक जाए तो आपको पता चल जाएगा कि कहां है)

#!/bin/bash

apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
apt-get --force-yes clean &&

echo "executing update" &&
apt-get update &&

echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&

echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade

1
नोट: "--फोर्स-यस फोर्स हाँ; यह एक खतरनाक विकल्प है, जो बिना किसी कारण के तुरंत जारी रखने के लिए उपयुक्त कारण होगा यदि यह संभावित रूप से हानिकारक है। इसका उपयोग बहुत विशेष स्थितियों को छोड़कर नहीं किया जाना चाहिए। बल-हाँ का उपयोग संभावित रूप से नष्ट कर सकता है। आपका सिस्टम! कॉन्फ़िगरेशन आइटम: APT :: Get :: force-yes। यह पदावनत और प्रतिस्थापित किया जाता है - 1.1 में -।
एलेक्स

1

> = एपेट 1.1

आप अपार्टमेंट 1.1 या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो --force-yesबहिष्कृत कर दिया गया है, तो आप के साथ शुरू करने के लिए विकल्पों का उपयोग करने के है --allowजैसे बजाय, --allow-downgrades, --allow-remove-essential, --allow-change-held-packages

तो कमांड है:

DEBIAN_FRONTEND=noninteractive \
  apt-get \
  -o Dpkg::Options::=--force-confold \
  -o Dpkg::Options::=--force-confdef \
  -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  dist-upgrade

नोट: --force-confoldपुराने रखने के लिए, और --force-confnewनए विन्यास रखने के लिए उपयोग करें ।

स्रोत: CFE-2360: apt_get पैकेज मॉड्यूल संस्करण को अवगत कराएं

सम्बंधित:


-4

से apt-get(8)आदमी पेज:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

संदर्भ के लिए, -yविकल्प भी काम करता है yum(8)


5
मुझे उसके बारे में पता है। मैं उस झंडे का इस्तेमाल करता हूं और यह मौजूदा APT Y / N के सवालों का सफलतापूर्वक जवाब देने के लिए 'हां' का इस्तेमाल करता है। जब मैं apt-get -y dist-upgrade करता हूं, तब भी इसने मुझे कुछ 'डायलॉग' के लिए संकेत दिया, जो इसे बड़े-टिकट के सामान, यानी कीमैप में परिवर्तन, libc6- संबंधित सेवा पुनरारंभ, आदि के लिए संकेत देता है, जिसे मैं एक अतिरिक्त ध्वज की तलाश में था। उसे भी बंद कर दें।
एलेक्स बालाशोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.