क्या हाल ही में अपग्रेड को वापस रोल करने का कोई तरीका है?


54

पिछले 5 वर्षों में कई बार मेरे साथ ऐसा हुआ है: एक उन्नयन ने मेरी प्रणाली को तोड़ दिया। हर बार जब मैं इस स्थिति को समाप्त करता हूं, मुझे पूरी प्रणाली को फिर से स्थापित करना होगा, जो वास्तव में कष्टप्रद है।

क्या बिना रीइंफोर्समेंट के एक कार्यात्मक सिस्टम बनाने में सक्षम होने के लिए सबसे हाल के अपग्रेड को रोल करने का कोई तरीका है? यदि नहीं, तो सर्वोच्च प्राथमिकता वाले विचार के रूप में यह सुझाव देने का सबसे अच्छा तरीका क्या है?

मैंने पढ़ा कि यह विचार बुद्धिशीलता में वर्णित था। धन्यवाद!


17
मैं सिर्फ इस सवाल को वोट करने के लिए साइन कर रहा हूं। 2011 के डेस्कटॉप OS में एक सुसंगत रोल-बैक टूल की कमी दयनीय है। विंडोज में 5 साल पहले सिस्टम रिस्टोर था, जो कर्व के पीछे एक लंबा रास्ता था। उपयोगकर्ताओं को सुरक्षा अद्यतनों को स्थापित करने के लिए ( सही ढंग से ) प्रशिक्षित किया गया है, लेकिन हमें ड्राइवरों को विफल करके ऐसा करने के लिए लगातार दंडित किया जाता है।
गेट्स वीपी

@GatesVP यह बिंदु जो आपने 8+ वर्ष पहले बनाया था, वह अभी भी उबंटू को पछाड़ रहा है (अन्य डिस्ट्रो के लिए नहीं बोल सकता है लेकिन वे शायद बेहतर हैं)। मुझे यह पूरी तरह से निराशाजनक लगता है। किसी को आपके शब्द 64 पीटी फ़ॉन्ट में मुद्रित होने चाहिए और हर नौसिखिया के सामने लीनक्स की दुनिया में उतरने के लिए लटका देना चाहिए।
राशिफल

मुझे इस बात से सहमत होना होगा कि बैकअप छवि जाने का रास्ता है। यह नहीं कहा गया है कि क्या यह एक 'उत्पादन' प्रणाली है। यदि यह क्लोन परीक्षण प्रणाली के लिए संभव है और संभव है तो छवि बैकअप के साथ जाने का रास्ता है। यदि केवल एक ऐप अपडेट होता है, तो सबसे तेज़ समाधान 'बल' विकल्प के साथ या उसके बिना डाउनग्रेड करना है।
जेपीपीएरी एरिजोना

जवाबों:


14

सिनैप्टिक्स में, आप कम से कम नियंत्रण कर सकते हैं, हाल ही में अपडेट क्या हुए हैं: फ़ाइल-मेनू, इतिहास।

(यदि सिनैप्टिक शुरू करने योग्य है, टूटी हुई प्रणाली के साथ)। तो अपने अद्यतन को वापस करने के लिए apt -...- कमांड के साथ, यह बहुत कठिन नहीं होना चाहिए।

मुझे लगता है कि कमांड लाइन के लिए भी एक इतिहास-कमान है।

शायद आपको पूरे पैकेज को हटाना होगा, और एक विशिष्ट संस्करण स्थापित करना होगा। Afaik, एक विशिष्ट संस्करण स्थापित करना संभव है, लेकिन मुझे ऐसा करने की आवश्यकता कभी नहीं थी।

अद्यतन: ऊपर के साथ कैसे करना है:

पिछले 3x24h में स्थापित पैकेज खोजें:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

उपयुक्त कैश नीति के साथ, आप एक कार्यक्रम के उपलब्ध संस्करण देखते हैं:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

यहाँ 3.6.7 और 3.6.3। अब आप जानते हैं कि पहले वाला संस्करण क्या स्थापित किया जा सकता है (अक्सर तत्काल पूर्ववर्ती नहीं):

sudo apt-get install PROGRAM=3.6.3

फिर आपको भविष्य के अपडेट को रोकने के लिए एक उपयुक्त-पिनिंग करने की आवश्यकता है:

अपने कार्यक्रम के नाम पर /etc/apt/preferences.d/ (यदि> = 10.4) में एक नई फ़ाइल बनाएं,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

सभी जानकारी के लिए धन्यवाद। मैं बॉक्स से बाहर zfs को प्रबंधित करने के लिए ubuntu का इंतजार नहीं कर सकता!
मार्सेलो रूइज़

मुझे खेद है - इसका zfs के साथ क्या करना है? क्या zfs रोलबैक का प्रबंधन करता है? या क्या अपडेट आपके zfs-install को तोड़ते हैं? या क्या zfs-update कुछ तोड़ता है?
उपयोगकर्ता अज्ञात

क्या होगा अगर संस्करण उपयुक्त के 1.0.2g-1ubuntu4.12अनुसार है? यह स्वीकार करने से इंकार करता है कि संस्करण संख्या के रूप में। मैं प्रपत्र डाउनग्रेड करना चाहते 1.0.2g-1ubuntu4.13करने के लिए1.0.2g-1ubuntu4.12
कसाबा टोथ

धन्यवाद, suuuuuuuuuuuuch दर्द हालांकि। मेरा अंतिम अद्यतन जो पूरी तरह से नियंत्रक इनपुट को नष्ट कर दिया है find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' , इस बिंदु पर सूचीबद्ध 80 पैकेज हैं , यह मेरी पूरी प्रणाली को फिर से स्थापित करने के लिए एक परेशानी से कम नहीं है
tatsu

7

अधिकतर आप /var/log/apt/history.logapt / synaptic द्वारा किए गए परिवर्तनों के लिए परामर्श कर सकते हैं । यह बस थोड़ा फोरेंसिक है और कट / पेस्ट का एक बहुत कुछ करना है।

उस तिथि पर वापस जाएं जब आपका सिस्टम अभी भी ठीक काम कर रहा था।

पहले उन सभी पैकेजों को लें जो तब से इंस्टॉल हो गए हैं और उन्हें एक साथ अनइंस्टॉल स्क्रिप्ट में डाल दिया है। जब स्क्रिप्ट समाप्त हो गई है, तो सभी हटाए गए पैकेजों को फिर से जोड़ना शुरू करें।

एक उदाहरण का मामला:
लॉगफाइल:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

आप देख सकते हैं,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

Synaptic द्वारा स्थापित किया गया। जैसे libfglrx:amd64कि सिनैप्टिक द्वारा हटा दिया गया।

हम रिवर्स ऑर्डर गए, इसलिए पहले हम नए इंस्टॉल किए गए पैकेजों को हटाते हैं और हम हटाए गए पैकेजों को फिर से जोड़ते हैं।

इस मामले के लिए एक कार्यकारी आदेश इस तरह लग सकता है:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

शायद यह -yस्विच के बिना जाने के लिए सबसे अच्छा विचार नहीं होगा - प्रक्रिया के बारे में अधिक नियंत्रण (टूटी हुई निर्भरता से बचने के लिए)। कुछ सत्यापन "y" करते समय आपमें से अधिकांश अपनी उंगली नहीं तोड़ेंगे

ज्यादातर मामलों में इस तरह से एक रोलबैक संभव है, लेकिन अगर निर्भरता पहले से ही टूट गई है - तो आप और भी बड़े मुद्दे में भाग सकते हैं।


6

अधिकांश समय यदि आपका सिस्टम टूट गया है तो यह एक कर्नेल समस्या है।

बस एक पुराने कर्नेल को बूट करें और सबसे हाल के पैकेजों (विशेषकर कर्नेल पैकेजों) को पुनर्स्थापित करें जो शायद सही ढंग से अपडेट नहीं हुए हैं। कुछ नोट:

/var/log/dpkg.log

हाल ही में अद्यतन / स्थापित पैकेजों की सूची क्या है, यह जांचने के लिए आपका मित्र है

sudo apt-get -f install

अधिकांश समय आधे-स्थापित पैकेजों को ठीक कर सकते हैं


4

दुर्भाग्य से अभी तक ऐसा करने का कोई तरीका नहीं है। फाइलसिस्टम स्तर स्नैपशॉट / रोलबैक आगामी btrfs की विशेषताओं में से एक है, लेकिन इसके पास अभी भी एक तरीका है कि वह पूरी तरह से स्थिर हो जाए और डिफ़ॉल्ट फाइल सिस्टम के रूप में उपयोग करने के लिए पर्याप्त स्थिर हो।


1
फाइलसिस्टम स्नैपशॉट के लिए, आप ext3 या ext4 के साथ LVM का उपयोग कर सकते हैं।
१२:२२ बजे फ्लिम्ड

@ फीलम, अब आप कर सकते हैं, हालांकि यह बहुत अच्छी तरह से काम नहीं करता है और इसके लिए आवश्यक है कि जब आप पहली बार में स्थापित करें तो आप LVM सेट करें।
psusi

3

एक प्रमुख अपग्रेड करते समय, मैं Clonezilla का उपयोग करके डिस्क को क्लोन करता हूं । इसे सीडी पर जलाएं, एक अतिरिक्त (बाहरी) एचडीडी उपलब्ध है और क्लोनज़िला लाइवसीडी पर दिए गए निर्देशों का पालन करें। partition-imageमोड चुनें , यह कम से कम स्थान का उपयोग करता है।

यदि आपको लगता है कि आपने अपना सिस्टम तोड़ दिया है (या किसी भी परिवर्तन को वापस करना चाहते हैं), बस Clonezilla LiveCD में बूट करें, अपने (बाहरी) HDD पर छवि का चयन करें और इसे पुनर्स्थापित करें। चूंकि ये चित्र आपकी डिस्क पर प्रत्येक बिट की शाब्दिक प्रतिलिपि हैं, इसलिए आपकी डिस्क गति और कनेक्शन की गति (डेटा, आमतौर पर एक बाहरी यूएसबी एचडीडी, और कंप्यूटर के बीच कनेक्शन) के आधार पर कुछ घंटे लग सकते हैं।

वैसे, इसे एक बैकअप विधि कहा जाता है।


3

आप किसी दिए गए पैकेज (डाउनग्रेड) के पुराने संस्करण को apt या dpkg के साथ आसानी से स्थापित कर सकते हैं । पैकेज का एक पुराना संस्करण ढूंढना समस्या है क्योंकि ये अक्सर पूल और दर्पण से अपडेट रोल के रूप में गायब हो जाते हैं।

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

सभी सॉफ़्टवेयर भी संगत नहीं है, इसलिए किसी पुराने संस्करण को नए कॉन्फ़िगरेशन या डेटा फ़ाइलों के साथ फीड करने पर सही व्यवहार नहीं हो सकता है। स्पष्ट रूप से यह हल करना असंभव है जब तक कि आप नवीनीकरण से पहले सभी उपयोगकर्ता डेटा को एक राज्य में वापस रोल नहीं करते।

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

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

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

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