शेल स्क्रिप्ट से अप्राप्य-उन्नयन सक्षम करना


17

मेरे पास अपने उद्देश्यों के लिए नए उबंटू आभासी मशीनों को स्वचालित रूप से कॉन्फ़िगर करने के लिए एक शेल स्क्रिप्ट है। मैं चाहूंगा कि यह स्क्रिप्ट स्थापित हो और सक्षम हो unattended-upgrades, लेकिन मैं यह पता नहीं लगा सकता कि उपयोगकर्ता की सहभागिता के बिना ऐसा कैसे किया जाए।

उन्नयन को सक्षम करने का सामान्य तरीका है dpkg-reconfigure unattended-upgrades, लेकिन निश्चित रूप से यह इंटरैक्टिव है। गैर-सक्रिय सामने वाला अंत में किसी भी प्रश्न को पूछने से बचता है, और टेक्स्ट फ्रंट एंड बंधे हुए और I / O को tty के साथ करने के लिए बाध्य और निर्धारित होता है न कि stdin / stdout के साथ।


1
मैंने पहले इस टूल का उपयोग नहीं किया है, लेकिन ऐसा लगता है कि यह सक्षम करता है कि यह फ़ाइल /etc/apt/apt.conf.d/20auto-upgrades में 1 से दो पंक्तियों को लिखता है। यदि आप मैन्युअल रूप से उस फाइल को लिखते हैं तो यह काम करेगा?
mfisch

जवाबों:


20

बस /etc/apt/apt.conf.d/20auto-upgrades की एक प्रतिलिपि बनाएं, इसे आपके द्वारा पसंद किए जाने के तरीके को कॉन्फ़िगर करने के बाद, और उस जगह को अपने लक्ष्य मशीन पर छोड़ दें। आप इसे अपनी स्क्रिप्ट में एम्बेड कर सकते हैं, या आप rsync कर सकते हैं या इसे सर्वर से, या जो भी हो सकते हैं।

तो मूल रूप से आपकी स्क्रिप्ट कुछ ऐसा कर सकती है:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

वास्तव में dpkg-reconfigure स्क्रिप्ट के साथ बंदर के लिए कोई कारण नहीं है।

यदि आप किसी दूरस्थ सर्वर से conf फ़ाइल नहीं लाना चाहते हैं, तो यह बहुत छोटा और सरल है - डिफ़ॉल्ट संस्करण, जो केवल सुरक्षा अद्यतन को लाता और स्थापित करता है, इस तरह दिखता है:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

तो आप बस निम्नलिखित के साथ सीधे विन्यास फाइल में उन पंक्तियों को प्रतिध्वनित कर सकते हैं:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades

1

यदि आप dpkg-reconfigure का उपयोग करना चाहते हैं, तो आप "debconf-set-selections" के साथ मान सेट कर सकते हैं, और फिर इसे गैर-सक्रिय तरीके से पुन: कॉन्फ़िगर कर सकते हैं।

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades

0

आपको गूंज में सूडो का उपयोग करना होगा /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi


0

मैं अनुपलब्ध-अपग्रेड को कॉन्फ़िगर करने के लिए कॉन्फ़िगरेशन पैरामीटर सम्मिलित करने का सुझाव दूंगा।

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades

उसी तरह से आप कॉन्फ़िग फ़ाइल में अपनी आवश्यकता के अनुसार मापदंडों को कॉन्फ़िगर / जोड़ सकते हैं /etc/apt/apt.conf.d/50unattended-upgrades

परिवर्तनों को लागू करने के लिए सेवा को पुनरारंभ करना न भूलें।

/etc/init.d/unattended-upgrades restart
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.