jak uruchomić nowe oprogramowanie bez aktualizacji GLIBC?

20

Zainstalowałem Mathematica 9 na starym systemie Red Hat Enterprise Linux AS wydanie 4. Po instalacji próbowałem uruchomić Mathematica, ale pojawił się następujący komunikat:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: nie znaleziono wersji `GLIBC_2.4 '(wymagany przez / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: nie znaleziono wersji `GLIBC_2.4 '(wymagany przez / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libQtCore.so.4)

Nie chcę aktualizować systemu glibc, ponieważ jest to ryzykowne, a administrator nie pozwala mi tego robić.

Ktoś zasugerował, że można po prostu zainstalować nową wersję glibc gdzie indziej i uruchomić program jako

LD_LIBRARY_PATH=/lib/new your_application

i to nie wpłynie na system.

Pytam więc, czy ta metoda naprawdę działa. A jeśli to działa, chcę wiedzieć, jak to zrobić krok po kroku (brakuje mi teraz doświadczenia w Linuksie i chcę jak najszybciej korzystać z Mathematiki w systemie Linux).

Edytuj :

Zauważyłem, że istnieje oprogramowanie o nazwie „Ermine”. Wygląda na to, że może wdrożyć oprogramowanie jako samodzielny pakiet, który nie zależy od środowiska zewnętrznego. Niestety jest to shareware. Myślę więc, że skoro „Ermine” może to zrobić, musi istnieć sposób na użycie nowego oprogramowania na starym systemie.

użytkownik15964
źródło
2
To by działało. Konfiguracja może zająć sporo czasu (musisz zainstalować wszystkie biblioteki, od których zależy Mathematica). Moim zaleceniem byłoby zainstalowanie pakietów rpm z nowszej wersji w podkatalogu twojego domu. Pozwolę komuś bardziej zaznajomionemu z RH napisać odpowiedź wyjaśniającą, jak to zrobić.
Gilles „SO- przestań być zły”
@Gilles Cześć, Gilles, dziękuję bardzo !!! Nie mogę się tego doczekać.
user15964
To jest ryzykowne, aby zainstalować glibc gdzie indziej.
BenjiWiebe
@BenjiWiebe - do jakiego ryzyka dokładnie się odnosisz?
FooF
1
Przeniesiony z superużytkownika: superuser.com/questions/543249/... Powtarzając mój komentarz z tego miejsca: „RHEL4 ma osiem lat i osiągnął koniec normalnego cyklu życia wsparcia. Czy nie ma innej maszyny, na której można by go zainstalować ? np. Twój komputer stacjonarny. ”
Burhan Ali

Odpowiedzi:

10

Zdecydowanie możesz skompilować nową wersję GLIBC i przechowywać ją w osobnym katalogu. Pierwszą rzeczą, którą musisz zrobić, to pobrać żądaną wersję glibc ze strony http://ftp.gnu.org/gnu/glibc/ .

Uruchom configureskrypt i ustaw na --prefix=coś podobnego /home/you/mylibs.

Po zainstalowaniu go w tym katalogu musisz ustawić LD_LIBRARY_PATHlokalizację nowego glibc.

Będziesz musiał dowiedzieć się, jakie zależności mogą być potrzebne do skompilowania. Możesz utworzyć skrypt powłoki, który ustawia zmienne LD_ * i uruchamia Twój program (co i tak musiałbyś zrobić), i uruchamiać go wielokrotnie - po drodze pobierz / rekompiluj brakujące biblioteki lib.

Możesz także użyć ldddo ustalenia, jakich bibliotek współdzielonych potrzebuje program, a następnie użyj ich lddw każdej z bibliotek, aby dowiedzieć się, czy wymagają glibc.

Może to być bardzo czasochłonny proces i nie jest dla niecierpliwych lub słabo odczuwających bicie serca - przemierzanie / ponowne kompilowanie przez możliwe zależności wymagane do uruchomienia aplikacji może czasami sprawić, że będziesz chciał wyciągnąć włosy.

Aktualizacja 1:

Pobrałem glibc-2.4 i próbowałem go skompilować na CentOS 6. Aby configuredziałać poprawnie, musiałem zmienić sprawdzanie wersji aci ldwersji, zmieniając:

2.1[3-9]*)

do:

2.*)

w wierszach 4045iw 4106samym configurepliku. Ustawiam zmienne środowiskowe * FLAGS w następujący sposób:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

a następnie stracony ./configure --prefix=/home/tim/masochist. Skonfigurował się poprawnie ... i zaczął też poprawnie budować ... ale potem zaczęły mi się pojawiać błędy - głównie kompilator narzekał na przedefiniowanie.

W tym momencie poddałem się ... Ponieważ stało się to zbyt czasochłonne . ;)

livingstaccato
źródło
+1 za informację, choć ostatnia linia jest ważna. PO musi zdecydować, czy wysiłek jest tego wart.
Burhan Ali
Dziękuję wam wszystkim! OK, rezygnuję. Myślę, że lepiej będzie trzymać się Mathematica 8 jako kompromisu. Działa na Red Hat 4.
user15964
@livingstaccato Cześć, ale jak skomentować słowa vonbranda: „Instalowanie nowej wersji w jakimś dziwnym miejscu jest bardziej ryzykowne ... Bibliotekę w tym dziwnym miejscu można pobrać losowo…”. Czy to naprawdę bardziej ryzykowne? Czy próbowałeś kiedyś sposobu opisanego w odpowiedzi?
user15964
@ user15964 Nie jest to ryzykowne, chyba że nie zwracasz uwagi na to, co robisz root lub robisz coś dziwnego, na przykład zmieniając LD_PRELOAD w skrypcie inicjującym sesję i blokując się.
livingstaccato
@ user15964 Również - tak - mam przebudowany sposób glibc, dawno temu.
livingstaccato
1

Aktualizacja glibc do wersji obsługiwanej przez twoją dystrybucję wiąże się z niskim ryzykiem. Jest napisany, aby obsługiwać kompatybilność z wersjami, które pochodzą z bardzo dawnych czasów, a (z wyjątkiem błędów) nowa wersja powinna być tylko kroplą zastępczą. Instalowanie nowej wersji w jakimś dziwnym miejscu jest bardziej ryzykowne, IMHO.

vonbrand
źródło
4
ale problem polega na tym, że nie jestem administratorem, nie mam uprawnień. Nawet jeśli otrzymam pozwolenie, boję się wprowadzać zmiany w systemie, ponieważ to nie jest mój komputer, to właściwie klaster, wiele osób na nim pracuje. Nawiasem mówiąc, dlaczego nowa wersja w innym miejscu jest ryzykowna? Muszę tylko połączyć potrzebne oprogramowanie z nową biblioteką, a nie z całym systemem.
user15964,
1
I możesz zainstalować jakiś losowy pakiet? Zasady administracji systemu są opóźnione z powodu poważnej zmiany. Biblioteka w obcym miejscu może być odebrany przez losowe rzeczy, i prasowanie na bieg swojej aplikacji tylko (i ewentualne procesy rozpoczęte przez to, że nie wiążą standardowych programów) mogą okazać się nie lada wyzwaniem ...
vonbrand
1
@vonbrand - Bzdury, chyba że mówimy o jakiejś maszynie o wysokim poziomie bezpieczeństwa (a nie na przykład o wspólnym deweloperze lub maszynie / klastrze testującym), w którym to przypadku musisz zachować zdrową paranoję na temat obcego niezbadanego oprogramowania. Jeśli chodzi o przypadkowe awarie, zupełnie inną sprawą jest aktualizacja libc (wpływająca na cały system, prawdopodobnie powodujący awarie systemu) niż tylko instalacja izolowanego programu aplikacyjnego z zaufanych źródeł (nie zgadzam się z twierdzeniem, że Mathematica jest losowym pakietem). Oczywiście wyczerpanie zasobów jest ważną kwestią, którą powinien rozwiązać właściwy sysadmin.
FooF,
@FooF, widziałem zbyt wiele przypadków „Administracja wie najlepiej, pozwól użytkownikom robić, co chcą bez wsparcia”, aby mieć złudzenia w tej dziedzinie.
vonbrand,
1
@vonbrand - Zgadzam się z twoim ostatnim komentarzem. Ale zdecydowanie nie zgadzam się z tym, że aktualizacja libc lub instalacja dobrze znanego oprogramowania (nie „losowego pakietu”) jest w jakiś sposób porównywalna (zakładając, że nie ma złych zamiarów). Niewiele wiemy o naturze środowiska i jego użytkownikach, aby wyrazić tutaj swoją ostateczną opinię. W maszynach programistycznych (z wielu kompetentnych użytkowników), to mogłoby mieć sens, aby umożliwić użytkownikom uruchamiać własne oprogramowanie. Czasami jest to absolutnie konieczne (OpenWRT i OpenEmbedded, że docelowe platformy osadzone będą budować ze źródeł niektóre narzędzia potrzebne do budowy obrazu sprzętowego).
FooF,
-3

W tym konkretnym przypadku powiedziałbym, że nie przejmuj się, chyba że masz pomoc (i pozwolenie) od administratorów tego wspólnego systemu.

Mathematica działa na systemach Windows, Mac i Linux, więc po prostu zainstaluj go na komputerze stacjonarnym, gdzie nie musisz się martwić o wpływ na innych. Jest również bardziej prawdopodobne, że system operacyjny będzie nowszy niż RHEL4, dlatego nie będziesz musiał robić żadnych skrupułów, aby go zainstalować.

Burhan Ali
źródło