Ubuntu पर डू-रिलीज़-अपग्रेड के माध्यम से असफल रिलीज़ अपग्रेड के बाद अप्रचलित पैकेज कैसे निकालें?


14

कभी-कभी, जब मैं किसी सिस्टम को अपग्रेड करता हूं do-release-upgrade, तो अपडेट प्रक्रिया विफल हो जाती है और स्क्रिप्ट मुझे मैन्युअल रूप से प्रक्रिया को पूरा करने के लिए कहती है dpkg --configure -a। यह एक गंभीर समस्या नहीं है - मैन्युअल रूप से निर्भरता की समस्या को हल करने और परिष्करण उन्नयन प्रक्रिया के बाद सभी अच्छी तरह से काम करते हैं।

लेकिन do-release-upgradeअपग्रेड खत्म करने के बाद स्क्रिप्ट में सफाई की प्रक्रिया होती है:

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

जो सिस्टम के पुराने संस्करण से कुछ अप्रचलित पैकेजों को हटा देता है।

ऐसा लगता है कि स्वचालित नवीनीकरण विफल होने पर यह प्रक्रिया निष्पादित नहीं होती है और मैं मैन्युअल रूप से नवीनीकरण समाप्त करता हूं, इसलिए पुराने संस्करण से अप्रचलित पैकेज सिस्टम में स्थापित रहते हैं।

हाथ से अपग्रेड खत्म करने के बाद मैं मैन्युअल रूप से "अप्रचलित पैकेज निकालें" प्रक्रिया कैसे चला सकता हूं?

जवाबों:


16

इसका परीक्षण करें:

एक टर्मिनल खोलें,

प्रेस Ctrl+ Alt+T

चलाओ:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub

1
धन्यवाद, वे कमांड वास्तव में हैं जो मैं चाहता हूं, उनमें से मुख्य यह है dpkg -l|grep "^rc"|awk '{print $2}'कि हटाने के लिए पैकेज दिखाता है। यह अजीब है कि एप्ट-गेट या एप्टीट्यूड न 'इसे हटाने के लिए देखना चाहते हैं।
मुरज

2
आपके उदाहरण के आधार पर असफल-रिलीज़-अपग्रेड के बाद अप्रचलित पैकेजों को हटाने के लिए एक-लाइन cli कमांड है sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge:। ध्यान दें, यह कमांड बिना पुष्टि के पैकेजों को हटा देता है, लेकिन जल्दी से सफाई प्रणालियों को स्वचालित करने के लिए उपयोगी है।
मुरज

मेरे सिस्टम पर '^rc'-मार्क पैकेज भी स्थापित नहीं थे, लेकिन अप्रचलित पैकेजों की खोज करने से पहले अपग्रेड सही नहीं हुआ। इसलिए यह उत्तर अधूरा लगता है। यह उन सभी पैकेजों को नहीं हटाएगा do-release-upgrade, जो सफल होंगे।
रुस्लान

2

मेरा मानना ​​है कि "अप्रचलित पैकेज निकालें" वास्तव में सिर्फ एक चलाता है sudo apt-get autoremove। यह कोशिश करो, देखो अगर यह मदद करता है।


2
sudo apt-get autoremoveकेवल संकुल का छोटा सा हिस्सा निकालता है, जो निकालता है do-release-upgrade, उदाहरण के लिए do-release-upgradeउसी प्रणाली पर लगभग 150 संकुल निकालता है, लेकिन apt-get autoremoveकेवल 5-10 संकुल को हटाता है।
मर्ग

1

मुझे लगता है कि एक असंबंधित प्रश्न का यह उत्तर उपयोगिता और कमांड प्रदान कर सकता है जो अप्रयुक्त सामान को अधिक हटाने के लिए लगता है:

  1. "Deborphan" पैकेज स्थापित करें।
  2. sudo deborphan | xargs sudo apt-get -y remove --purge

अनाथ पैकेज और अप्रचलित पैकेज के बीच अंतर पर ध्यान दें। और ओटी अप्रचलित पैकेजों को हटाना चाहता था - askubuntu.com/questions/286947/…
डैनियल एल्डर

@ डैनियल एल्डर ओटी एक असफल रिलीज अपग्रेड के बाद अप्रचलित पैकेजों को हटाना चाहते थे। रिपॉजिटरी को बदलने और एक पूर्ण अपग्रेड को निष्पादित करने के बाद रिलीज़ अपग्रेड अंतिम चरण के रूप में क्या करता है, क्या यह अनाथ पैकेज हटाता है। इसलिए असफल रिलीज़ अपग्रेड के बाद मैन्युअल रूप से दोहराया जाने वाला यह अंतिम चरण है।
डस्टवॉल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.