मैं लिनक्स के लिए "Git" जैसी अपडेट प्रबंधन कैसे प्राप्त कर सकता हूं?


14

मैं अपने लिनक्स सिस्टम के अपडेट को उसी तरह से प्रबंधित करना चाहता हूं जैसे Git करता है, "रिवाइंड" के भीतर आगे और पीछे जाने में सक्षम होने से। ऐसा कैसे किया जा सकता था?


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

जवाबों:


12

आप शायद पर गौर करना चाहिए NixOS है, जो का उपयोग करता है निक्स पैकेज प्रबंधक

NixOS एक GNU / Linux वितरण है जिसका उद्देश्य सिस्टम कॉन्फ़िगरेशन प्रबंधन में कला की स्थिति में सुधार करना है। मौजूदा वितरण में, अपग्रेड जैसे कार्य खतरनाक होते हैं: एक पैकेज को अपग्रेड करने से अन्य पैकेज टूट सकते हैं, एक पूरे सिस्टम को अपग्रेड करना खरोंच से पुन: स्थापित करने की तुलना में बहुत कम विश्वसनीय है, आप सुरक्षित रूप से परीक्षण नहीं कर सकते कि कॉन्फ़िगरेशन परिवर्तन के परिणाम क्या होंगे, आप आसानी से सिस्टम में परिवर्तन को पूर्ववत नहीं कर सकते, और इसी तरह।


12

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

मैंने व्यक्तिगत रूप से कठपुतली को शुरू करने के लिए काफी आसान पाया , लेकिन अन्य लोकप्रिय विकल्प हैं साल्ट और अन्सिबल


मैंने पहले से ही योनि में कठपुतली का उपयोग किया था, लेकिन मुझे याद नहीं है कि मैं अपने ओएस में किए गए कुछ
गन्दे कामों

4
कॉन्फ़िगरेशन प्रबंधन उपकरण आमतौर पर "रोलबैक" कार्यक्षमता प्रदान नहीं करते हैं। "रोलबैक" सिस्टम को दूर कर रहा है और सिस्टम को फिर से कॉन्फ़िगर करने के लिए कॉन्फ़िगरेशन प्रबंधन टूल का उपयोग कर रहा है। उदाहरण के लिए, आप ओएस को पुन: स्वरूपित करने और पुन: स्थापित करने के लिए रेजर जैसे नंगे धातु प्रावधान उपकरण का उपयोग कर सकते हैं। फिर, यह कॉन्फ़िगरेशन लागू करने के लिए शेफ जैसे उपकरण को बंद कर देता है।
ccc

2
क्या डायन का इरादा है? :)
रुस्लान

क्या मुर्दाघर है? मुझे याद है कि मैं कुछ पाने की कोशिश कर रहा था जब मैं अपने छोटे क्लस्टर पर उपयोग करने के लिए खुश था जब मैं सिसडमिन था। लेकिन मैंने कभी भी इसे खत्म नहीं किया।
पीटर कॉर्डेस

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

10

यह आपके प्रश्न के लिए अधिक संभावना है, लेकिन सिस्टम-स्तर / बड़े पैमाने पर परिवर्तनों को वापस लाने में सक्षम होने का सबसे आसान तरीका स्नैपशॉट है:

https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29

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

http://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/


2
एक अन्य विकल्प btrfs है, जिसे BTW में उबंटू, SUSE> = 11, ओरेकल से आधिकारिक उद्यम समर्थन प्राप्त है। हालांकि यह अभी भी विकसित किया जा रहा है और blahblahblah, यह है अच्छी तरह से हर रोज डेस्कटॉप के उपयोग और प्रदर्शन के लिए विश्वसनीय।
इग्निस

1
@ignis: मैंने हाल ही में एक RAID 5 के बावजूद एक असंगत और गैर-वसूली योग्य Btrfs का सामना किया है, और काम पर दो और उदाहरणों के बारे में सुना है। इसलिए मैं हल्के ढंग से उन चेतावनियों की अवहेलना नहीं करूंगा, जो उत्पादन उपयोग के लिए तैयार नहीं हैं। इससे पहले कि मैं इसका सामना करूँ मैं खुद इसे निहारना नहीं चाहता था। खराब रैम के कारण हो सकता है, शायद, यही एक कारण है कि जेडएफएस लोग ईसीसी मेमोरी के उपयोग की दृढ़ता से सलाह देते हैं । मुझे लगता है कि वही Btrfs पर लागू हो सकता है।
MvG

6

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

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

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


2

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

अगर कठपुतली जैसे उपकरण बहुत दूर नहीं जाते हैं तो शायद एक वर्जनिंग फाइल सिस्टम है जिसे आप ढूंढ रहे हैं।


1

यदि आप वास्तव में अपने पूरे सिस्टम (कर्नेल संस्करण सहित) को git की तरह प्रबंधित करना चाहते हैं, तो आप NixOS की तलाश कर रहे हैं ।

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

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

जब निक्स एक पैकेज को अपग्रेड करता है, तो यह एक नया वातावरण बनाता है, जो पॉइंटर्स के एक नए सेट को पैकेज के लिए इंगित करता है (ज्यादातर मौजूदा वाले, पैकेज के लिए जिन्हें अपडेट नहीं किया गया है; फिर से, यह एक नई गिट कमिट के समान है, जो ज्यादातर पिछली अपरिवर्तित फ़ाइलों के बिंदु और संशोधित फ़ाइलों के कुछ नए संस्करण)।

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

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

मैंने उन सभी को पढ़ना नहीं छोड़ा है , लेकिन मैं निक्स को एक परिचय के रूप में घातक निक्स की गोलियों की सलाह देता हूं


0

यदि आप प्रायोगिक प्रकार के हैं, तो आप अपने संपूर्ण फ़ाइल सिस्टम में एक स्थानीय गिट रिपॉजिटरी में जाँच कर सकते हैं। यह होगा ... दिलचस्प, मुझे लगता है।

  1. git init रूट डायरेक्टरी में /
  2. उस रूट के लिए .gitignore का निर्माण करें जो उन निर्देशिकाओं को अनदेखा करता है जिनकी सामग्री अक्सर बदलती रहती है या जिनकी जाँच नहीं होनी चाहिए:
    • / dev
    • /Daud
    • / tmp
    • / proc
    • / खो + मिली
    • ...
  3. .Gitignore विशिष्ट फ़ाइल प्रकारों में जोड़ें जिन्हें आप बाहर करना चाह सकते हैं:
    • * .tmp
    • * .log
    • ...
  4. के साथ अपनी प्रारंभिक सामग्री जोड़ें git add -A .
  5. के साथ स्नैपशॉट प्रतिबद्ध करें git commit -m "Initial Snapshot"
  6. अपने कंप्यूटर का उपयोग करें
  7. समय-समय पर स्नैपशॉट git commit -Am "Snapshot X"या समान जोड़ें

कुछ लाभ होंगे:

  • संशोधन इतिहास के लिए परिचित उपकरण, जैसे gitkऔरgit diff
  • गिट के साथ कोई भी लाइव एलसीडी या अन्य ऑपरेटिंग सिस्टम आपके बैकअप को बहाल कर सकता है
  • आप अपने पूरे सिस्टम को गिटबुब तक धकेल सकते हैं और इसे अन्य मशीनों में पुनर्स्थापित कर सकते हैं या लोगों के साथ साझा कर सकते हैं ...?
  • शाखाकरण तेज और सहज होगा
  • /, आपके रूट में गिट डायरेक्टरी आपके सिस्टम को दुरुपयोग करने के लिए आत्मविश्वास को प्रेरित करेगी और स्रोत कोड के समान अधिक साहसी होगी
  • प्रत्येक बाद के स्नैपशॉट कुछ अन्य बैकअप समाधानों की तुलना में अपेक्षाकृत छोटा होगा
  • / आदि में कॉन्फ़िगरेशन परिवर्तनों की समीक्षा और ट्रैकिंग के लिए बहुत बढ़िया होगा
  • आप इसे आगे बढ़ा सकते हैं और इसे लाइनिट - लाइनक्स इन गिट कह सकते हैं।
  • बदनामी

कुछ विषमताओं में शामिल हो सकते हैं:

  • गैर-जरूरी है कि आप महत्वपूर्ण बदलावों के साथ शाखाओं / संशोधनों को पुनर्स्थापित / चेकआउट कर सकते हैं, या सिस्टम को चलाते समय उपयोग में आने वाली फाइलों में बदलाव कर सकते हैं - शायद इस उद्देश्य के लिए गिट के साथ एक न्यूनतम बूट यूएसबी हो।
  • बल्कि बड़े प्रारंभिक कमिट करता है
  • बाद की .गित निर्देशिकाओं में जाँच की गई -?
  • gitजब आप स्रोत कोड निर्देशिका में रूट gitकंटेनर में नेस्टेड हों, तो उम्मीद के मुताबिक काम करना ।
  • उपयोगकर्ताओं को बनाए रखने और उन्हें ट्रैक करने और अन्य मशीनों को पुनर्स्थापित करने के लिए / etc / passwd और / etc / छाया को शामिल करने की आवश्यकता होगी, लेकिन अब व्यू एक्सेस (शायद github पर) के साथ कोई भी व्यक्ति सामग्री, अनुमतियाँ, जैसे संवेदनशील जानकारी देख सकता है और पासवर्ड आपके उपयोगकर्ताओं के पास है।

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

निक्स पर एक नज़र डालें, जैसा कि एक अन्य उत्तर में सुझाया गया है;)
माइकल पैंकोव

जानकार अच्छा लगा! मुझे लगा कि इसने अनुमतियाँ संभाल ली हैं, कम से कम ऑक्टेट, क्योंकि मेरी स्क्रिप्ट्स x ध्वज को क्लोन पर बनाए रखती हैं, लेकिन मैंने फ़ाइल और समूह स्वामित्व के बारे में नहीं सोचा था
एह्रीक

ऐसा प्रतीत होता है कि अतिरिक्त उपकरण हैं जो पूर्ण अनुमतियों और मालिकों को बनाए रखेंगे, अगर आपको ऐसा करने की आवश्यकता थी। ऐसा ही एक उपकरण है git-cache-meta , और यहाँ एक सूची है
Ehryk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.