Jak zaktualizować glibc do 2.14 w CentOS 6.5

47

Chcę zainstalować system Android NDK na moim komputerze CentOS 6.5. Ale kiedy uruchomiłem ten program, napisano, że aby móc uruchomić, potrzebuje glibc 2.14. W moim CentOS 6.5 zainstalowano tylko Glibc 2.12. Próbowałem więc zaktualizować glibc poprzez:

$ sudo yum update glibc

Ale potem okazało się, że wersja glibc to wciąż 2.12, a nie 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Myślę, że glibc 2.14 może nie być dostępny w repozytoriach CentOS. Jak mogę go zaktualizować do wersji glibc 2.14 na CentOS 6.5?

tonga
źródło
2
Łatwiej jest uaktualnić do CentOS7, który zawiera GLibC 2.14, niż uaktualnić GLibC z 2.12 do 2.14. Zobacz Skype Call Recorder
eyoung100,
@ eyoung100 Nadal potrzebuję CentOS 6.5 zamiast 7. Czy istnieje prosty sposób na uaktualnienie Glibc do 2.14? Dzięki!
tonga
3
Nie, zobacz jedną z moich innych odpowiedzi, dlaczego .
eyoung100,
Na podstawie twoich odpowiedzi wydaje się, że najlepszym rozwiązaniem będzie aktualizacja do CentOS 7 lub użycie starszej wersji NDK, która wymaga glibc 2.12. Dziękuję za komentarze.
tonga
1
Możesz także zainstalować chroota CentOS7, aby uruchomić NDK.
derobert

Odpowiedzi:

68

Nie można aktualizować glibcna Centos 6bezpiecznie. Możesz jednak łatwo zainstalować 2.14obok 2.12, a następnie użyć go do kompilacji projektów itp. Oto jak:

mkdir ~/glibc_install; cd ~/glibc_install 

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

tar zxvf glibc-2.14.tar.gz

cd glibc-2.14

mkdir build

cd build

../configure --prefix=/opt/glibc-2.14

make -j4

sudo make install

export LD_LIBRARY_PATH="/opt/glibc-2.14/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
UnitasBrooks
źródło
3
Chciałbym wspomnieć, że proces budowania trwa 2,5 godziny na wolnym AWS. Może przyda się komuś następna informacja: powyższa instrukcja rozwiązuje psycopg2problem ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(korzystam z Centos 6.5 i PostgreSQL v 9.6)
TitanFighter
1
Genialna odpowiedź! Dokładnie zastosowałem się do tej odpowiedzi i zadziałało to jak urok. Dziękuję
Thonnor,
2
Może być również używany w późniejszych wersjach; po prostu zmień „2.14” na „2.23” lub dowolną potrzebną wersję, co zostało podkreślone przez: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(kilka ostatnich cyfr to wersja). Aby przyspieszyć kompilację, użyj make -j8, jeśli masz 8 wątków na procesorze itp. Mój został ukończony w ciągu kilku minut.
Roel Van de Paar,
Pozostaje mi relocation error: libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time referencepo fazie eksportu (przy próbie wykonania dowolnego polecenia). Czy ktoś może pomóc? @Roel
belka
1
Dzięki stary, pracował zgodnie z oczekiwaniami CENTOS 6.10. Wymieniłem tę linię sudo make installze make installgdy byłem korzeń, bo mój użytkownik nie był w pliku sudoers
Accountant م
7

Aby zainstalować glibc 2.14 równolegle, dodaj prefiks konfiguracji:

tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install

Po zakończeniu tego procesu będziesz mógł zbudować 2.14, ale będziesz musiał powiedzieć kompilatorowi, gdzie ma szukać glibc.

Poniżej znajdują się sposoby na ujawnienie glibc w twoim programie.

  1. LD_LIBRARY_PATH = / opt / glibc-2.14 / lib

    eksportuj LD_LIBRARY_PATH.

    Biblioteka jest widoczna podczas bieżącej sesji logowania.

  2. Możesz na stałe połączyć swoją nową wersję glibc, ale przeczytaj OSTRZEŻENIE poniżej:

    ln -sf /opt/glibc-2.14/glibc-2.14.so /lib/libc.so.6.

Ponieważ libc.so.6 jest tylko dowiązaniem symbolicznym. Wykonanie powyższego polecenia spowoduje, że link będzie wskazywał nową bibliotekę glibc. Jednak ten krok nie jest zalecany, ponieważ istnieje wiele programów w systemie Linux, które zależą od starszych wersji i przestają działać.

mikel
źródło
+1 za szczegóły ujawnienia biblioteki
Księgowy م
2

Wspólna technika alternatywna. Równoległe instalowanie GLIBC 2.14 (Zainstaluj go w katalogu / opt) Następnie jest dostępny dla programów, które go wymagają, bez uszkodzenia podstawowego systemu operacyjnego.

BrokenSyntax
źródło
7
Jak byś to zrobił? Pobierz RPM i?
rncrtr