सर्वर "यम हटा अजगर" के बाद मिटा दिया [बंद]


65

मेरे द्वारा कमांड चलाने के बाद बस एक आपदा आई yum remove pythonऔर अब मैं सर्वर को बूट नहीं कर सकता।

यह कैसे हुआ: मैंने अपने CentOS 5 VPS पर yum के माध्यम से कुछ ऐप्स को अपडेट करने का प्रयास किया और कुछ अजीब अजगर 2.4 त्रुटि के कारण कमांड विफल रही। मैंने देखा कि अजगर का मेरा संस्करण पुराना था और मैंने पहले इसे हटाकर इसे फिर से स्थापित करने की कोशिश की, और इसलिए मैंने ऐसा किया yum remove python

इसके बाद इसने मुझसे निर्भरताएं दूर करने के बारे में कुछ पूछा और ऐसा लग रहा था कि कुछ भी नहीं छूट सकता है इसलिए मैंने क्लिक किया Y

तो उसके बाद यह था कि मैं किसी भी आदेश को चलाने में असमर्थ था, तो क्या हुआ। मैंने भी कोशिश की cd /var/wwwलेकिन इसने " command does not exist in /usr/bin" जैसा कुछ कहा । जब मैं tabफ़ोल्डर नेविगेशन सुझावों को देखता था, तो फ़ाइल संरचना अभी भी लगती थी (कम से कम /var/wwwबिट जो वास्तव में मेरे लिए महत्वपूर्ण है)। उसके बाद मैंने vps को पुनरारंभ करने का प्रयास किया ( rebootकमांड पैनल से क्योंकि कमांड काम नहीं करता था) और अब यह बूट नहीं करता है।

अब मेरा सवाल यह है कि इस तरह से एक कमांड मेरे सर्वर को कैसे नष्ट कर सकता है?


33
संयोग से, उपयुक्त काम को हटा दें। मैंने अभी तक dpkg --remove dpkg की कोशिश नहीं की है। मुझे यकीन है कि यह वास्तव में बुरा है।
3

19
आपके पास एक बैकअप है, है ना?
vasin1987

21
@ जोशडसन मैं एक डेमियन 8.4 लाइव सीडी को एक वीएम में रखता है और इसे आजमाता हूं। परिणाम: # dpkg --remove dpkgबाहर थूकना dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed। अगर मैं --force-alldpkg की कमांड लाइन में जोड़ता हूं , तो dpkgचेतावनी के एक पूरे बंडल को बाहर निकालता है और अपने आप को हटाने के लिए आगे बढ़ता है, साथ ही लगभग दो दर्जन अन्य पैकेजों को तोड़ने पर निर्भर करता है dpkg। एक असली सिस्टम पर, मैं यकीन है कि आप कुछ दिक्कत यह है कि से ठीक होगा हूँ, लेकिन आप शायद कर सकता है (वहाँ के लिए थोड़ा जादू है .debरों); इस संबंध में CentOS समान हो भी सकता है और नहीं भी।
एक CVn

6
@joshudson यह काम करता है क्योंकि जब आप आदेश जारी करते हैं तो मेमोरी में चल रहे apt की एक प्रति होती है ... जैसे ही यह समाप्त हो जाती है (और कार्यक्रम समाप्त हो जाता है), आप apt का उपयोग किसी भी तरह से नहीं कर पाएंगे।
स्नेकडोक

2
यम खुद पायथन में लागू होता है, मेरा मानना ​​है ... तो पायथन को हटाने से आपके खुद के पैर अच्छी तरह से शूट होते हैं!
पेउफ़ेउ

जवाबों:


67

मुझे पूरी तरह से खेद है: मैं सर्वर को असहनीय / अप्राप्य होने के लिए दर्द महसूस कर सकता हूं।

हालाँकि, जब मैं पढ़ रहा हूँ तो मैं हार गया:

इसके बाद इसने मुझसे निर्भरताएं दूर करने के बारे में कुछ पूछा और ऐसा लग रहा था कि मुझे कुछ भी याद नहीं है इसलिए मैंने क्लिक किया [Y]

आरएचईएल / सेंटो का एक अनिवार्य हिस्सा होने के नाते निश्चित रूप से हटाए जाने वाले पैकेजों की सूची वास्तव में बहुत बड़ी थी python। आपको कभी भी कुछ चेतावनी संदेश की पुष्टि नहीं करनी चाहिए जिसे आप वास्तव में नहीं समझते हैं।

सबसे अच्छी बात जो आप कर सकते हैं, जैसा कि पहले ही सुझाव दिया गया है, एक रिकवरी मीडिया (यानी: livecd) के माध्यम से बूट करना है, आवश्यक डेटा फ़ाइलों को निकालना है, और एक नए CentOS रिलीज़ के साथ अपनी मशीन को फिर से स्थापित करना (और जैसा कि CentOS 6 काफी पुराना है, मैं दृढ़ता से कहता हूं सुझाव है कि आप CentOS 7 पर छूट दें)।


2
भविष्य के लिए: LVM LVs पर OS के साथ सर्वर का निर्माण करें (जो ISTR RHEL डिफ़ॉल्ट है)। इससे पहले कि सिस्टम को तोड़ने की थोड़ी सी भी संभावना है, स्नैपशॉट बनाएं। यदि यह वास्तव में सिस्टम को तोड़ता है, तो आप मिनटों में स्नैपशॉट पर वापस लौट सकते हैं। अन्यथा जब सब ठीक हो जाता है तो आप स्नैपशॉट हटा सकते हैं। unix.stackexchange.com/questions/18913 । एनबी स्नैपशॉट बैकअप नहीं हैं। आपको अभी भी उन स्थितियों के लिए बैकअप की आवश्यकता है जहां स्नैपशॉट आपको बचा नहीं सकता है।
nigel222

डेबियन / उबंटू पर, वह रिकवरी इमेज (उदाहरण के लिए फिनीक्स) को बूट कर सकता है, डिबूटस्ट्रैप, चेरोट और एप्ट-बेस इंस्टाल के साथ अनपैक बेस सिस्टम को बूट कर सकता है। यह पता नहीं है कि सेंटोस / आरएचएल में डेबूटस्ट्रैप समकक्ष है या नहीं।
एडहेलिल

1
नवंबर 2020 तक CentOS 6 को सपोर्ट किया गया है । अपग्रेड करने के लिए कोई जल्दी नहीं है (हालांकि 7 पर जाने के बहुत फायदे हैं)।
Psmears

106

सच कहूं, क्योंकि आपने कुछ ऐसा किया है जिसे आप पूरी तरह से नहीं समझ पाए हैं। अजगर ओएस का एक अनिवार्य हिस्सा है और जिन चीजों को आप महत्वहीन मानते हैं, वे बहुत महत्वपूर्ण हैं। बैकअप से बहाल करना।


जब आप पायथन को हटाते हैं, yumतो आपको उन पैकेजों की एक लंबी सूची दिखाई देती है जिन्हें भी हटा दिया जाएगा। इस सूची के रूप में ऐसी अनिवार्य होता है yumही है, coreutils, net-toolsऔर अन्य। आपने yum से पुष्टि की कि आप जानते हैं कि आप क्या कर रहे हैं और वैसे भी आगे बढ़ना चाहते हैं। इसका परिणाम एक गैर-कार्य प्रणाली है। यह आश्चर्य नहीं होना चाहिए।

नए CentOS संस्करण पर रिकॉर्ड के लिए, यह अब संभव नहीं है, क्योंकि कुछ संकुल को अब संरक्षित के रूप में चिह्नित किया गया है और हटाया नहीं जा सकता है, केवल पुनः इंस्टॉल या अपग्रेड किया जा सकता है। और चूंकि CentOS 5 अब EOL है, इसलिए नए संस्करण में अपग्रेड करने के लिए यह एक अच्छा समय है।


3
Haha अच्छी तरह से कि जल्दी से बढ़ा (yum remove python == सिर्फ पूरी मशीन पोंछे: D)। क्या आपको लगता है कि क्या ऐसा कोई तरीका है जिससे मैं कम से कम उन फ़ाइलों को पुनर्स्थापित कर सकूं जो / var / www में थीं या यह पूरी तरह से फ़ॉबर्ड के रूप में अच्छी तरह से है?
तदोमन

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

6
@RussellBorogove: मैं यह भी नहीं कहता। yumनिर्भरता ग्राफ नीचे चलने से काम करता है और यह संकुल को हटा देता है जब तक कि सभी निर्भरताएँ संतुष्ट न हों। यदि पैकेज ए पैकेज बी पर निर्भर करता है और पैकेज बी पैकेज सी पर निर्भर करता है, yumतो पैकेज बी को भी हटा देगा और बदले में, पैकेज ए को केंद्रीय पैकेज (जैसे python) के लिए पैकेज सी को हटाने की कोशिश करने पर सभी निर्भरता को पूरा करने के लिए , यह परिणाम हो सकता है बड़ी संख्या में निकाले गए पैकेज जो असंबद्ध हैं।
स्वेन

4
@RussellBorogove: हाँ, ठीक है, हालांकि सीधे CentOS 5 coreutilsपर निर्भर नहीं करता है python, लेकिन एक या एक से अधिक मध्यवर्ती पैकेज के माध्यम से - परिणाम समान है: हटाना।
स्वेन

4
कोर्यूटिल्स के मध्यवर्ती पैकेजों की संख्या दो प्रतीत होती है। python -> cracklib -> pam -> coreutils निर्भरता मौजूद है क्योंकि क्रैकलिब के लिए अजगर बाइंडिंग हैं, पैम को क्रैकलिब के साथ बनाया गया था, और यह सु पैम के साथ एकीकृत है। बेशक यह बहुत सारी महत्वपूर्ण चीजें भी निकाल लेता है, जैसे कि यम किसी भी अधिक पैकेज को स्थापित करने के लिए ...
जॉन महोवाल्ड

15

आपने परिणामों को पूरी तरह से समझने के बिना कुछ किया

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

  1. CentOS 5 लाइफ का एंड है, और इसलिए इसका कोई अपडेट नहीं है। यह अतिरिक्त गंभीर है क्योंकि यह एक वेबसर्वर की तरह लगता है जो सार्वजनिक इंटरनेट पर सामग्री प्रदान करता है और इसे नियंत्रित करने के लिए आप पैनल ऐप्स का उपयोग करते हैं।
  2. CentOS> 5 ने आपको यह अपडेट करने और बॉक्स को मारने से रोका होगा। यह एक अच्छा एयरबैग है।
  3. CentOS 7 जगह में प्रमुख संस्करण उन्नयन का समर्थन करने का दावा करता है। मैंने इसका उपयोग कभी नहीं किया है, लेकिन जब यह रिलीज होगी तो 7 से 8 तक कूदने में सक्षम होगी। डेबियन का यह हमेशा के लिए था, लेकिन रेडहैट को हमेशा प्रमुख संस्करण की छलांग के लिए एक पुनर्स्थापना की आवश्यकता थी।

उपाय

आपका सबसे अच्छा शर्त एक नया VPS बनाना है, नए सिरे से CentOS7 स्थापित करना है, और फिर पुराने सेंटोस 5 डिस्क वॉल्यूम को रीटेट करना और इसे केवल पढ़ने के लिए माउंट करना है। फिर पुराने ड्राइव से नए पर अपने डेटा को कॉपी (स्थानांतरित नहीं) करने के लिए काम करें।

ध्यान दें कि यह AWS का उपयोग करने का मेरा तरीका होगा। यदि आपका VPS प्रदाता डिस्क को विभिन्न VM में संलग्न नहीं कर सकता है, तो आपको योजना को मोड़ना होगा।

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


9

यह कैसे हो सकता है? ठीक है, काफी सरल: उन हिस्सों को हटाकर जो आपके सर्वर के लिए महत्वपूर्ण थे।

आपके लिए अगले चरण: एक ताजा ओएस को फिर से तैनात करें और बैकअप से अपने डेटा को पुनर्स्थापित करें।


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

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

@ JörgWMittag मुझे लगता है कि आपको "पुनर्स्थापना" शब्द के उपयोग की गलतफहमी हो सकती है। ईईएए का अर्थ है कि सिस्टम को फिर से संगठित करना होगा और नई मशीन पर मौजूदा डेटा को कहीं रखा जाना चाहिए। "पुनर्स्थापना" उस के लिए सबसे अच्छा शब्द नहीं हो सकता है, हालांकि मैं उस टुकड़े के लिए डेटाबेस पुनर्स्थापना कार्यक्षमता का उपयोग कर किसी को देख सकता था।
jpmc26

@ JörgWMittag ओह, उसका डेटा अभी भी है, सबसे अधिक संभावना है। यह सिर्फ इतना है कि अपने सिस्टम के साथ गैर-संवैधानिक है, उसके पास इसे एक्सेस करने का कोई तरीका नहीं है।
शादुर

4

जैसा कि Gentoo में ड्रैगन 788 और टिप्पणियों में अन्य लोगों द्वारा बताया गया है, डेवलपर्स भी टिंडरबॉक्स पैकेज का एक सेट बनाए रखते हैं जो सिर्फ पूर्व-निर्मित होते हैं, ऐसी स्थितियों के लिए ओएस के मुख्य पैकेज के सेट के बाइनरी संस्करण। यदि आप एक कोर पैकेज खो देते हैं, तो आपको बस LiveCD / DVD में बूट किया गया सिस्टम मिलता है, टूटे सर्वर की OS ड्राइव को माउंट करें और फाइल सिस्टम के लिए tinderbox पैकेज (ओं) को अनपाउंट, रिबूट और रिबूट करें, अगर यह सही ढंग से बूट होता है। संकुल को अपने सर्वर के स्पेक्स और कॉन्फिग्स पर फिर से बनाएँ।

तो, CentOS में कुछ इसी तरह का प्रदर्शन करने के लिए, मुझे लगता है कि आपको RPM के सही संस्करणों को खोजने की आवश्यकता होगी जो कि अनइंस्टॉल किए गए थे, फिर एक LiveCD / DVD को बूट करें, OS ड्राइव को माउंट करें और (शायद ... यदि आप परिचित हैं तो chroot करें rpm के लिए " --relocate " ध्वज का उपयोग करने के तरीके के साथ , आपको थिरकने की आवश्यकता नहीं हो सकती है), फिर उन पैकेजों को फिर से स्थापित करें, उन्मुक्त और रिबूट करें।

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

HTH।


0

आप आम तौर पर स्थापित मीडिया से बूट कर सकते हैं और फिर chrootकमांड चलाने के लिए या वर्तमान इंस्टॉल में प्रवेश कर सकते हैं और फ़ाइलों को पुनर्प्राप्त कर सकते हैं या संकुल का पुनर्स्थापना कर सकते हैं।


4
आप रूट निर्देशिका में कोई उपयोगी बायनेरिज़ / usr / bin इत्यादि के साथ नहीं कर पाएंगे, यह मृत सिस्टम में बूटिंग के समान परिणाम देगा। चेरोट भी आवश्यक नहीं है क्योंकि एक बार जब आपके पास फाइलसिस्टम माउंट हो जाता है, तो आप उन फ़ाइलों को कॉपी कर सकते हैं जिन्हें आप / var / www से बचाव करना चाहते हैं।
क्रिस

निश्चित रूप से सच है, मैं जेंटू / आर्क स्थापित करना याद कर रहा हूं जहां आमतौर पर कुछ उपयोगी बायनेरिज़ उपलब्ध हैं। मैंने पहले सब कुछ अनइंस्टॉल नहीं किया है। ;)
ड्रैगन 788
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.