Esiste un metodo semplice per installare build binarie di glibc?


13

Di volta in volta vedo domande come queste:

E questi sono i tipi di soluzioni che stiamo tipicamente spingendo:

È davvero il meglio che possiamo fare? Non ci sono build binarie di GLIBC che possiamo semplicemente decomprimere in una directory come /opt/myglibc, e impostare $LD_LIBRARY_PATHo qualunque cosa ed eseguire qualsiasi applicazione che vogliamo, senza problemi?

Un'applicazione, come le versioni più recenti di Chrome (28+) che sembrano richiedere GLIBC 2.14?

NOTA: Questo thread intitolato: Google Chrome 29 rilasciato - Installa su RHEL / CentOS 6 e Fedora 19/15 su tecmint.com è ciò che alla fine mi ha fatto pensare a questo.

Riferimenti

Risposte:


1

Se fosse per qualsiasi altra libreria, ma glibc ... Suppongo che non ci possano essere modi rapidi, perché glibc è il luogo in cui le cose sono "hard coded". Glibc si adatta alla tua versione del kernel e il suo caricatore è l'istanza che fa effettivamente la cosa giusta (TM) con LD_LIBRARY_PATH.

Forse il modo corretto è:

LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`

Non sono sicuro che funzioni.

Ad ogni modo, penso che usare un glibc alternativo richieda ancora un framework per implementare, perché i percorsi di ricerca sono cablati a volte e il glibc deve sempre adattarsi al proprio sistema operativo / kernel, quindi non possono esserci binari generici, IMO. Il multiarch di Debian mostra che non è banale, ma può ancora essere fatto. Se uno avesse altri mezzi di discernimento delle librerie oltre all'architettura di destinazione.

Il sito Web mi ha appena dato questo altro thread correlato:

Lì, la risposta accettata include un collegamento a un programma chiamato rtldi , che sembra risolvere il problema glibc. È del 2004, quindi potrebbe non funzionare più dal linker, ma forse vale la pena esaminarlo. La sua fonte è GPLv2.

Geova, Geova

Una volta un mio amico ha avuto l'idea che l'uso effettivo delle librerie condivise è sopravvalutato. E ha un punto: le librerie condivise sono buone per non riempire la memoria del tuo computer con duplicati, ma considerando l'istanza della singola applicazione si tratta solo di pochi MB.

Ci sono solo alcune applicazioni in cui ricorreremo ad azioni come fornire loro il proprio glibc. Salvandoci una lunga analisi, chiamiamole "applicazioni immediate", che sono utili da sole, nel senso di portare a termine il lavoro. Ad esempio browser Web, agenti di posta elettronica, tute da ufficio e lettori musicali consentono all'utente di ottenere ciò che desiderano e ci sono solo poche istanze per utente. Per ritrarre l'altro lato, i servizi di sistema, i gestori delle finestre e persino interi ambienti desktop sono tutti molto importanti, ma semplicemente supportano e spesso non sufficientemente insoliti o critici, in modo che le persone siano disposte a dare loro il proprio glibc.

Il numero di "applicazioni immediate" è piuttosto piccolo, assolutamente per utente e relativamente rispetto a ciò che i sistemi operativi e le DE "di base" generano in questi giorni. Se le applicazioni immediate, come Chrome e Firefox, fossero compilate staticamente, il requisito di memoria aggiuntivo per il sistema medio sarebbe di qualche 100 MB. Un argomento che non va molto lontano sui molti sistemi GB attuali, quindi il collegamento statico per applicazioni immediate può essere un'opzione.

Ci sono anche concetti di spazio di swap e SSD che consentono uno swapin / -out ridicolmente veloce, che aiuta anche a gestire il maggiore fabbisogno di memoria.

Il problema glibc discusso qui non è realmente risolto attraverso il collegamento statico, ma per applicazioni come il browser Web è concepibile una sorta di formato di distribuzione autonomo, in cui il protocollo X, alcuni demoni audio e alcuni metodi del kernel come unica interfaccia. Il vantaggio sarebbe un minor numero di incompatibilità della versione della libreria.


2
"stiamo parlando di qualche 100 MB qui" Uh, no. Anche se la maggior parte delle librerie stesse potrebbe non essere così tanto (ma probabilmente un ordine di grandezza o due più di 100 MB - prova du -h /lib), tieni presente che se quelli fossero compilati staticamente, quella quantità di RAM sarebbe richiesta per ogni e ogni applicazione compilata con loro. Quindi se, ad es. hai due app che usano lo stesso stack di librerie, ora avrai bisogno del doppio della memoria. Tre app? Tre volte tanto. Per non parlare del fatto che negherebbe in gran parte i benefici della memorizzazione nella cache ...
Goldilocks,

2
... dato che, ovviamente, non potevi semplicemente memorizzare nella cache glibc: dovresti memorizzare nella cache le copie di tutte le applicazioni eseguite (== ridicola). In breve, i moderni sistemi operativi sarebbero chiaramente impossibili su hardware moderno se non fosse per tecniche moderne come gli oggetti condivisi. Non avresti bisogno di solo un po 'più di memoria - avresti bisogno di 10 o 100 volte più memoria.
Riccioli d'oro

Il mio Debian ha 235 MB in /lib, di cui 202 MB sono moduli del kernel. Sì, /usr/libè 4 GB, ma ciò non consente in modo preciso alcuna conclusione su quanto richiede il singolo programma. Le cache dei processori sono solo pochi MB. Con il consumo di memoria di qualcosa come un recente browser Web, anche l'impatto dei binari collegati staticamente sulla cache non è così grande e diminuisce con la quantità di programmi in esecuzione contemporaneamente; anche per la ragione di cache relativamente piccole. Le mie stime sembrano più accurate delle tue. Si
Bananguin,

Per non parlare dell'altro enorme problema legato al collegamento statico: gli aggiornamenti sono una PITA. Se c'è un problema di sicurezza in glibc, non è un grosso problema: aggiornare glibc, riavviare i programmi. OTOH, se i tuoi programmi fossero staticamente collegati, dovresti scaricare una nuova versione di ogni programma. E la tua distro avrebbe dovuto ricompilare (o almeno ricollegare, se avessero conservato tutti i file .o, probabilmente a causa delle enormi dimensioni) dell'intera distro.
derobert

1
@derobert: sembra giusto. Chiaramente le mie affermazioni erano iperboliche - qui con 1,8 GB impegnati che sputavano 521 MB. Quindi sarebbe un aumento del 30%. Naturalmente, questo non è ancora un punto di forza per una strategia che non ha vantaggi (ma "richiede solo il 30% in più di RAM").
Riccioli d'oro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.