सवाल मैं कमांड लाइन से केवल सुरक्षा अद्यतन कैसे स्थापित कर सकता हूं?


sudo apt-get upgrade केवल अद्यतन अपडेट न केवल सभी अपडेट इंस्टॉल करता है। मुझे पता है कि मैं केवल अद्यतन सुरक्षा अद्यतनों का चयन करने के लिए अद्यतन प्रबंधक का उपयोग कर सकता हूं, लेकिन क्या कमांड लाइन से ऐसा करने का कोई तरीका है?


287
2017-07-28 22:50


मूल


मुझे ऐसा नहीं लगता। डिस्ट-अपग्रेड पूरे सिस्टम को एक नई रिलीज में ले जाता है। मैं दिन-प्रति-दिन अपडेट के बारे में बात कर रहा हूं, जैसे कि आप अपडेट मैनेजर में देखते हैं। - mac9416
ओह, मैं देख रहा हूँ कि अब आप क्या कह रहे हैं। हे, मैं अक्सर अद्यतन प्राप्त करता हूं, मैं इसे बिना सोच के टाइप करता हूं। सर उठाने के लिए धन्यवाद! - mac9416
आप "apt-get dist-upgrade" चाहते हैं, "apt-get नवीनीकरण" नहीं। "डिस्ट-अपग्रेड" नई रिलीज के लिए नहीं है (यह एक अलग कमांड "डू-रिलीज-अपग्रेड" है)। "Dist-upgrade" का उपयोग करना मतलब है कि यह नए पैकेजों की बदलती निर्भरताओं को संभालेगा। यह महत्वपूर्ण हो सकता है। - Kees Cook
दूरस्थ प्रबंधक जीयूआई द्वारा निष्पादित सामान्य ऑपरेशन है। कर्नेल जैसे संकुल के लिए जहां एक है linux-image-generic पैकेज, वर्तमान छवि के आधार पर, उदाहरण के लिए linux-image-3.x.y-zz-generic (जिनमें से प्रत्येक संस्करण एक अलग पैकेज नाम है), डिस्ट-अपग्रेड (जो निर्भरताओं को पूरा करने के लिए नए पैकेज स्थापित करने की अनुमति देता है) इस अपग्रेड को निष्पादित करेगा, जबकि अपग्रेड कर्नेल पैकेज को पीछे-पीछे के रूप में दिखाएगा। - chronitis
आश्चर्य की बात है कि कोई अच्छा नहीं है apt-get इसके लिए आधारित उत्तर, इस बात पर विचार करते हुए कि प्रत्येक सर्वर पर यह कितनी प्रमुख रूप से सूचीबद्ध है - Karthik T


जवाब:


पैकेज पहुंच से बाहर-उन्नयन स्वचालित रूप से सुरक्षा अद्यतन स्थापित करने के लिए कार्यक्षमता प्रदान करता है।

आप इसका उपयोग कर सकते हैं, लेकिन स्वचालित भाग को कॉन्फ़िगर करने के बजाय आप इसे मैन्युअल रूप से कॉल कर सकते हैं। इस मामले के लिए, इसे चुपचाप करना चाहिए:

sudo unattended-upgrade

या अधिक वर्बोज़ संस्करण, यह नियंत्रित करने के लिए कि यह कैसे जाता है

sudo unattended-upgrade -d

नोट: जब आप अनुपयुक्त-अपग्रेड को कॉल करते हैं तो आप अंत में "एस" छोड़ देते हैं।

यह मानता है कि पैकेज डिफ़ॉल्ट रूप से स्थापित है, जो शायद यह है। यदि नहीं, तो बस करें:

sudo apt-get install unattended-upgrades

यह भी देखें /usr/share/doc/unattended-upgrades/README.md


268
2017-07-29 17:28



स्वचालित निष्पादन को अक्षम करने के लिए unattended-upgrade आपको शायद संशोधित करने की आवश्यकता है /etc/cron.daily/apt, लेकिन यह सुनिश्चित नहीं है कि ऐसा करने के लिए यह "सही" है - Jaime Hablutzel
साइड नोट: उबंटू 12.04.5 एलटीएस सर्वर के लिए, unattended-upgrades डिफ़ॉल्ट रूप से स्थापित नहीं है। - Raptor
चूंकि आप इसे कमांड लाइन से कर रहे हैं, इसका उपयोग करें -v जानकारी संदेशों के लिए या -d डीबग संदेशों के लिए। अन्यथा उपयोगिता बहुत चुप हो जाएगी, इस मामले में आपको लॉग इन की जांच करनी होगी /var/log/unattended-upgrades। आप भी उपयोग कर सकते हैं --dry-run अनुकरण करने के लिए लेकिन वास्तव में कुछ भी अपग्रेड नहीं। अधिक जानकारी और अन्य विकल्पों के लिए, उपयोग करें --help सहायता संदेश प्राप्त करने के लिए। - ADTC
मैंने कुछ चीजों को सीखा unattended-upgrades आज। धन्यवाद! - the0ther
"निगरानी के लिए यह कैसे चला जाता है", यह सिर्फ गैर-इंटरैक्टिव संदेशों को डीबग कर रहा है? - Aquarius Power


अद्यतनों को प्रबंधित करने के तरीके पर कुछ सुझाव

यह डेबियन और उबंटू दोनों पर लागू होता है, लेकिन उबंटू के लिए अधिक विशिष्ट निर्देशों का पालन करता है।

  • केवल सुरक्षा अद्यतन दिखाएं:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    या

    sudo unattended-upgrade --dry-run -d
    

    या

    /usr/lib/update-notifier/apt-check -p
    
  • सभी नवीनीकरण योग्य पैकेज दिखाएं

    apt-get -s dist-upgrade | grep "^Inst"
    
  • केवल सुरक्षा अद्यतन स्थापित करें

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

टिप्पणियाँ: 

  • कभी-कभी उबंटू सुरक्षा अद्यतन दिखाता है जैसे कि वे $ रिलीज-अपडेट रिपॉजिटरी से आ रहे हैं। ऐसा इसलिए है, मुझे बताया गया है, क्योंकि उबंटू डेवलपर्स $ रिलीज-अपडेट रिपोजिटरी के साथ-साथ अपनी उपलब्धता को तेज करने के लिए सुरक्षा अद्यतनों को भी दबाते हैं।

    यदि ऐसा है, तो आप केवल सुरक्षा अद्यतन दिखाने के लिए निम्न कार्य कर सकते हैं:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    तथा

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • पैकेज अपग्रेड के बाद सेवाओं को पुनरारंभ करने की आवश्यकता है जांचें। यह पता लगाएं कि आप कौन से पैकेज पहले से अपग्रेड करने जा रहे हैं और अपने रीस्टार्ट / रीबूट शेड्यूल कर रहे हैं। यहां समस्या यह है कि जब तक कि आप किसी सेवा को पुनरारंभ नहीं करते हैं, तब भी यह एक लाइब्रेरी का एक पुराना संस्करण (सबसे आम कारण) का उपयोग कर रहा है जिसे आपके द्वारा नए पैकेज को स्थापित करने से पहले स्मृति में लोड किया गया है जो सुरक्षा भेद्यता या जो भी हो।

    checkrestart -v
    

    हालांकि, ध्यान रखें कि checkrestart उन प्रक्रियाओं को सूचीबद्ध कर सकता है जिन्हें जरूरी नहीं किया जाना चाहिए। उदाहरण के लिए, PostgreSQL सेवा पहले से हटाए गए xlog फ़ाइल के मेमोरी संदर्भ में रख सकती है, जो सेवा को पुनरारंभ करने का वैध कारण नहीं है।

    इसलिए, एक और अधिक विश्वसनीय, मानक यूटिल का उपयोग करके इसे जांचने का तरीका निम्न छोटी बैश स्क्रिप्ट है जिसे मैंने लापरवाही से चुरा लिया https://locallost.net/?p=233

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

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    

104
2017-11-16 11:35



मैं केवल इस पोस्ट को नोटिस करता हूं। यह बेहद सटीक है। बहुत बहुत धन्यवाद (+1) - Danduk82
'चेकस्टार्ट' कहां से आता है? मैं इसे उबंटू ट्रस्टी में नहीं ढूंढ सकता। मुझे "needrestart" मिला जो ऐसा लगता है कि यह आपके निर्देशों में फिट होगा? - Ben XO
यह डेबियन-गुड्स पैकेज में पाया जा सकता है: packages.debian.org/wheezy/debian-goodies। जरूरत भी है। आप ज़ेनियल पर चलकर दोनों पा सकते हैं: $ apt-cache खोज चेकस्टार्ट - ILIV
मुझे "ई: लॉक फ़ाइल / var / lib / dpkg / lock नहीं खोल सका (13: अनुमति अस्वीकार)" सूडो के साथ भी। क्या यह आपके द्वारा प्रदान किए गए अपडेट या आपके द्वारा प्रदान किए गए आदेशों में से कुछ विशिष्ट है? - Nathan Hornby
सबसे अधिक संभावना है कि यह डीपीकेजी की गलत / असामान्य समाप्ति के बारे में है जो लॉक फ़ाइल को अस्पष्ट छोड़ देता है। सामान्य रूप से तब तक नहीं होता है, उदा। पैकेज की स्थापना सफलतापूर्वक समाप्त नहीं होती है (पूर्ण डिस्क, इत्यादि) आप शायद अन्य एपीटी-गेट और डीपीकेजी कमांड नहीं चला सकते हैं, क्या आप कर सकते हैं? - ILIV


बदलने के /etc/apt/preferences निम्नलिखित के साथ:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

अब एक सरल है apt-get upgrade केवल सभी सुरक्षा अद्यतनों को अपग्रेड करेगा।

क्यों (और कैसे) यह काम करता है: प्राथमिकता फ़ाइल उबंटू वितरण से प्राथमिकता 50 तक सभी संकुल पिन करेगी, जो उन्हें पहले से स्थापित संकुल से कम वांछनीय बनाती है। सुरक्षा भंडार से उत्पन्न फ़ाइलों को डिफ़ॉल्ट (500) प्राथमिकता दी जाती है ताकि उन्हें स्थापना के लिए माना जा सके। इसका अर्थ यह है कि वर्तमान में स्थापित किए गए पैकेजों की तुलना में अधिक वांछनीय माना जाता है केवल सुरक्षा अद्यतन हैं। में पिनिंग के बारे में अधिक जानकारी apt_preferences manpage

आप अपडेट के लिए अस्थायी रूप से एक निश्चित वितरण को बढ़ावा दे सकते हैं --target-release विकल्प जो काम करता है apt-get तथा aptitude (कम से कम) जो आपको कुछ रिलीज पिन करने की अनुमति देगा ताकि वे अपग्रेड के लिए योग्य हों।

यदि आप इसे केवल स्क्रिप्ट के लिए उपयोग करना चाहते हैं और सिस्टम के लिए इसे डिफ़ॉल्ट नहीं बनाते हैं, तो आप नियमों को किसी अन्य स्थान पर रख सकते हैं और इसके बजाय इसका उपयोग कर सकते हैं:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

इससे प्राथमिकता फ़ाइल को गैर-डिफ़ॉल्ट स्थान से उपयुक्त बना दिया जाएगा।

उदाहरण के रूप में दी गई प्राथमिकता फ़ाइल तीसरे पक्ष के भंडारों पर लागू नहीं होती है, अगर आप उन पिन को भी पिन करना चाहते हैं जिनका आप उपयोग कर सकते हैं apt-cache policy आसानी से पिनिंग के लिए आवश्यक कुंजी निर्धारित करने के लिए।


46
2017-07-29 04:12



एक पूर्ण जवाब के लिए समय लेने के लिए धन्यवाद। मैं सोच मैं समझता हूं कि यह कैसे काम करता है। लेकिन जब मैं / etc / apt / प्राथमिकता फ़ाइल बनाता हूं और apt-get अपग्रेड चलाता हूं, तो यह केवल सुरक्षा अद्यतनों के बजाय सभी संकुल को अपग्रेड करना चाहता है। पहले और बाद में सूची अपग्रेड बिल्कुल वही है, के सिवाय / etc / apt / प्राथमिकताओं के साथ यह Leafpad को अपग्रेड नहीं करना चाहता, जिसे मैंने स्रोत से बनाया और डीपीकेजी के साथ "हाथ से" स्थापित किया। यह मेरे लिए बहुत अजीब है, लेकिन आपके लिए कुछ मतलब हो सकता है। - mac9416
आप देख सकते हैं कि apt-cache नीति कमांड के साथ क्या चल रहा है। उन संकुलों में से एक चुनें जिन्हें सुरक्षा फ़िक्स नहीं मिल रहा है और चलाया जा रहा है apt-cache policy packagename। यह विभिन्न संस्करणों के लिए प्राथमिकताओं की सूची देगा। आपको विभिन्न लाइनों और विभिन्न प्राथमिकताओं को देखना चाहिए। यदि प्राथमिकता 50 के साथ कोई लाइन नहीं है, तो पिनिंग किसी कारण से प्रश्नों के संकुल को प्रभावित नहीं कर रही है। - Ressu
मैंने अतीत में इस जवाब का पालन किया था। आज मुझे पता चला कि इस जवाब के कारण, मेरे सर्वर पर 68 सुरक्षा अद्यतन पैकेज स्थापित नहीं किए गए थे और संभावित इंस्टॉल उम्मीदवारों के रूप में दिखाई नहीं दे रहे थे। यह एक अच्छा जवाब नहीं है! - Shade


उबंटू 14.04 एलटीएस में निम्नलिखित की पुष्टि है।

उपयोग unattended-upgrade पैकेज।

फ़ाइल को देखो /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";
};

ध्यान दें कि डिफ़ॉल्ट रूप से सुरक्षा पैकेजों के लिए केवल अप्रत्याशित अपग्रेड की अनुमति देने के लिए इसे कॉन्फ़िगर किया गया है।

फ़ाइल को संशोधित करें /etc/apt/apt.conf.d/10periodic के समान:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

यह प्रति दिन एक बार स्वचालित अप्रत्याशित सुरक्षा उन्नयन चलाएगा।

अब, मैन्युअल रूप से चलाने के लिए: sudo unattended-upgrade

कुछ भी किए बिना सूखे दौड़ के रूप में परीक्षण करने के लिए: sudo unattended-upgrade --dry-run

स्रोत: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html


9
2017-10-03 17:18



क्या यह मासिक अनुसूची बनाने का कोई तरीका है? - mike.b93
@ mike.b93, मुझे सेटिंग पर विश्वास है APT::Periodic::Unattended-Upgrade "30"; यह सब करेंगे - हर 30 दिन। - vcardillo


हालांकि इसकी सुंदर बदसूरत है, आप सुरक्षा भंडार के अलावा सभी भंडारों को अक्षम कर सकते हैं और फिर:

sudo apt-get update && sudo apt-get upgrade

मैंने इसका परीक्षण नहीं किया है, लेकिन सिद्धांत रूप में यह केवल सुरक्षा रेपो में अपडेट पाएगा और उन्हें लागू करेगा ...


5
2017-07-29 00:00



हाँ, यह एक संभावना है। मैं इस पर गौर करूंगा। मैं बाश में अच्छा नहीं हूं, लेकिन मैं इसे करने के लिए एक स्क्रिप्ट बनाने की कोशिश कर सकता हूं। - mac9416
ठीक है, मैंने उबंटू सुरक्षा रिपो के अलावा सभी को अक्षम कर दिया और एक भाग गया sudo apt-get update && sudo apt-get upgrade (किसी भी उन्नयन से पहले रद्द कर दिया गया था)। फिर मैंने अपने सभी रिपो को फिर से सक्षम किया, भाग गया sudo apt-get updatee, और अद्यतन प्रबंधक खोला। सुरक्षा अद्यतन के रूप में चिह्नित संकुल बिल्कुल ठीक नहीं थे apt-get upgrade मिला, लेकिन वे बहुत करीब थे - मेरे लिए काफी करीब। मैं अभी भी चाहता हूं कि मुझे पता था कि अद्यतन प्रबंधक कैसे करता है और कमांड लाइन से ऐसा कैसे करें, लेकिन यह करेगा। धन्यवाद! - mac9416


  • apt-get update: मौजूदा सूची के अनुसार - भंडार में प्रविष्टियों को पढ़ें। नया क्या है यह जांचने की आवश्यकता है।
  • apt-get upgrade: कर्नेल मॉड्यूल के बिना स्थापित संकुल के लिए सभी अद्यतन। कोई रिलीज अपडेट नहीं।
  • apt-get dist-upgrade: कर्नेल मॉड्यूल के साथ भी स्थापित संकुल के लिए सभी अद्यतन। कोई रिलीज अपडेट नहीं।
  • apt-get पैरामीटर के साथ -s: केवल परीक्षण, कोई बदलाव नहीं किया।

3
2017-08-02 09:49





मुझे या तो उपयुक्त या योग्यता में कोई विकल्प नहीं मिल रहा है, हालांकि किसी के पास था वही प्रश्न SuperUser पर। एकमात्र प्रतिक्रिया है:

जांचें और /etc/apt/apt.conf.d/50unattended-upgrade समायोजित करें। क्या आपने अपने उबंटू के कोड नाम के साथ 'कर्मिक' को प्रतिस्थापित किया था?

हालांकि यह काम करने के लिए कोई जवाब नहीं है।


0
2017-07-28 23:04



ऐसा प्रतीत होता है कि उस विकी पृष्ठ में वर्णित विधि <release> -security के लिए योग्यता-लक्ष्य-रिलीज तर्क सेट करने पर निर्भर करती है। उस प्रश्न के ओपी की तरह, वह विधि केवल सभी उन्नयन स्थापित करती है, न केवल सुरक्षा उन्नयन। एपीटी-गेट और योग्यता वाले मैन पेज पढ़ना, मुझे नहीं लगता कि - लक्ष्य-रिलीज तर्क का उद्देश्य केवल सुरक्षा के लिए उन्नयन को सीमित करना है, हालांकि मुझे यकीन नहीं है कि यह क्या है है के लिये। - mac9416