apt: relocation error: sürüm GLIBCXX_3.4.21 libstdc ++ dosyasında tanımlanmadı.


63

16.04 xenial’a yükseltmeye çalıştığımdan beri alıyorum.

$ 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

sadece koşarken apt. Söylemeye gerek yok, bir şey yapmayı zorlaştırıyor.

Herhangi bir ipucu?


vay… Bu beni gerçekten Ubuntu / Canonical'ın yükseltme işlemine güvensiz hale getiriyor. Ben var her zaman çalışma ama bayat sürümünü bir yardım forumunda birisi ile çalışmayı kesmek zorunda istemiyorum ben kesinlikle bir "Çalışma diski" ne olduğunu ve yok ... beni yükseltmeleri tüm sorunlarımı çözecek söyler GRUBayıklama …
isomorphismes 14

Yanıtlar:


55

Aynı problemi PPA'nın Ubuntu takım zinciri için yaptığı sorunlardan da kaynaklandım. Bilgisayarım bu nedenle önyükleme yapmaz. Onun yanıta @ w00kie yorumuna ardından, (tty terminalinden) indirilen paketin Debian libstdc++6için Xenialbağlantıyı https://packages.ubuntu.com/xenial/libstdc++6 ve kullanma yüklü dpkg -i. Bilgisayar şu anda gayet iyi çalışıyor.

adımlar

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
Lütfen komutları yazıp cevabınızı adım adım verebilir misiniz? Buna hiç aşina değilim ve linux makinem ağrıyor ...
Zachary Fields

@ Zachary Karşılaştığınız konu tam olarak nedir? Önyükleme yapabiliyor musunuz?
Sagar Jha

1
Pek sayılmaz. Ekranı yaklaşık 15 dakika boyunca titretmesine izin verirsem, çok açık gri bir renkte bir tty2 terminal istemi alıyorum. Kullanamıyorum apt(veya gerçekten herhangi bir araç). libstdc++6...debÖnyüklenebilir bir USB sürücüden indirmeyi , paketi manuel olarak yerleştirmeyi, kırık sistemi yeniden başlatmayı ve .debkullanmayı yüklemeyi bile denedim sudo dpkg -i libstdc++6...deb, ancak ne dpkgolduğunu bile bilmiyor .
Zachary Fields

13
.Deb dosyasını indirmek / yüklemek için şunları yapabilirsiniz: wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.debve sonra bir kez indirildiğinde, dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb(64 bit sistemi varsayar). Benim için, benim internet bağlantısı sonra el ile sorunlu bilgisayardaki USB sürücüyü bağlamak için vardı, bu yüzden farklı bir bilgisayardan bir USB sürücü üzerine indirilen, çalışma değildi ( sudo mount /dev/sdc1 /media/usbnerede sdc1sağ USB takarak sonra terminal çıkışı seyrederek bulunmuştur) ve sonra yukarıdaki dpkgkomutu çalıştırın .
Garrett

7
Ben kullanmak zorunda dpkg --force-all -i libstdc+‌​+6_5.4.0-6ubuntu1~16‌​.04.2_amd64.debyüklü almak
virtualxtc

26

Suçlu , özellikle Ubuntu Takım Zinciri Yüklemesi için PPA'dan ayrıldı ( özellikle sınırlı)

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

Bununla başa çıkmanın iki yolu vardır:

  • Zaten ppa-purgeyüklediniz. Sonra

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

    sorunları düzeltir.

  • Xenial için libstdc ++ 6'yı indirerek ve yükleyerek libstc ++ 'ı geçersiz kılın dpkg -i.


4
En azından benim için bu, sorudaki ile aynı mesajla başarısız oluyor ...
mbdevpl

1
Muhtemelen aşağıdan cevaplarla genişletilmeli, çünkü kesinlikle ppa-purgeişe yaramayacak (aynı python)
user64204

1
Anladım:sudo: ppa-purge: command not found
Garrett

@Garrettsudo apt install ppa-purge
Nico Schlömer

3
@ NicoSchlömer, teşekkürler, ama aslında, benim aptçalışmamın da işe yaradığına inanıyorum (orijinal yazıya göre).
Garrett

8

Comp bu hata nedeniyle doğru önyükleme başarısız oldu. Apt-get çalışmıyordu, Gnome da. Bu 14.04'ten 16.04'e yükseltme yapıldıktan hemen sonra gerçekleşti. Girerek tty de çözdüm

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

Bu noktada apt-gettekrar çalışmaya başladım ve oradan bütün isimleri düzeltmeyi başardım:

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

Ayrıca Virtualbox'u (güncelleme komutundan sonra) kaldırmak ve daha sonra yeniden kurmak zorunda kaldım, ancak bunun alakasız olduğunu düşünüyorum.


2
Bunu denedim ama apt_pkg paketinde bir içe aktarma hatası oluştu
Mixone

Mixone, kesin hata neydi ve hangi komutta tam olarak?
Matjaz

sudo apt-get update hatası sanırım python arka ucundan geldi, sanırım stacktrace python'du ve temelde apt_pkg modülünü bulamadığını söyledi
Mixone

5
Benim için de aynı sorun apt-add-repository, cevabınızdaki komutu kullanmaya çalışmak size verir: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
Garrett

Benim gibi salaklar için piyasaya sürüldükten 2 yıl sonra yükseltme yapmaya çalışıyorum ve tüm hataları düzeltildi. Yukarıdaki yorumdaki bağlantı koptu. İşte yeni olan. http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb(veya i386her ikisi de) Ve dpkg'ın seni lanetlemesine aldırma. Do --auto--deconfigureve sizin apt-gethata mesajları rağmen sonradan tekrar rayına olacaktır. Doğru -f --install+ ile bitirebilir --upgradeve yeni bir sisteme yeniden başlayabilirsiniz .
Ufos

4

Sorunun benim için benzersiz bir şey olduğunu ve bir indirme hatasından kaynaklandığını düşünüyordum.

Bu tartışma bana ihtiyacım olan ipucunu verdi. Temel olarak, ihtiyaç duyulan tek şey, başarısız olan sistemin / usr / lib / x86_64-linux-gnu içindeki libstdc ++. (Yeni sürümde bir hata var gibi görünüyor.)

Bu, bir sürücüden ya da benim durumumda olduğu gibi çizikli bir diskten yapılabilir.

Tam ayrıntılar: https://answers.launchpad.net/ubuntu/+question/395832

Herkese teşekkürler...


Bu numarayı kullandım ama boş bir alana çift çizdim. Orijinal bölümü kolayca monte etmeyi başardım. Oldukça kolaydı.
Andrew,

Awesome - bu 3 komut benim için çalıştı: cd / usr / lib / x86_64-linux-gnu / >>> sudo rm libstdc ++. So.6 >>> sudo ln -s libstdc ++. So.6.0.21
osman

3

dpkg -iKabul edilen cevaptaki yaklaşımı takiben, 14.04-> 16.04 yükseltmemde bir değil iki paket gerekli:

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

Bundan sonra apt upgrade, kalan paketleri indirebilir ve kurulumu tamamlayabilirdik.


2

Yakkety'de Snappy ile birlikte yüklenen 'conjure-up' ekinin en son sürümüne sahipseniz, uygun bir şekilde benzer bir hatayla karşılaşacaksınız:

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

bu hata nedeniyle:

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

Şu anda bildiğim tek geçici çözüm, çağrıştırma ek bileşeninin kaldırılması (ya da önceden kurmuş olmanız durumunda muhtemelen 'eksi geri döndürme').


1

Benim için işe yarayan şey aslında Ubuntu toolchain ppa'yı geri eklemek oldu.

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

0

Yazarak düzeltebilmeniz gerekir:

sudo apt-get -f kurulumu

herhangi bir paket belirtmeden. İşi yapmalı.


0

İ386 sistemlerinde çok benzer bir sorun olabilir.

Sorunu çözmek için, gcc-5-base'i Sürüm'den sürümüne düşürmem 5.4.1-2ubuntu1~12.04gerekiyordu 5.4.0-6ubuntu1~16.04.4.

Makul dpkg --purge on vituoso_nepomukgörünüme sahip bir sisteme yükseltmeyi tamamlamak için, aynı zamanda sorun çıkaran yapılandırma dosyalarından kurtulmak için kullanmam ve sanal kutuyu kullanmam gerekiyordu (benim için, VirtualBox yükseltme tarafından çizilmemiş gibi görünen virtualbox-5.1 paketi tarafından sağlandı). )

Anahtar dpkg --configure dbusişe almaktı.

Bir tty tipi ekranda iken wget'ı sudo dhclient eth0etkinleştirmek için kullanıcıların kablolu bir ethernet bağlantısını etkinleştirmek için de çalıştırmaları gerekebilir .


0

Ben sadece linux üzerinde ubuntu dağılımını yükseltirken bu sorunu yaşadım:

# 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 ++. so.6cd -> libstdc ++. so.6.0.20

Ancak iki dosya vardı: libstdc ++. So.6.0.21 ve libstdc ++.

Sembolik bağlantıyı libstdc ++ 'nın en son sürümüne işaret edecek şekilde değiştirdim.

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

Sonuç:

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

ve her şey normale döndü


0
  1. Ubuntu'nuz için libstdc ++ 6'yı Ubuntu paket yöneticisi web sitesinden indirin. ( uname -as / b ve s / s mimarisini bulmak için kullanın ).

  2. Çalıştırmak

    sudo dpkg --install --auto-deconfigure libstdc++6...deb
    
  3. Yeniden Başlatma. Ubuntu önyüklemeli ancak apt yeni paketler yüklememeliydi.

  4. Bağımlılıkları düzeltmek ve sistemi güncellemek için bu komutları çalıştırın

    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  
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.