आपने अपना libc (सबसे बुनियादी सिस्टम लाइब्रेरी) अपग्रेड किया है और अब कोई प्रोग्राम काम नहीं करता है। सटीक होने के लिए, कोई गतिशील रूप से जुड़ा हुआ कार्यक्रम काम नहीं करता है।
आपके विशेष परिदृश्य में, रिबूटिंग को काम करना चाहिए। अब स्थापित libc में एक नए कर्नेल की आवश्यकता होती है, और यदि आप रिबूट करते हैं, तो आपको उस नए कर्नेल को प्राप्त करना चाहिए।
जब तक आपके पास अभी भी एक शेल चल रहा है, तब तक अक्सर ठीक होने का एक तरीका है, लेकिन अगर आप इसके लिए योजना नहीं बनाते हैं तो यह मुश्किल हो सकता है। यदि आपके पास शेल नहीं है तो आमतौर पर रिबूट करने के अलावा कोई उपाय नहीं है।
यहां आप रिबूट किए बिना ठीक नहीं हो सकते हैं, लेकिन आप कम से कम आसानी से पता लगा सकते हैं कि कर्नेल क्या चल रहा है। बस पढ़ने के लिए एक ऐसे तरीके का उपयोग करें जिसमें /proc/version
बाहरी कमांड की आवश्यकता न हो।
read v </proc/version; echo $v
echo $(</proc/version) # in zsh/bash/ksh
यदि आपके पास अभी भी पुराने लिबास की एक प्रति है, तो आप इसके साथ कार्यक्रम चला सकते हैं। उदाहरण के लिए, यदि पुराना libc अंदर है /old/lib
और आपके पास निष्पादन योग्य हैं जो इस पुराने libc के साथ काम करते हैं /old/bin
, तो आप चला सकते हैं
LD_LIBRARY_PATH=/old/lib /old/lib/ld-linux.so.2 /old/bin/uname
यदि आपके पास कुछ वैधानिक रूप से जुड़े बायनेरिज़ हैं, तो वे अभी भी काम करेंगे। मैं इस तरह की समस्या के लिए सांख्यिकीय रूप से जुड़े सिस्टम उपयोगिताओं को स्थापित करने की सलाह देता हूं (लेकिन समस्या शुरू होने से पहले आपको इसे करना होगा)। उदाहरण के लिए, डेबियन / उबंटू / मिंट /… पर, एक या एक से अधिक बिजीबॉक्स-स्टैटिक (शेल सहित बेसिक लिनक्स कमांड लाइन टूल्स का संग्रह), सैश (कुछ अतिरिक्त बिलिंस के साथ शेल), zsh-static (सिर्फ एक शेल लेकिन स्थापित करें) में निर्मित कुछ आसान उपकरण के साथ।
busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'