उबंटू 16.04 सर्वर वीएम छवि स्पष्ट रूप से "एपेट-डेली.स्वाइस" हर 12 घंटे या तो शुरू करती है; यह सेवा विभिन्न एपीटी से संबंधित कार्य करती है जैसे उपलब्ध पैकेजों की सूची को ताज़ा करना, यदि आवश्यक हो, तो अप्राप्य उन्नयन का प्रदर्शन करना आदि।
वीएम "स्नैपशॉट" से शुरू होने पर, सेवा तुरंत चालू हो जाती है , जैसा कि (मुझे लगता है) सिस्टमड को जल्दी से पता चलता है कि टाइमर बहुत पहले बंद हो जाना चाहिए था।
हालाँकि, एक चालू APT अन्य apt
प्रक्रियाओं को चलने से रोकता है क्योंकि यह एक लॉक रखता है /var/lib/dpkg
। यह इंगित करने वाला त्रुटि संदेश इस तरह दिखता है:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
मुझे इस स्वचालित APT कार्य को अक्षम करने की आवश्यकता है जब तक कि Ansible ने मशीन सेटअप पूरा नहीं कर लिया है (जिसमें आमतौर पर पैकेज स्थापित करना शामिल है); अधिक जानकारी और संदर्भ के लिए https://github.com/gc3-uzh-ch/elasticluster/issues/304 देखें ।
मैंने "उपयोगकर्ता डेटा" स्क्रिप्ट के माध्यम से "अनअटेंडेड अपग्रेड" सुविधा को अक्षम करने के लिए विभिन्न विकल्पों की कोशिश की है cloud-init
, लेकिन उनमें से सभी अब तक विफल रहे हैं।
1. सिस्टमड कार्य को अक्षम करें
systemd कार्य apt-daily.service
को ट्रिगर करता है apt-daily.timer
। मैंने निम्नलिखित आदेशों के विभिन्न cobments के साथ एक या दूसरे को या दोनों को अक्षम करने की कोशिश की है; apt-daily.service
VM द्वारा SSH कनेक्शन स्वीकार करने के लिए तैयार होने के बाद भी, कुछ क्षणों के लिए शुरुआत की जाती है ::
#!/bin/bash
systemctl stop apt-daily.timer
systemctl disable apt-daily.timer
systemctl mask apt-daily.service
systemctl daemon-reload
2. कॉन्फ़िगर विकल्प को अक्षम करें APT::Periodic::Enable
स्क्रिप्ट /usr/lib/apt/apt.systemd.daily
कुछ APT कॉन्फ़िगरेशन चर पढ़ता है; सेटिंग APT::Periodic::Enable
पूरी तरह से कार्यक्षमता को निष्क्रिय कर देती है (लाइनें 331--337)। मैंने इसे निम्नलिखित स्क्रिप्ट के साथ अक्षम करने का प्रयास किया है ::
#!/bin/bash
# cannot use /etc/apt/apt.conf.d/10periodic as suggested in
# /usr/lib/apt/apt.systemd.daily, as Ubuntu distributes the
# unattended upgrades stuff with priority 20 and 50 ...
# so override everything with a 99xxx file
cat > /etc/apt/apt.conf.d/99elasticluster <<__EOF
APT::Periodic::Enable "0";
// undo what's in 20auto-upgrade
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
__EOF
हालांकि, कमांड लाइन से APT::Periodic::Enable
मूल्य होने के बावजूद 0
(नीचे देखें), unattended-upgrades
कार्यक्रम अभी भी चलाया जाता है ...
ubuntu@test:~$ apt-config shell AutoAptEnable APT::Periodic::Enable
AutoAptEnable='0'
3. /usr/lib/apt/apt.systemd.daily
पूरी तरह से हटा दें
निम्नलिखित cloud-init
स्क्रिप्ट पूरी तरह से अप्राप्त अपग्रेड स्क्रिप्ट को हटा देती है ::
#!/bin/bash
mv /usr/lib/apt/apt.systemd.daily /usr/lib/apt/apt.systemd.daily.DISABLED
फिर भी, कार्य चलता है और मैं इसे प्रक्रिया तालिका में देख सकता हूं! हालाँकि कमांड लाइन से जांच की गई तो फ़ाइल मौजूद नहीं है ::
ubuntu@test:~$ ls /usr/lib/apt/apt.systemd.daily
ls: cannot access '/usr/lib/apt/apt.systemd.daily': No such file or directory
ऐसा लगता है जैसे cloud-init
स्क्रिप्ट (SSH कमांड-लाइन के साथ) और रूट systemd प्रक्रिया अलग-अलग फाइल सिस्टम और प्रोसेस ...
प्रशन
क्या ज़ाहिर तौर पर कुछ ऐसा है, जिसका मुझे स्मरण नहीं है? या क्या कुछ नामचीन जादू चल रहा है जिसके बारे में मुझे जानकारी नहीं है?
सबसे महत्वपूर्ण: मैं स्क्रिप्ट के apt-daily.service
माध्यम से
कैसे निष्क्रिय कर सकता हूं cloud-init
?
--now
ध्वज को याद कर रहे हों systemctl disable
। यह मेरा मुद्दा था।
disable --now
बराबर stop
है disable
।