क्या कोई वितरण है जो अद्यतन पैकेज वापस करने का समर्थन करता है?


23

क्या कोई उपकरण या यहां तक ​​कि एक संपूर्ण वितरण है जो अपडेट के बाद रोलिंग-बैक परिवर्तित पैकेज का समर्थन करता है?

एक उदाहरण के रूप में: मैंने पैकेज ए, बी और सी को अपग्रेड किया। कई दिनों तक उन पैकेजों के साथ काम करने के बाद, मैं बी में एक बग का सामना करता हूं जो डील-ब्रेकिंग है।

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

क्या कोई उपकरण या कोई वितरण है जो इसका समर्थन करता है?

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


3
ध्यान दें: यदि पैकेज संस्करण परिवर्तन मामूली था, तो नीचे दिए गए उत्तर लागू हो सकते हैं; हालांकि ध्यान दें कि बड़ा पैकेज परिवर्तन डिस्क डेटा को अपग्रेड कर सकता है जो पुराने संस्करण में बाद में सही ढंग से काम नहीं करेगा। उदाहरण के लिए, mysql-server (या joomla) प्रमुख अपग्रेड फ़ील्ड को जोड़ेंगे और संशोधित करेंगे और SQL टेबल को अपग्रेड करेंगे, inn2 अपग्रेड डेटाबेस प्रकार बदल सकते हैं, या कुछ डिस्ट्रो कर्नेल अपग्रेड ext3 को ext4 फाइलसिस्टम में अपग्रेड कर सकते हैं, या कुछ पैकेज अपग्रेड कॉन्फिगर फाइल को बदल देंगे, आदि "अनियंत्रित" परिवर्तनों के खिलाफ एकमात्र सुरक्षा LVM / btrfs / etc स्नैपशॉट (या बहुत धीमा बैकअप / पुनर्स्थापना) हैं।
मतिजा नलिस

@MatijaNalis +1 का उल्लेख करने के लिए!
स्टीफन विंकलर

जवाबों:


21

NixOS अपग्रेड रोलबैक का समर्थन करता है, हालांकि जैसा कि मैं इसे समझता हूं, यह उतना नहीं जाता जितना आप चाहते हैं: यदि आप A, B और C को एक ऑपरेशन में अपग्रेड करते हैं, तो आप उस संपूर्ण ऑपरेशन को वापस रोल कर सकते हैं, लेकिन सिर्फ A और B. (आपको A, B और C को पीछे ले जाने में सक्षम होना चाहिए, और फिर C ... को अपग्रेड करना चाहिए) जो कि लेन-देन के नजरिए से समझ में आता है।

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


1
यह दिलचस्प लग रहा है! समुदाय सक्रिय और स्वस्थ दिखता है। मैं निश्चित रूप से यह कोशिश करूँगा, धन्यवाद! यदि शुक्रवार शाम तक कोई बेहतर / अलग उत्तर नहीं है, तो मैं आपके उत्तर को चिह्नित करूंगा।
स्टीफन विंकलर

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

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

सिर्फ FYI करें, मैं अपने लैपटॉप पर NixOS को स्थापित करने में कामयाब रहा (KDE4 छवि ने मुझे कर्नेल आतंक दिया, लेकिन छोटी (~ 390 एमबी) छवि ठीक बूट हुई। किसी ऐसे व्यक्ति के लिए जिसने कभी केवल डेबियन आधारित वितरण स्थापित किया था, यह काफी दिलचस्प या मजेदार था। , मैं अभी तक पैकेज मैनेजर के बारे में कुछ चीजों को नहीं समझता हूं, खासकर जब यह डेस्कटॉप वातावरण की बात आती है। मैंने gdm / gnome-shell स्थापित किया है, लेकिन यह काम नहीं करेगा। मैंने तब कॉन्फ़िगरेशन.nix फ़ाइल में और पुनर्निर्माण पर gnome3 / gdm को सक्षम किया। यह, दोनों पैकेज और उनकी निर्भरता फिर से डाउनलोड किया गया था। यह एक रिबूट के बाद काम किया था, लेकिन मुझे समझ में नहीं आता क्यों।
स्टीफन विंकलर

@SteffenWinkler NixOS का उपयोग करते समय, आप सामान्य रूप से चीजों को स्थापित नहीं करते हैं nix-env, इसके बजाय आप चीजों को निर्दिष्ट करते हैं configuration.nixऔर फिर चलाते हैं nixos-rebuild switch। इसका यह लाभ है कि आपके सभी सिस्टम कॉन्फ़िगरेशन एक ही स्थान पर हैं, और आपके पूरे सिस्टम के कॉन्फ़िगरेशन (बस configuration.nixफ़ाइल का बैकअप ) का बैकअप लेना आसान है ।
पौआं

15

किसी भी yumआधारित वितरण पर (जैसे Red Hat EL , CentOS , आदि), आप कर सकते हैं:

  1. सिस्टम के उपयोग में परिवर्तन के इतिहास की जाँच करें sudo yum history list

    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    ------------------------------------------------------------------------------
        10 | Administrator <admin>    | 2016-03-08 09:08 | Install        |   11   
         9 | Administrator <admin>    | 2016-03-03 16:48 | Install        |    1   
         8 | Administrator <admin>    | 2016-03-03 16:09 | Install        |    5   
         7 | Administrator <admin>    | 2016-02-26 18:13 | Install        |    1   
         6 | Administrator <admin>    | 2016-02-26 15:12 | Install        |   27   
         5 | Administrator <admin>    | 2016-02-26 15:07 | Install        |    1   
         4 | Administrator <admin>    | 2016-02-26 15:05 | Install        |    3  <
         3 | Administrator <admin>    | 2016-02-26 15:03 | Install        |    1 > 
         2 | Administrator <admin>    | 2016-02-26 15:01 | I, U           |   49   
         1 | System <unset>           | 2016-02-26 14:38 | Install        |  296   
    history list
    
  2. विवरण का उपयोग करते हुए जाँच करें sudo yum history info 10

  3. का उपयोग करते हुए, इतिहास में पिछले बिंदु पर रोलबैक sudo yum history rollback 9

चेतावनी

कुछ स्पष्ट चेतावनी हैं:

  1. यदि पुराना पैकेज अब उपलब्ध नहीं है, तो आप टोस्ट हैं (@vonbrand को उद्धृत करने के लिए),
  2. यदि आप यम के बाहर कुछ भी स्थापित करते हैं, तो आप इतिहास को तोड़ सकते हैं।

मेरे उदाहरण में, कि <आईडी के साथ पंक्ति 4में (अंतिम कॉलम में), इसका मतलब है कि मैं उस बिंदु पर पिछले रोलबैक नहीं कर सकता।

sudo yum history rollback 2
Loaded plugins: fastestmirror
Transaction history is incomplete, before 4.
 You can use 'history rollback force', to try anyway.
Error: Failed history rollback, incomplete

3
दिलचस्प सुविधा! लेकिन 'टोस्ट' के कारण मेरा बिल फिट नहीं हुआ।
स्टीफन विंकलर

AFAIK यह केवल RHEL / CentOS 6 या इसके बाद के संस्करण में संभव है। यदि आप अभी भी RHEL / CentOS 5 का उपयोग कर रहे हैं तो आप SOL हैं।
वाइल्डकार्ड

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

केवल पुराने संस्करण को फिर से स्थापित करने के लिए वापस रोल करने का क्या लाभ है?
ब्राचली

@ क्रैचली स्वचालन! yum बस पुराने संस्करणों को फिर से स्थापित करने पर निर्भरता के लिए स्थापित पैकेज और संस्करणों की सूची और जांच को ध्यान में रखते हुए । जाहिर है आप इसे हाथ से कर सकते हैं ।
andcoz

7

पर OpenSUSE आप आसानी से उपयोग कर सकते हैं Btrfs फाइल सिस्टम के साथ स्नैपर

यदि आप स्थापना के दौरान मानक फ़ाइल-सिस्टम कॉन्फ़िगरेशन का उपयोग करते हैं , तो यह डिफ़ॉल्ट रूप से सक्षम है

स्नैपर सक्षम होने के बाद, यह पूरी तरह से एकीकृत है yast2और zypper। यह हर बार आपके द्वारा कुछ स्थापित करने या अपग्रेड करने (या किसी उपयोगकर्ता आदि) को बनाने के लिए एक फाइलसिस्टम स्नैपशॉट बनाएगा।

सिस्टम को पिछली स्थिति में रोलबैक करने के लिए, आपको केवल चलाना होगा yast2 snapper

यहाँ छवि विवरण दर्ज करें


दिलचस्प उपकरण वास्तव में। हालांकि मैं ext4 का काफी शौकीन हूं। इस पर शोध करेंगे! क्या मैं यह मानने में सही हूँ कि स्नैपर OpenSUSE के लिए 'बाध्य' नहीं है, बल्कि btrfs के लिए है?
स्टीफन विंकलर

स्नैपर SUSE द्वारा विकसित किया गया है। यह उपकरणों का एक संग्रह है जो "घटनाओं" पर Brtfs स्नैपशॉट के निर्माण को स्वचालित करता है। मुझे लगता है कि आप इसे अन्य वितरणों पर उपयोग कर सकते हैं, लेकिन मुझे यकीन नहीं है। किसी भी स्थिति में, आप किसी भी वितरण पर मैन्युअल रूप से Brtfs स्नैपशॉट बना सकते हैं।
andcoz

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

1
यह भी ध्यान दें कि कई पैकेजों में फाइलें और / या निर्देशिकाएं होती हैं, /varइसलिए इसे /अलग से एफएस या सबवोल्यूम होने के बावजूद वापस रोल करना पड़ता है। ओएस अपग्रेड रोलबैक जैसी सुविधाओं पर भरोसा करने की तुलना में प्रोडक्शन सर्वर पर अप्लाई करने से पहले किसी अपग्रेड का पूरी तरह से परीक्षण करना बेहतर है (जो कि आधे-अधूरे तरीके से करना आसान है लेकिन सही तरीके से हल करना एक बेहद मुश्किल समस्या है )।
कैस

1
@ जिम्प एक अच्छी सलाह। किसी भी मामले में, OpenSuSE स्नैपर को सक्षम नहीं करता है जब तक /homeकि एक अलग नॉन स्नैपशॉट फाइलिंग सिस्टम में न हो।
andcoz

6

AIX बैक अपडेट्स को रोल करने में बहुत अच्छा है। ठीक है - हम यूनिक्स / लिनक्स साइट पर हैं और आपने कभी निर्दिष्ट नहीं किया है कि आप लिनक्स चाहते हैं :)

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

एक बोनस के रूप में, mksysbबूट करने योग्य स्टैंड-अलोन सिस्टम बैकअप बनाने के लिए एक तुच्छ देशी कमांड है। फ़ाइल जो कि पूरी तरह से खराब प्रणाली पर बूट की जा सकती है जो कुछ खराबी / भ्रष्टाचार के कारण बूट नहीं होती है।

और यह इतिहास के दशकों के साथ सभी सिद्ध प्रौद्योगिकी है :)


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

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

लानत है। मुझे निर्दिष्ट करना चाहिए कि मेरा मतलब जीएनयू / लिनक्स वितरण है। लेकिन दिलचस्प बात यह है कि AIX आजकल GNU / Linux के प्रोग्राम को चलाने में सक्षम है, लगता है कि मैं एक करीब से देखूंगा।
स्टीफन विंकलर

5

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

dnf downgrade <packages>

आपको संकुल का अगला-से-अंतिम संस्करण प्राप्त होता है, और आप इसके लिए एक विशिष्ट मांग कर सकते हैं:

dnf downgrade <package>.<version>

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


तुम भी #thing पूर्ववत DNF इतिहास इस्तेमाल कर सकते हैं पूर्ववत करने के लिए
स्पष्ट

This only works if the package(s) are still available in the repositories. हाँ, यह वास्तव में समस्या है। मुझे आश्चर्य है कि इसके लिए एक 'व्यापक' समाधान प्रतीत नहीं होता है, विशेष रूप से रोलिंग-रिलीज वितरण की मात्रा के साथ। अब तक ऐसा लगता है कि NixOS मेरा सबसे अच्छा विकल्प है, या मुझे किसी प्रकार के सिस्टम इमेजिंग टूल की आवश्यकता होगी जो केवल अंतर पर काम करता है और पिछले 20 (?) अपडेट के समय सिस्टम को एक विशिष्ट बिंदु पर पुनर्स्थापित कर सकता है।
स्टीफन विंकलर

@SteffenWinkler, यदि पुराना पैकेज अब उपलब्ध नहीं है, तो आप टोस्ट हैं। जाहिर है। जब तक आपके पास किसी प्रकार का स्थानीय बैकअप न हो।
वॉनब्रांड

2
@ बंद, क्योंकि यह पहले से ही बहुत पुराना है? रिपॉजिटरी में सभी संस्करण समय से पहले नहीं होते हैं।
वॉनब्रांड

1
Dnf.conf में (yum.conf के समान) में Keepcache = true पुराने पैकेज उपलब्ध हैं, क्योंकि लोन कैश को मैन्युअल रूप से साफ़ नहीं किया जाता है। लेकिन यह "ब्लोट" पैकेज कैश में चला गया।
एमएमवी-आरयू

2

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

मैं अपना सिस्टम कैसे रोलबैक करूं:

sudo -i
mount /dev/sda3 /mnt/hd #mount the top btrfs subvolume
ls #find the version you want
mv @ @-old #move the '/' subvolume (I named mine '@')
btrfs sub snap @-<date> @ #replace @ with the backup from <date>
sync
reboot #the changes will take effect once the system restarts

Btrfs का एक लाभ यह है कि आप सबवोल्यूम और डायनेमिक "विभाजन" का उपयोग कर सकते हैं। उदाहरण के लिए, मेरे पास / (@ @ कहा जाता है), / tmp (@tmp), और / home (@home) के लिए एक सबवोल्यूम है। फिर इनमें से किसी का भी बैकअप लेना और रोल करना आसान है। मेरे पास एक अलग सबवोल्यूम में / tmp है क्योंकि इसे बाकी सिस्टम के साथ बैकअप देना व्यर्थ लगता है, क्योंकि यह लगभग हर रिबूट पर मिटा दिया जाता है।


मैंने विकी में एक लिंक का अनुसरण किया और यहां पहुंच गया । यह बहुत अच्छा लग रहा है और रिपॉजिटरी की जाँच करने से, 2013 तक वापस जाने वाली फाइलें हैं! जब यह मौजूद है तो btrfs तरीके का उपयोग क्यों करें? फ़ाइलों के कारण जो 'उन्नत' हैं? या कोई और कारण है?
स्टीफन विंकलर

मैंने अब निक्स को एक छोटी यात्रा का भुगतान करने के बाद स्थायी रूप से आर्क लिनक्स पर स्विच कर दिया। यह (आर्क लिनक्स) लगभग अस्थिर नहीं है क्योंकि मैंने हमेशा सोचा था कि यह एक स्वस्थ समुदाय होगा।
स्टीफन विंकलर

@SteffenWinkler यह सही है। इसके अलावा, आर्क डाउनग्रेड विकल्प गैर "आधिकारिक रूप से" समर्थित हैं और डाउनग्रेडिंग शायद निर्भरता को अनदेखा करेंगे (जो कुछ गलत होने पर काफी गड़बड़ हो सकता है)।
कालेब रीस्टर

2

मैं आर्क लिनक्स का उपयोग करता हूं और यह सभी डाउनलोड किए गए पैकेजों को संग्रहीत करता है /var/cache/pacman/pkg/ताकि आप किसी भी पैकेज को कभी भी डाउनग्रेड कर सकें (आप बूट करने में असमर्थ हैं, एक लाइव usb का उपयोग करें)। से आर्क विकी :

pacman -U <file_name_of_the_package>

पैकेज को अपग्रेड होने से रोकने के लिए, पैकेज का नाम इसमें शामिल करें /etc/pacman.conf, जैसे:

IgnorePkg=linux

स्थान बचाने के लिए आप कैशे फ़ोल्डर को साफ़ कर सकते हैं:

pacman -Sc

जो सभी पुराने पैकेजों को हटा देगा और नए को रखेगा, या -Sccसभी को हटाने के लिए उपयोग करेगा।


ध्यान दें कि यह (पैकेजों की अनदेखी) एक आंशिक अपग्रेड के लिए राशि, जो असमर्थित है ...
jasonwryan

मैंने विकी में एक लिंक का अनुसरण किया और यहां पहुंच गया । यह बहुत अच्छा लग रहा है और रिपॉजिटरी की जाँच करने से, 2013 तक वापस जाने वाली फाइलें हैं! जब यह मौजूद है तो btrfs तरीके का उपयोग क्यों करें? फ़ाइलों के कारण जो 'उन्नत' हैं? या कोई और कारण है?
स्टीफन विंकलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.