मैं प्रस्तावित रिपॉजिटरी में अपग्रेड से वापस कैसे लौट सकता हूं?


23

मैंने गलती से प्री-रिलीज़ अपडेट (नेटी-प्रस्तावित) रिपॉजिटरी को सक्षम कर दिया और फिर सभी पैकेजों को अपग्रेड कर दिया।

मैं इसे पूर्ववत कैसे कर सकता हूं?

यहाँ परीक्षण के परिणाम से @ enzotib के निर्देशों और परीक्षण के परिणाम से मेरे निर्देशों


1
परीक्षण के परिणाम pastebins मर चुके हैं।
enzotib

जवाबों:


24

यहाँ स्थानीय रूप से स्थापित संकुल, प्रस्तावित और बैकपैक संकुल को स्थिर + अपडेट चैनल से वापस लाने का एक अधिक सामान्य तरीका है। जबकि अन्य उत्तर सही हैं और एक समान तरीके से काम करते हैं, मुझे लगता है कि यह अधिक सुरुचिपूर्ण दृष्टिकोण है।

  1. सुनिश्चित करें कि आप में से हटाई गई प्रविष्टियां -proposedया -backportsअपने में /etc/apt/sources.listऔर /etc/apt/sources.list.d/*फ़ाइलें।
  2. Apt-प्राथमिकताएं फ़ाइल जोड़ें, उदाहरण के लिए /etc/apt/preferences.d/99-back-to-stable-updatesयुक्त ( preciseयहाँ - अपने संस्करण के साथ बदलें):

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    > 1000 की यह पिनिंग उस चैनल से संकुल पर अपग्रेड बल बनाएगी -proposedऔर -backportsचैनल पर <0 की प्राथमिकता और किसी अतिरिक्त पैकेज को भी हटा देगी।

  3. अब दौड़ो

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    प्रस्तावित समाधान का निरीक्षण करें जो आपको देगा, और यदि आपको लगता है कि यह ठीक है, तो इसे स्वीकार करें। यदि आपको यह जांचने की आवश्यकता है कि इसे क्यों और किस संस्करण में डाउनग्रेड किया जाएगा, तो यह देखने के apt-cache policy packagenameलिए कि कौन से संस्करण उपलब्ध हैं और उपयुक्त स्थापना के लिए उम्मीदवार क्या है , इसकी जांच करें ।

  4. /etc/apt/preferences.d/99-back-to-stable-updatesफ़ाइल को फिर से निकालें , क्योंकि अब इसकी आवश्यकता नहीं है।

5 साल से अधिक समय से अपने पदmlind पर पिनिंग के लिए इस प्रेरणा के लिए उबंटू मंचों पर धन्यवाद - फिर भी इसने मुझे आज अच्छी तरह से मदद की।


मुझे लगता है कि इसे डेबियन के साथ भी काम करना चाहिए। दुर्भाग्य से, यह मेरे लिए कुछ भी नहीं करता है: /
माइकल

@ मिचेल 1) डेबियन की -proposed आधिकारिक रिपॉजिटरी की अवधारणा नहीं है। 2) यह साइट उबंटू के बारे में है, डेबियन नहीं। मैं आपको Unix.SE पर एक नया प्रश्न पूछना चाहता हूं
gertvdijk

इस समाधान ने 'xenial' संस्करण के साथ भी काम किया! (फ़ाइल में xenial के साथ सटीक जगह के बाद, निश्चित रूप से) बहुत बहुत धन्यवाद!
मोरचुक

4

इस पृष्ठ से पता चलता है कि एप्ट पिनिंग का उपयोग इस तथ्य का लाभ उठाकर संपूर्ण रिपॉजिटरी से डाउनग्रेड करने के लिए किया जा सकता है कि 1000 से अधिक पिन प्राथमिकताएं पैकेज डाउनग्रेड का कारण बन सकती हैं

एक समाधान, तब, natty-proposedरिपॉजिटरी वालों से अलग, सभी पैकेज फ़ाइलों की डिफ़ॉल्ट प्राथमिकताओं को 1000 तक अस्थायी रूप से बढ़ाना हो सकता है:

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

(नोट: यह विधि उन पैकेज फ़ाइलों की प्राथमिकता बढ़ाने में विफल है जिनके रिलीज़ फ़ील्ड में अल्पविराम हैं। यह प्रश्न देखें ।)

ऐसा करने के बाद, apt-get --simulate upgradeसफल डाउनग्रेड डिटेक्शन के लिए परीक्षण करने के लिए इस्तेमाल किया जा सकता है। यह पुष्टि करने के बाद कि सही डाउनग्रेड का पता चला है, sudo apt-get upgradeडाउनग्रेड करने के लिए आवश्यक सभी होना चाहिए।

जब डाउनग्रेड पूरा हो जाता है, तो प्री-रिलीज़ अपडेट (नेटी-प्रस्तावित) रिपॉजिटरी को अक्षम करने के लिए सॉफ़्टवेयर स्रोतों का उपयोग करें , फिर अस्थायी प्राथमिकता वृद्धि को हटा दें:

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

अंत में, रिबूट करें ताकि सभी चलने वाले प्रोग्राम उनके डाउनग्रेड किए गए संस्करण हों।


1
दिलचस्प समाधान, शायद मेरा सबसे अच्छा और अधिक सामान्य। वैसे, डाउनग्रेड किए गए पैकेजों की संख्या समान है, दोनों दृष्टिकोणों की शुद्धता की पुष्टि करते हैं।
enzotib

2

मैं निम्नलिखित की तुलना में एक सरल समाधान नहीं ढूँढ सकता। फिर भी किसी को बेहतर उत्तर देने की उम्मीद है।

निम्न स्क्रिप्ट जो डाउनग्रेड को निष्पादित कर सकती है

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

awkस्क्रिप्ट, नामित get-prev-pkg-versपालन है

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

स्क्रिप्ट चलाते समय, प्रस्तावित रेपो को अभी तक अक्षम नहीं किया जाना चाहिए था।

दोनों लिपियों पर निष्पादन योग्य बिट सेट करना याद रखें।

इस दृष्टिकोण के साथ एक समस्या यह है कि सभी डाउनग्रेड किए गए पैकेजों को मैन्युअल रूप से स्थापित किया जाएगा (वे भी जो स्वचालित रूप से स्थापित थे)।

सुरक्षित होने के लिए, बैश स्क्रिप्ट के अंत में --simulateविकल्प जोड़ें apt-get


2

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

यदि आपके पास एक पैकेज के साथ कोई समस्या है, तो आप उस पैकेज को वापस ले सकते हैं जिसमें विधि प्रस्तुत करने (अक्षम करने के बाद) का उपयोग कर या आप उपयोग कर सकते हैं sudo aptitude install packagename/natty। लेकिन इससे भी महत्वपूर्ण बात, आपको पैकेज के खिलाफ बग दर्ज करना चाहिए। कुछ लोग वास्तव में नेटी-प्रस्तावित का परीक्षण करते हैं, और यदि प्रतिगमन (= नई समस्याएं) होती हैं, तो उन्हें निश्चित रूप से रिपोर्ट किया जाना चाहिए। अन्यथा वे सभी ubuntu उपयोगकर्ताओं के लिए अपडेट में एंड-अप कर सकते हैं। इसलिए यदि आपके पास कोई समस्या है, तो कृपया रिपोर्ट करें।


1

सिनेप्टिक में आप प्रस्तावित के लिए भंडार को निष्क्रिय कर सकते हैं और अपने स्रोतों को अपडेट कर सकते हैं। तब आप देखेंगे कि अपडेट किए गए सभी पैकेज स्थानीय स्तर पर इंस्टॉल किए गए हैं (क्योंकि वे अब रिपोज में नहीं हैं)।

अब आपको उन पैकेजों को "डाउनग्रेड" करना होगा। एक-एक करके चुनें, और ऊपरी मेनू में चुना गया:

package > force version

(या नियंत्रण + ई)

एक मेनू उपलब्ध विकल्पों के साथ दिखाई देगा। मैं प्रत्येक पैकेज के लिए निम्न संस्करण संख्या चुनूंगा। यदि आप एक गलती करते हैं और सामान्य रीपो में एक नया संस्करण है, तो इसे बाद के अपडेट में हल किया जाएगा।

एक त्वरित समाधान शुद्ध-ppa कमांड का उपयोग करके porposed रिपॉजिटरी की ओर इशारा करना होगा, लेकिन यह नहीं जानते कि क्या यह उनके साथ काम करेगा, मैंने इसका उपयोग केवल बाहरी ppa के और डाउनग्रेड पैकेज को आधिकारिक uber संस्करणों में शुद्ध करने के लिए किया है। मैं आपको इस मामले में ऐसा करने के लिए नहीं उतारूंगा, शायद किसी को पता हो कि यह एक सुरक्षित तरीका है ...


अंतिम पैराग्राफ केवल अटकलें हैं और इसलिए प्रश्न पर टिप्पणी होनी चाहिए या ठीक से शोध किया जाना चाहिए।
कार्ल रिक्टर

0

मैंने https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499 पर proposedएक सरल बनाए रखा कमांड समतुल्य के साथ सभी पैकेजों को डाउनग्रेड करने के लिए एक समारोह प्रदान करने का प्रस्ताव दिया क्योंकि यहां पोस्ट्स का प्रतिनिधित्व करते प्रतीत नहीं होते हैं प्रणाली की स्थिति।ppa-purge

"प्रस्तावित" - इसे प्राप्त करें?

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