उपयुक्त: स्थानांतरण त्रुटि: संस्करण GLIBCXX_3.4.21 फ़ाइल libstdc ++ में परिभाषित नहीं किया गया है।


63

16.04 xenial में अपग्रेड करने का प्रयास करने के बाद से, मुझे मिल रहा है

$ apt
apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: 
symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, 
version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

जब बस चल रही है apt। यह कहने की आवश्यकता नहीं है कि कुछ भी करना मुश्किल है।

कोई संकेत?


वाह ... यह मुझे वास्तव में उबंटू / कैननिकल की अपग्रेड प्रक्रिया में अविश्वास करता है। हर बार जब मेरे पास काम करने वाला लेकिन बासी संस्करण होता है, तो मदद फोरम में कोई मुझे बताता है कि उन्नयन से मेरी सारी समस्याएं हल हो जाएंगी ... मुझे नहीं पता कि "स्क्रैच डिस्क" क्या है, और निश्चित रूप से GRUBडिबगिंग के साथ काम को बाधित नहीं करना है। …
isomorphismes

जवाबों:


55

उबंटू टूलकिन के लिए पीपीए से मुद्दों के कारण मुझे एक ही समस्या थी। मेरा कंप्यूटर इसके कारण बूट नहीं होगा। उसके जवाब पर @ w00kie की टिप्पणी के बाद, मैं (TTY टर्मिनल से) डाउनलोड किए गए पैकेज के डेबियन libstdc++6के लिए Xenialदिए गए लिंक पर https://packages.ubuntu.com/xenial/libstdc++6 और का उपयोग कर स्थापित dpkg -i। कंप्यूटर अब ठीक काम करता है।

कदम

wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb

# I also found this helpful
sudo apt-get -f install

5
क्या आप अपने जवाब में कदम से कदम मिलाकर आदेश रख सकते हैं? मैं इससे बिलकुल भी परिचित नहीं हूँ और मेरी लिनेक्स मशीन में छेद किया हुआ है ...
Zachary फील्ड्स

@Zachary आप किस सटीक मुद्दे का सामना कर रहे हैं? क्या आप बूट करने में सक्षम हैं?
सागर झा

1
ज़रुरी नहीं। अगर मैंने इसे लगभग 15 मिनट के लिए स्क्रीन फ़्लिकर जाने दिया, तो मुझे बहुत हल्के भूरे रंग में एक tty2 टर्मिनल प्रॉम्प्ट मिलता है। मैं apt(या वास्तव में किसी भी उपकरण) का उपयोग करने में असमर्थ हूं । मैंने libstdc++6...debबूट करने योग्य USB ड्राइव से डाउनलोड करने का भी प्रयास किया है , पैकेज को मैन्युअल रूप से रखें, टूटी हुई प्रणाली में रिबूट करें और .debउपयोग को स्थापित करें sudo dpkg -i libstdc++6...deb, लेकिन यह भी नहीं जानता कि क्या dpkgहै।
ज़ाचरी फील्ड्स

13
.Deb फ़ाइल को डाउनलोड / स्थापित करने के लिए, आप यह कर सकते हैं: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debऔर फिर एक बार डाउनलोड होने पर, dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(64-बिट सिस्टम को मानता है)। मेरे लिए, मेरा इंटरनेट कनेक्शन काम नहीं कर रहा था, इसलिए मैंने इसे एक अलग कंप्यूटर से एक यूएसबी ड्राइव पर डाउनलोड किया, फिर अपने समस्याग्रस्त कंप्यूटर पर यूएसबी ड्राइव को मैन्युअल रूप से माउंट करना पड़ा ( sudo mount /dev/sdc1 /media/usbजहां sdc1यूएसबी में प्लगिंग के बाद टर्मिनल आउटपुट को देखकर सही पाया गया) और फिर उपरोक्त dpkgकमांड चलाएं ।
गैरेट

7
मुझे dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debइसे स्थापित करने के लिए उपयोग करना था
virtualxtc

26

अपराधी विशेष रूप से Ubuntu Toolchain Uploads (प्रतिबंधित) के लिए PPA से बाएं ओवर के हैं

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22

इससे निपटने की दो संभावनाएँ हैं:

  • आप पहले ही ppa-purgeस्थापित कर चुके हैं । फिर

    sudo ppa-purge ppa:ubuntu-toolchain-r/test
    

    मुद्दों को ठीक करता है।

  • Xenial के लिए libstdc ++ 6 डाउनलोड करके और इसके द्वारा स्थापित करके libstc ++ को ओवरराइड करें dpkg -i


4
कम से कम मेरे लिए, यह प्रश्न में एक के समान संदेश के साथ विफल रहता है ...
mbdevpl

1
शायद नीचे से जवाब के साथ विस्तार किया जाना चाहिए, क्योंकि स्पष्ट रूप ppa-purgeसे काम नहीं करेगा (वही अजगर)
user64204

1
मुझे मिलता है:sudo: ppa-purge: command not found
गैरेट

@ ग्रेटsudo apt install ppa-purge
निको श्लोमर 15

3
@ NicoSchlömer, धन्यवाद, लेकिन वास्तव में, मेरा मानना ​​है कि मेरा aptभी काम नहीं कर रहा था (मूल पोस्ट के अनुसार)।
गैरेट

8

इस त्रुटि के कारण मेरा COMP सही ढंग से बूट नहीं हो पाया। एप्ट-गेट काम नहीं कर रहा था, न ही गनोम। 14.04 से 16.04 तक अपग्रेड के बाद यह तत्काल था। मैंने इसे ट्टी में डालकर हल किया

sudo apt-add-repository --remove ppa:ubuntu-toolchain-r/test

इस बिंदु पर apt-getफिर से काम करना शुरू कर दिया और मैं वहाँ से सभी आयतों को ठीक करने में सक्षम था:

sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
sudo dpkg -a --configure
sudo apt-get dist-upgrade

मुझे भी वर्चुअलबॉक्स (अपडेट कमांड के बाद) को अनइंस्टॉल करना पड़ा और बाद में इसे फिर से स्थापित करना पड़ा, लेकिन मुझे लगता है कि यह असंबंधित था।


2
मैंने यह कोशिश की, लेकिन apt_pkg पैकेज पर आयात त्रुटि मिली
Mix17

मिक्सऑन, सटीक त्रुटि क्या थी और किस कमांड पर वास्तव में थी?
मटकाज

sudo apt-get update the error from the python backend मुझे लगता है, स्टैकट्रेस अजगर था और यह मूल रूप से कहा कि मॉड्यूल apt_pkg नहीं मिल सकता
मिक्स

5
मेरे लिए भी यही समस्या है, apt-add-repositoryआपके उत्तर में कमांड का उपयोग करने की कोशिश करना देता है:ImportError: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in the file libstdc++.so.6 with link time reference
गैरेट

मेरे जैसे बेवकूफों के लिए रिलीज़ होने के 2 साल बाद अपग्रेड करने की कोशिश करना और यह सोचना कि सभी कीड़े ठीक हो गए हैं। ऊपर टिप्पणी में लिंक टूट गया है। यहाँ नया है। http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(या i386या दोनों) और आप को कोसने से dpkg बुरा मत मानना। क्या --auto--deconfigureऔर आपके apt-getत्रुटि संदेशों के बावजूद बाद में ट्रैक पर वापस आ जाएगा। और आप एक उचित प्रणाली में उचित -f --install+ --upgradeऔर रिबूट के साथ समाप्त करने में सक्षम होंगे ।
उफोस

4

मैं सोच रहा था कि समस्या मेरे लिए कुछ अनोखी थी, और एक डाउनलोड त्रुटि के कारण थी।

इस चर्चा ने मुझे वह सुराग दिया जिसकी मुझे आवश्यकता थी। मूलतः, सभी की जरूरत थी libstdc ++ को बदलने के लिए। इसलिए.6.0.22 libstdc + के साथ। इसलिए.6.0.21 in / usr / lib / x86_64-linux-gnu of the फेलिंग सिस्टम। (ऐसा लगता है कि नए संस्करण में कोई त्रुटि है।)

यह एक थंब-ड्राइव से किया जा सकता है या, जैसा कि मेरे मामले में, एक स्क्रैच डिस्क से किया जा सकता है।

पूरा विवरण: https://answers.launchpad.net/ubuntu/+question/395832

सभी को धन्यवाद...


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

बहुत बढ़िया - इन 3 कमांडों ने मेरे लिए काम किया: cd / usr / lib / x86_64-linux-gnu / >>> sudo rm libstdc ++। इसलिए.6 >>> sudo ln -s libstdc ++। इसलिए.6.0.21 libstdc ++।
ओसमैन

3

dpkg -iस्वीकृत उत्तर में दृष्टिकोण के बाद , मेरा 14.04-> 16.04 उन्नयन एक नहीं बल्कि दो पैकेजों की आवश्यकता है:

gcc-5-base_5.4.0-6ubuntu1~16.04.4_i386.deb
libstdc++6_5.4.0-6ubuntu1~16.04.4_i386.deb

इसके बाद, apt upgradeशेष पैकेजों को डाउनलोड करने और स्थापना को पूरा करने में सक्षम था।


2

यदि आपके पास याक्विटी पर स्नैपी के साथ स्थापित 'कॉनक्योर-अप' स्नैप का नवीनतम संस्करण है, तो आपकी योग्यता बहुत ही समान त्रुटि के साथ टूट जाएगी:

apt: relocation error: /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0: symbol _ZN13pkgSourceList16AddVolatileFilesER11CommandLinePSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE, version APTPKG_5.0 not defined in file libapt-pkg.so.5.0 with link time reference

इस बग के कारण:

https://bugs.launchpad.net/snappy/+bug/1a677417

वर्तमान में मुझे जो एकमात्र वर्कअराउंड पता है, वह है कंज्यूमर-अप स्नैप (या संभवतया 'स्नैप रिवर्ट' को पिछले संस्करण में हटा दें यदि आपने पहले इंस्टॉल किया था)।


1

मेरे लिए जो फिक्स काम किया गया था वह वास्तव में उबंटू टूलचिन पीपा को वापस जोड़ना था:

sudo apt-add-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -f
sudo apt-get upgrade

0

आपको इसे टाइप करके ठीक करना चाहिए:

sudo apt-get -f install

किसी भी पैकेज को निर्दिष्ट किए बिना। यह काम करना चाहिए।


0

I386 सिस्टम के साथ एक समान समस्या हो सकती है।

समस्या को हल करने के लिए, मैं भी संस्करण से जीसीसी-5-आधार डाउनग्रेड करने के लिए किया था 5.4.1-2ubuntu1~12.04के लिए 5.4.0-6ubuntu1~16.04.4

एक उचित-प्रतीत होने वाली प्रणाली में अपग्रेड को पूरा करने के लिए, मुझे dpkg --purge on vituoso_nepomukउनकी कॉन्फ़िगरेशन फ़ाइलों से छुटकारा पाने के लिए वर्चुअलबॉक्स का भी उपयोग करना पड़ा , जो परेशानी का कारण बन रहे थे (मेरे लिए, वर्चुअलबॉक्स पैकेज वर्चुअलबॉक्स -51 द्वारा प्रदान किया गया है, जो अपग्रेड से अप्राप्य लगता है। )

चाबी dpkg --configure dbusकाम पर लगानी थी।

ट्टी-टाइप स्क्रीन में वॉग sudo dhclient eth0को सक्षम करने के लिए, एक वायर्ड ईथरनेट कनेक्शन को सक्षम करने के लिए उपयोगकर्ताओं को निष्पादित करने की भी आवश्यकता हो सकती है ।


0

जब मैंने देखा कि बस ubuntu वितरण को अपग्रेड करते समय मुझे यह समस्या हुई है:

# ls /usr/lib/x86_64-linux-gnu/libstdc++.so.6*
libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21
libstdc++.so.6cd -> libstdc++.so.6.0.20*

libstdc ++। so.6 -> libstdc ++। तो.6cd -> libstdc ++ .6.6.0.20

लेकिन दो फाइलें थीं: libstdc ++। तो ..6.0.21 और libstdc ++

मैंने प्रतीकात्मक लिंक को नवीनतम संस्करण libstdc ++ को इंगित करने के लिए बदल दिया है

cd /usr/lib/x86_64-linux-gnu
rm libstdc++.so.6cd
chmod +x libstdc++.so.6.0.21
ln -s  libstdc++.so.6.0.21 libstdc++.so.6cd

जिसके परिणामस्वरूप:

libstdc++.so.6 -> libstdc++.so.6cd*
libstdc++.so.6.0.20*
libstdc++.so.6.0.21*
libstdc++.so.6cd -> libstdc++.so.6.0.21*

और सब कुछ सामान्य हो गया


0
  1. Ubuntu पैकेज प्रबंधक वेबसाइट से अपने ubuntu के लिए libstdc ++ 6 डाउनलोड करें। ( uname -aएच / डब्ल्यू और एस / डब्ल्यू वास्तुकला खोजने के लिए उपयोग करें)।

  2. Daud

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. रीबूट। उबंटू बूट होना चाहिए लेकिन उपयुक्त नए पैकेज स्थापित नहीं करेगा।

  4. निर्भरता को ठीक करने और सिस्टम को अद्यतित करने के लिए, इन आदेशों को चलाएं

    sudo apt-add-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install -f
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt-get autoclean && sudo apt-get autoremove  
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.