किसी भी रिपॉजिटरी के लिए चुप स्वचालित अपडेट कैसे सक्षम करें?


43

मैंने यहां पढ़ा कि Google Chrome के लिए चुप स्वचालित अपडेट कैसे सक्षम किया जाए। हालांकि, मेरे पास अन्य रिपॉजिटरी हैं जैसे स्पॉटिफाई, डॉकी और अन्य जिनके लिए मैं मूक अपडेट सक्षम करना चाहूंगा।

मैं अपने Ubuntu 10.04 सिस्टम में ऐसा करने की कोशिश कर रहा हूं। लेकिन यह प्रश्न सभी उबंटू संस्करणों पर लागू होता है। मेरे पास अनअटेंडेड-अपग्रेड पैकेज स्थापित है।

मैं यह कैसे कर सकता हूँ?


क्या आप मूक सुरक्षा अद्यतन चाहते हैं । या हस्तक्षेप के बिना स्थापित सभी अपडेट? क्यों?
david6

1
उपयोगकर्ता रिपॉजिटरी के साथ-साथ बहुत सारे अपडेट भी।
nik90

जवाबों:


66

सबसे पहले, स्थापित करें gksu:

sudo apt-get install gksu

आपके सिस्टम के लिए बिना अपडेट किए गए अपडेट को सक्षम करना सबसे आसान है, अपने पसंदीदा टेक्स्ट एडिटर के साथ फाइल को 50unattended-upgradesअंदर एडिट करना /etc/apt/apt.conf.d/:

gksu gedit /etc/apt/apt.conf.d/50unattended-upgrades

इसमें आपको Allowed Origins ब्लॉक के कमेंट किए गए सेक्शन पर टिप्पणी करने की आवश्यकता है

परिवर्तन

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
//      "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

सेवा

Unattended-Upgrade::Allowed-Origins {
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed";
//      "${distro_id} ${distro_codename}-backports";
};

ऐसे सॉफ़्टवेयर के लिए जो उबंटू रिपॉज पर नहीं है जिसे आप अपडेट करना चाहते हैं, आपको फ़ाइल में एक मूल और संग्रह जोड़ना होगा । यह जानने के लिए कि आपके PPA के लिए वे कौन से फ़ोल्डर हैं /var/lib/apt/lists/, जो प्रत्येक पैकेज संसाधन के लिए राज्य की जानकारी के लिए भंडारण क्षेत्र है। आप जिस चीज की तलाश कर रहे हैं वह नाम में रिलीज के साथ समाप्त होने वाली फाइलें हैं ।

अपने टेक्स्ट संपादक के साथ एक खोलें, यानी Google Chrome के लिए:

gedit /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release

Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Thu, 17 Nov 2011 19:09:01 +0000
Architectures: i386 amd64
Components: main
Description: Google chrome-linux repository.

मूल स्पष्ट है ( Origin: Google, Inc.) और संग्रह जो कुछ भी होगा वह सुइट ( Suite: stable) के तहत होगा ।

यदि दोनों में से Originया Suiteयाद आ रही है तो वे खाली स्ट्रिंग हो जाएगा। लेकिन ध्यान दें कि यदि दोनों गायब हैं तो संभवत: बिना स्रोत के उसी स्रोत के साथ अन्य स्रोतों को शामिल किए बिना उस स्रोत का उपयोग करना संभव नहीं होगा।

आपके द्वारा उन 2 लाइनों को नोट करने के बाद, आपको 50unattended-upgradesफ़ाइल को संपादित करने और "<origin>:<archive>";इस उदाहरण के लिए इस प्रारूप का उपयोग करके लाइनें जोड़ने की आवश्यकता है "Google\, Inc.:stable";

Google Chrome की उत्पत्ति थोड़े मुश्किल है क्योंकि इसमें एक स्थान है एक अंतिम बिंदु और इसमें एक अल्पविराम है लेकिन अधिकांश रिलीज़ फ़ाइलों को पढ़ना आसान होगा।

एक अन्य उदाहरण के रूप में, नोड जेएस स्रोत एक मूल ( Node Source) निर्दिष्ट करता है, लेकिन संग्रह नहीं; तो आप इसके साथ मेल कर सकते हैं "Node Source:";

अनुमति प्राप्त मूल शैल शैली वाइल्डकार्ड (अधिक विशेष रूप से, पायथन के fnmatch () ) के साथ मेल खाता है । यदि आप पर्याप्त सावधानी बरतते हैं तो परस्पर विरोधी स्रोतों को शामिल न करें, जैसे चीजें लिखना संभव है "Node *:*";


50unattended-upgradesइसे संपादित करने से पहले अपनी फ़ाइल का बैकअप बनाना न भूलें , इसके साथ ही ऐसा करें sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak

फ़ाइल पर किए गए परिवर्तनों का परीक्षण करने के लिए आप sudo unattended-upgradesमापदंडों --dry-runऔर के साथ उपयोग कर सकते हैं --debug

--dry-run एक अप्राप्य उन्नयन चक्र चलाएगा सिवाय इसके कि यह वास्तव में उन्नयन स्थापित नहीं करेगा, केवल जाँचें और सत्यापित करें कि सब कुछ ठीक है।

--debug वर्बोज़ मोड को सक्षम करेगा।

आप हमेशा लॉग unattended-upgradesऑन की जांच कर सकते हैं /var/log/unattended-upgrades/unattended-upgrades.log


आप फ़ाइल को संपादित करके अप्राप्य उन्नयन के कॉन्फ़िगरेशन को बदल सकते हैं, कॉन्फ़िगरेशन के लिए /etc/apt/apt.conf.d/10periodicविकल्प /etc/cron.daily/aptस्क्रिप्ट हेडर में हैं। अनअटेंडेड अपग्रेड की आवृत्ति को कॉन्फ़िगर करने के लिए उन्हें पढ़ें।


2
धन्यवाद ... बहुत विस्तृत! क्या मैं पूछ सकता हूँ कि आपने Google के बाद a क्यों डाला?
nik90

मूल में विशेष पात्रों की वजह से, यह अल्पविराम के लिए एक भागने चरित्र है। अधिकांश मूल आप पाते हैं कि नहीं होगा।
ब्रूनो परेरा

1
@jos नहीं, यह जिस तरह से काम करता है, --dry-runयह जांच करेगा कि क्या अद्यतन सूचियों पर कोई अपडेट उपलब्ध है और उन्हें आपके लिए आउटपुट करता है, सूची आपके कॉन्फ़िगरेशन में जो कुछ भी है, उसके माध्यम से अपडेट करता है /etc/cron.daily/apt, इसे मैन्युअल रूप से चलाने से मुझे लगता है कि सूचियों को अपडेट नहीं किया गया है।
ब्रूनो परेरा

1
जब अनुलग्‍न फ़ाइल किसी स्‍वीट को सूचीबद्ध नहीं करती है, तो मुझे आर्काइव नाम के रूप में क्‍या रखना चाहिए?
hsivonen

2
कृपया यहाँ भी स्वचालित दृष्टिकोण की जाँच करें: askubuntu.com/a/792621/417607
अभिषेक भाटिया

14

@Bruno परेरा के जवाब के लिए स्वचालित दृष्टिकोण: (कृपया जवाब उपयोगी होने पर गिथु रेपो अभिनीत करें।)

कोड लिंक: https://github.com/abhigenie92/unattended_upgrades_repos

  • जोड़ने के लिए रिपॉजिटरी की जाँच करें:

    $ python automatic_upgrade.py 
    Add repos:
    "Ubuntu:xenial";
    "LP-PPA-kubuntu-ppa-backports:xenial";
    "LP-PPA-tuxonice:xenial";
    "LP-PPA-webupd8team-sublime-text-3:xenial";
    
    Skipping files due to not present origin or suite. Or origin being a url.:
    packagecloud.io_slacktechnologies_slack_debian_dists_jessie_InRelease
    tiliado.eu_nuvolaplayer_repository_deb_dists_xenial_InRelease
    
  • अब /etc/apt/apt.conf.d/50unattended-upgradesउन्हें शामिल करने के लिए संपादित करें :

    // Automatically upgrade packages from these (origin:archive) pairs
    Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}:${distro_codename}-proposed";
        "${distro_id}:${distro_codename}-backports";
      "Ubuntu:xenial";
      "LP-PPA-kubuntu-ppa-backports:xenial";
      "LP-PPA-tuxonice:xenial";
      "LP-PPA-webupd8team-sublime-text-3:xenial";
    };
    ....
    ....
    
  • यह देखने के लिए जांचें कि क्या वे शामिल हैं:

    $ sudo unattended-upgrade --dry-run --debug
    Initial blacklisted packages: 
    Initial whitelisted packages: 
    Starting unattended upgrades script
    Allowed origins are: ['o=Ubuntu,a=xenial-security', 'o=Ubuntu,a=xenial-updates', 'o=Ubuntu,a=xenial-proposed', 'o=Ubuntu,a=xenial-backports', 'o=Ubuntu,a=xenial', 'o=LP-PPA-kubuntu-ppa-backports,a=xenial', 'o=LP-PPA-tuxonice,a=xenial', 'o=LP-PPA-webupd8team-sublime-text-3,a=xenial']
    pkgs that look like they should be upgraded: 
    Fetched 0 B in 0s (0 B/s)                                                                                  
    fetch.run() result: 0
    blacklist: []
    whitelist: []
    No packages found that can be upgraded unattended and no pending auto-removals
    

@ andy.holmes में आपका स्वागत है, कृपया गिथुब रिपॉजिटरी अभिनीत करें। लिंक- github.com/abhigenie92/unattended_upgrades_repos
अभिषेक भाटिया

आप यह भी संशोधित करने की इच्छा कर सकते हैं कि कैसे dpkg संकुल का विन्यास करता है जो विन्यास फाइल को संशोधित करने का प्रयास करता है: unix.stackexchange.com/questions/138751/…
deoren

यह पाइथन लिपि उत्कृष्ट है, हालाँकि मुझे अपने रास्पबेरी पाई के लिए 50unattended-उन्नयन के लिए README.md ने जो सुझाव दिया था, उसे संशोधित करना था। अनुमत मूल को निर्दिष्ट करना, जैसे, "Raspberry:stable";काम नहीं किया। इसके बजाय मैंने इस्तेमाल किया, जैसे,"o=Raspberry, a=stable";
cfogelberg

5

संपादन /etc/apt/apt.conf.d/50unattended-upgrades, निम्नलिखित जोड़ें:

Unattended-Upgrade::Origins-Pattern {
        "origin=*";
};

यह सभी पैकेजों के लिए अप्राप्य उन्नयन की अनुमति देगा।


हां, स्पष्ट और संक्षिप्त उत्तर के लिए धन्यवाद। लेकिन ऐसे पैकेज हैं जो origin:''उदाहरण के लिए, डेटाडॉग-एजेंट से हैं site:'apt.datadoghq.com'। उस स्थिति में "origin=";खाली मूल के साथ संकुल को न छोड़ने के लिए जोड़ना भी आवश्यक होगा । लेकिन तब इसके "site=*";बजाय सिर्फ उपयोग करना बेहतर होता है "origin=*";
पॉल टोबियास

मैंने अपनी रिपॉजिटरी को एक फ़ाइल में जोड़ा है /etc/apt/sources.list.d/my_repo.list, लेकिन यह पैकेज को अपग्रेड नहीं करता है। मैन्युअल रूप से यह साथ काम करता है sudo apt update। कोई सुराग कैसे?
सैंडर

क्या यह मैन्युअल अद्यतन के समान स्रोतों का उपयोग करता है, अर्थात क्या यह अक्षम स्रोतों को अनदेखा करता है?
सिलिकामांसर

3

निम्नलिखित लिंक पर क्रोन को स्वचालित अपडेट शुरू करने के लिए फिर से चलाने के लिए मजबूर करने के निर्देश हैं । क्रोन को रोकने की प्रक्रिया यह है

sudo service anacron stop
sudo service cron stop
sudo rm -rf /var/run/unattend* /var/run/cron* /var/run/anacron*
sudo rm -rf /var/lib/apt/periodic/*

और स्वत: अद्यतन होने के लिए क्रोन को पुनः आरंभ करने के लिए (या कम से कम कुछ मील के भीतर) है

sudo service cron start
sudo anacron -fn

यह काम किस प्रकार करता है

कई चीजें इसे चलाने के लिए ट्रिगर करेगी।

  • यह /etc/cron.dailyविशेष रूप से क्रोन द्वारा चलने से निकाल दिया जाता है /etc/cron.daily/apt। क्रॉन /etc/cron.daily6.25 बजे चलता है (देखें /etc/crontab)

  • एनाक्रॉन ऊपर से चलता है? और यह /etc/cron.daily5 मिनट के अपटाइम के बाद बंद हो जाएगा (देखें /etc/anacrontab)

    नोट APT::Periodic::RandomSleepमें सेट किया जा सकता है /etc/apt/apt.conf.d/10periodic, लेकिन 1800s (30 मिनट) तक डिफॉल्ट करता है, इसलिए /etc/cron.daily/aptरन के बाद 30 मिनट तक कोई अपडेट नहीं हो सकता है ।

लॉग

अगर यह काम करता बातें, इस फ़ोल्डर में लॉग इन किया जाना चाहिए /var/log/unattended-upgrades


यह मेरे लिए विशेष रूप से उपयोगी था क्योंकि मेरे वर्चुअल होस्टिंग प्रदाता ने सोचा था /etc/cron.daily/aptकि डिफ़ॉल्ट Ubuntu 12.04 इंस्टॉलेशन को हटाना एक अच्छा विचार होगा - इसलिए स्वचालित APT अपडेट नहीं हो रहे थे :-(। सर्वरफॉल्ट उत्तर serverfault.com/a/568329/। 95570 ने उस फ़ाइल को फिर से बनाने के बारे में विवरण प्रदान किया।
एलेक्स डुप्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.