Co może pójść nie tak z aktualizacją GLIBC?

9

Niedawno zainstalowałem oprogramowanie, którego moja grupa potrzebuje do projektu badawczego, który rozpocznie się we wrześniu. Okazuje się, że oprogramowanie ma znany błąd awarii, gdy jest używane z glibc 2.12.1. Mój szef zapytał, czy możemy zaktualizować glibc na serwerze, który ma go uruchomić. Wskaż moją sceptyczną ciszę ...

W pewnym momencie zrozumiałem, że zadzieranie z glibc było równie dobrym pomysłem, jak zadzieranie z głodną pumą; nie byłem jednak w stanie określić źródła tego przekonania. Więc jeśli pójdę dalej z tym:

  1. Czy robię coś rażąco głupiego (np. Nie naprawię mojego problemu, zepsuję serwer, czy zainicjuję apokalipsę zombie)?
  2. Co może pójść źle?
  3. Co może pójść nie tak?
  4. Jak uniknąć odpowiedzi na 2 i 3?
Sevenless
źródło
3
Najpierw sprawdź, czy Twoja dystrybucja ma aktualizacje glibc, które naprawiają błąd. Konkretny glibc dystrybucji może zawierać wiele backportów / poprawek błędów w swoim glibc w porównaniu z oficjalnym glibc, ale wersja dystrybucji jest nadal taka sama.
nos
1
Tak długo, jak masz bootowalny nośnik wymienny (pamięć flash USB, CD, DVD), maszyna nie jest naprawdę zepsuta. Uratowanie będzie możliwe poprzez ponowną instalację glibc stamtąd. Aby uniknąć jakiegokolwiek niebezpieczeństwa, możesz spróbować skompilować nowego glibc jako użytkownik inny niż root, a --prefix=$HOMEnastępnie wskazać LD_LIBRARY_PATHgo i sprawdzić, czy działa. Jako użytkownik inny niż root nie możesz zepsuć całego systemu bez względu na to, jak bardzo się popsułeś. Jeśli to zadziała, zmień to --prefix=/usr/local/bleeding-edge-glibci udokumentuj LD_LIBRARY_PATH=/usr/local/bleeding-edge-glibc/libjako wymaganie dla projektu badawczego
Alan Curry
1
Nie możesz zaktualizować dystrybucji? Powinieneś powiedzieć, jakiego glibcbłędu się boisz i jakiego oprogramowania używasz. Możesz załatać oprogramowanie (zakładając, że masz jego kod źródłowy) lub skonfigurować system w inny sposób, aby go obejść.
W miarę możliwości unikaj używania starego oprogramowania serwerowego do nowych projektów.
Michael Hampton,

Odpowiedzi:

5

Często można skompilować świeższą bibliotekę libc, a jeden program korzysta z innej biblioteki niż wszyscy inni.

Największym problemem między wersjami libc jest lokalna pamięć wątków, IIRC. Jeśli przekroczysz ten kamień milowy, wszystkie zakłady są wyłączone.

Powiedziawszy to wszystko - zdecydowanie zalecam po prostu uaktualnienie dystrybucji do czegoś nowoczesnego. Robienie częściowych ulepszeń może prowadzić do bólu, który goni cię za ogon od miesięcy.

Tom Newton
źródło
2

Możesz zapoznać się z tabelą kompatybilności, aby określić wersje kompatybilne binarnie.

Zwykle uaktualnienie glibc do nowszej wersji nie stanowi problemu, ale powinieneś zbudować go z tymi samymi flagami konfiguracyjnymi, jakie zastosowano w twojej dystrybucji (zobacz plik specyfikacji w odpowiednim pakiecie SRPM).

wprowadź opis zdjęcia tutaj

linuxbuild
źródło