यूनिक्स - गलती से सब कुछ जड़ / पुराने - सोलारिस 10 के तहत चला गया


13

जैसा कि शीर्षक कहता है कि रूट (/) के तहत रूट के रूप में महत्वपूर्ण सब कुछ या लगभग सब कुछ सोलारिस 10 मशीन पर / पुराना हो गया था। तो अब सामान्य गलती जब रनिंग कमांड्स होती हैं Cannot find /usr/lib/ld.so.1(बदली जाती हैं $PATHऔर बदलने की कोशिश भी की जाती है $LD_LIBRARY_PATH, $LD_LIBRARY_PATH_64और $LD_RUN_PATHउन्हें एक्सपोर्ट किया जाता है, लेकिन वास्तविक लाइब्रेरी पथ को बदलने के लिए कुछ भी नहीं लगता है)। बहुत कल की कोशिश की कि कुछ ऐसा मिल जाए जो मदद कर सकता है लेकिन ऐसा कुछ नहीं मिला जो वास्तव में शायद सोलारिस के लिए लाइब्रेरी के रास्ते को 10 के अलावा और बदले, crleलेकिन तब से नहीं चला सकता Cannot find /usr/lib/ld.so.1

लिनक्स के लिए बहुत सारे रूट या / usr / बिन वसूली युक्तियां और इतने पर मिला लेकिन सोलारिस 10 / यूनिक्स के बारे में उस जानकारी के बारे में जानकारी नहीं है।

नहीं चला सकता cp, ln, mkdirया mvके बाद से Cannot find /usr/lib/ld.so.1। मशीन में अन्य सत्रों के साथ न तो लॉग इन कर सकते हैं। हालांकि एक सत्र अभी भी जारी है जिसका उपयोग किया जा सकता है और उस खिड़की का काम ठप है while true; do date; echo hej 1234567; done। हमने सोलारिस बूट सीडी का उपयोग करने के लिए समाधान पर चर्चा की है और यूएसबी ड्राइव पर लिनक्स डिस्टर्ब भी। हमने हार्ड ड्राइव डिस्क को किसी अन्य रैक पर स्विच करने के समाधान पर चर्चा की है।

/.../static/.../mvसमाधान परीक्षण किया गया है, लेकिन यह काम नहीं किया।

आदेशों कि अभी भी किया जा सकता है (वहाँ अधिक आदेशों इस्तेमाल किया जा सकता हो सकता है): echo, <, >, >>, |, pwd, cd

क्या बिना निर्देशिका या फ़ोल्डर बनाने का कोई तरीका है mkdir? वहाँ किसी भी तरह से उपयोग करने के लिए है echoऔर >या echoऔर >>बहाल करने के लिए /usr/lib/ld.so.1? मुझे पता है कि /usr/lib/ld.so.1आदेशों के काम करने के लिए शायद इससे अधिक की आवश्यकता होगी।

पढ़ने के लिए बहुत बहुत धन्यवाद और आपका दिन शुभ रहे =)


2
/ पुराने के तहत सामान को स्थानांतरित करने के लिए किस कमांड का उपयोग किया गया था?
स्काइबा

सोलारिस मानक mv। या अधिक सटीक shopt -s extglob; mv !(old) /old:।
प्रचार 29

1
फिलहाल कौन सा शेल चल रहा है? कुछ गोले में कमांड का
इनबिल्टेशन होता है

आप इसे ठीक कर सकते हैं ln, अगर यह काम कर रहा है।
डेविड श्वार्ट्ज

2
"/.../Static/.../v समाधान का परीक्षण किया गया है, लेकिन यह काम नहीं किया।" क्या हुआ? क्या इसने लोडर त्रुटि दी? क्या वास्तव में "काम नहीं किया"? staticयदि आप अस्थायी मीडिया को बूट नहीं करना चाहते हैं, तो बायनेरी बिल्कुल इस श्रेणी की समस्याओं के लिए हैं।
Ti Strga

जवाबों:


19

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

यदि आप अभी भी कमांड को रूट के रूप में चला सकते हैं, तो सब कुछ कापसिटिक। LD_LIBRARY_PATHबेसिक सिस्टम टूल्स द्वारा उपयोग की जाने वाली लाइब्रेरियों को इंगित करने के लिए पर्यावरण चर सेट करें । कम से कम /usr/lib32-बिट सोलारिस /usr/lib/64पर , 64-बिट सोलारिस पर, संभवतः अन्य निर्देशिकाओं पर (मेरे पास अब जाँच करने के लिए सोलारिस 10 तक पहुंच नहीं है)। एक निष्पादन योग्य चलाने के लिए, इसे रनटाइम लिंकर के साथ उपसर्ग करें : /usr/lib/ld.so.1(एक 32-बिट निष्पादन योग्य के लिए) या /usr/lib/64/ld.so.1(64-बिट निष्पादन योग्य के लिए) - अब चले गए /old। इस प्रकार आप कुछ के साथ ठीक करने में सक्षम होना चाहिए:

LD_LIBRARY_PATH=/old/usr/lib
export LD_LIBRARY_PATH
/old/usr/lib/ld.so.1 /old/usr/bin/mv /old/* /

लोडर का स्मार्ट उपयोग। यदि पूरे पदानुक्रम को स्थानांतरित नहीं किया गया था /old, तो मेरी टिप्पणी पेस्चके की अपनी टिप्पणी यहां भी मान्य है। mvउपयोग नहीं किया जाना चाहिए, लेकिन एक कमांड जो मौजूदा पदानुक्रम की तरह pax, tarऔर पसंद को संरक्षित करता है।
ज्वलिरे

1
आपके धैर्य और इसे लिखने के लिए समय निकालने के लिए बहुत-बहुत धन्यवाद। अब ऐसा लगता है कि आदेशों चल रहा काम करता है /old/usr/lib/ld.so.1 /old/usr/bin/mvऔर /old/usr/lib/ld.so.1 /old/usr/bin/cpऔर इतने पर। मैं देखूंगा कि मैं क्या कर सकता हूं, अब समस्या यह है कि मैं अंतरिक्ष से बाहर हूं लेकिन मैं इसे ठीक करने में सक्षम हो सकता हूं।
प्रचार

@propatience बहुत बुरा लगा आप और गाइल्स ने मेरी टिप्पणियों पर विचार नहीं किया ...
jlliagre

1
हाँ भगवान! मैं पहली बार के साथ वापस सब कुछ ले जाने में कामयाब रहे /old/usr/lib/ld.so.1 /old/usr/bin/mvऔर /old/usr/lib/ld.so.1 /old/usr/bin/cpलेकिन कोई जगह नहीं तो उपयोग नहीं कर सका /old/usr/lib/ld.so.1 /old/usr/bin/cp। और फिर परिवर्तित के साथ $PATHफ़ोल्डर का उपयोग करके संपादन और फिर फ़ोल्डर । अब यह सब वापस चला गया है इसलिए मैं फिर से लॉग इन कर सकता हूं और df -h और सब कुछ टाइप कर सकता हूं। आप सभी को बहुत ज्यादा धन्यवाद। वास्तव में, आप के लिए महान @ धन्यवाद! धन्यवाद StackExchange! mv$PATH
प्रचार

1
LD_LIBRARY_PATHयदि आप को इसे सेट करने की आवश्यकता है, तो सोलारिस की सेटिंग में कुछ संकट हैं, इसलिए आप 32- और 64-बिट निष्पादन दोनों को चला सकते हैं। यह 32- और 64-बिट विशिष्ट संस्करणों का उपयोग करना बेहतर LD_LIBRARY_PATHहोगा जो सोलारिस में उपलब्ध हैं। इस मामले में: LD_LIBRARY_PATH_32=/old/usr/libऔर LD_LIBRARY_PATH_64=/old/usr/lib/64मैन पेज देखेंld.so.1 : "प्रत्येक पर्यावरण चर को _32 या _64 प्रत्यय के साथ निर्दिष्ट किया जा सकता है। यह पर्यावरण चर को क्रमशः 32-बिट या 64-बिट प्रक्रियाओं के लिए विशिष्ट बनाता है।"
एंड्रयू हेनले

16

केवल शेल बिलिन कमांड के साथ एक निर्देशिका बनाने या बाइनरी फ़ाइलों को कॉपी करने का कोई तरीका नहीं है (हालांकि गिल्स ने अपने उत्तर में एक स्मार्ट संभावित वर्कअराउंड का वर्णन किया है )।

आपके पास सबसे अच्छा विकल्प एक बाहरी मीडिया (डीवीडी, यूएसबी स्टिक) पर सोलारिस को बूट करना है, फ़ाइल सिस्टम (माउंट) को माउंट या आयात करना है, और गड़बड़ को ठीक करना है जैसे:

  • सोलारिस इंस्टॉलेशन डिस्क को बूट करें और शेल चलाने के लिए चुनें।

  • पुरानी निर्देशिका (और यदि कोई है तो सभी फ़ाइल सिस्टम) को किसी निर्देशिका के अंतर्गत /mntया जैसे माउंट करें /a। Solaris बूट डिस्क आपको ऐसा करने में मदद कर सकता है जब यह मौजूदा फ़ाइल सिस्टम का पता लगाता है।

  • इस आदेश के साथ फ़ाइलों को उनके मूल स्थान पर वापस लाएं (यह मानते हुए कि सभी के तहत मुहिम शुरू की गई है /mnt):

    cd /mnt/old
    find . -depth | cpio -pdlmPV@ /mnt
    
  • अपने सिस्टम को रिबूट करें

    init 6
    

यदि आप ZFS का उपयोग कर रहे हैं और एक हाल ही में स्नैपशॉट मौजूद है, /oldतो निर्देशिका को कहीं और बैकअप करना और फिर अंतिम स्नैपशॉट पर वापस लौटना भी एक विकल्प हो सकता है।


बहुत बढ़िया जवाब। बचाव USB में बूट करें, फाइलसिस्टम को माउंट करें, और फिर कुछ ऐसा करेंmv /mountpoint/old/* /mountpoint
Peschke

1
@Peschke धन्यवाद, हालाँकि आपकी सुझाई गई mvकमांड को आँख बंद करके चलाना मेरी सलाह नहीं होगी। ओपी ने लिखा "सब कुछ या लगभग सब कुछ "। दूसरे मामले में, चलती अभी भी मौजूदा निर्देशिकाओं को तोड़ देगी। मैं होने की संभावना की तरह एक उपयोगिता का उपयोग tar, paxया cpioगंतव्य निर्देशिका पदानुक्रम को बचाने के लिये।
14

तेजी से प्रतिक्रिया देने के लिए आपका बहुत-बहुत धन्यवाद और आपकी प्रतिक्रियाओं के लिए बहुत-बहुत धन्यवाद। मैं कल यह कोशिश कर सकता हूं।
प्रचार 28

संभव स्नैपशॉट (ZFS या UFS) से बंधे, यदि आप लाइव अपग्रेड का उपयोग कर रहे हैं तो आप एक वैकल्पिक BE को बूट कर सकते हैं। lustatus और अभी तक घबराओ मत। सभी डेटा अभी भी डिस्क पर मौजूद हैं।
नींद की गोली

0

सोलारिस स्थिर बुनियादी सुविधाएं (के बनाता है शामिल हैं cp, ln, mv, rcp, और tarमें) /usr/sbin/staticआप की उपलब्धता के साथ किसी भी समस्या को सुधारने के लिए उपयोग कर सकते हैं कि /usr/lib/ld.so.1कि रोकता नियमित गतिशील रूप से जुड़े के उपयोग के /usr/binसंस्करणों।

कोई स्थिर है mkdirप्रदान की है, लेकिन आप स्थिर उपयोग कर सकते हैं lnसिमलिंक जो कुछ निर्देशिका में शामिल करने के लिए lib/ld.so.1के रूप में जगह में /usrअस्थायी रूप से, और उसके बाद मानक का उपयोग mkdirबनाने के लिए जो कुछ भी निर्देशिकाओं आप की जरूरत है। आप निर्देशिकाओं का नाम बदल सकते हैं जो पहले से ही स्थैतिक का उपयोग करके मौजूद हैं mv


यह कम से कम सोलारिस 2.5.1 के रूप में वापस चला जाता है, जहां मैंने पाया कि स्टॉक ld.so.1सेगफॉल्ट यदि आप इसे मैन्युअल रूप से चलाने की कोशिश करते हैं जैसा कि गाइल्स के उदाहरण में दिखाया गया है
rakslice
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.