comment exécuter un nouveau logiciel sans mettre à jour GLIBC?

20

J'ai installé Mathematica 9 sur un ancien système Red Hat Enterprise Linux AS version 4. Après l'installation, j'ai essayé de démarrer Mathematica, mais le message suivant est sorti:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: version `GLIBC_2.4 'introuvable (requis par / 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: version `GLIBC_2.4 'introuvable (requis par / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libQtCore.so.4)

Je ne veux pas mettre à jour la glibc du système, car c'est risqué et l'administrateur ne me permet pas de le faire.

Quelqu'un a suggéré qu'il était possible d'installer simplement une nouvelle version de glibc ailleurs et d'exécuter le programme en tant que

LD_LIBRARY_PATH=/lib/new your_application

et cela n'affectera pas le système.

Je demande donc ici si cette méthode fonctionne vraiment. Et si cela fonctionne, je veux savoir comment le faire étape par étape (je manque d'expérience en Linux en ce moment, et je veux utiliser Mathematica sur Linux dès que possible).

Modifier :

J'ai remarqué qu'il existe un logiciel appelé "Ermine". Il semble qu'il puisse déployer un logiciel en tant que package autonome qui ne dépend pas de l'environnement externe. Malheureusement, c'est un shareware. Je pense donc que "Ermine" peut le faire, il doit y avoir un moyen d'utiliser un nouveau logiciel sur l'ancien système.

user15964
la source
2
Ça marcherait. La mise en place de cette tâche est susceptible de nécessiter beaucoup de travail (vous devrez installer toutes les bibliothèques dont Mathematica dépend). Ma recommandation serait d'installer des paquets rpm à partir d'une version plus récente dans un sous-répertoire de votre maison. Je vais laisser quelqu'un qui connaît mieux la SR écrire une réponse expliquant comment procéder.
Gilles 'SO- arrête d'être méchant'
@Gilles Salut, Gilles, merci beaucoup !!! Je suis impatient d'y être.
user15964
Il est risqué d'installer la glibc ailleurs.
BenjiWiebe
@BenjiWiebe - à quels types de risques faites-vous exactement référence?
FooF
1
Post-cross de superuser: superuser.com/questions/543249/… Répétant mon commentaire à partir de là: "RHEL4 a huit ans et a atteint la fin de son cycle de vie de support normal. N'y a-t-il pas une autre machine sur laquelle vous pouvez l'installer? ? Par exemple. Votre ordinateur de bureau. "
Burhan Ali

Réponses:

10

Vous pouvez certainement compiler une nouvelle version de GLIBC et la stocker dans un répertoire séparé. La première chose que vous devrez faire est de télécharger la version de glibc que vous souhaitez sur http://ftp.gnu.org/gnu/glibc/ .

Exécutez le configurescript et définissez le --prefix=sur quelque chose comme /home/you/mylibs.

Après avoir réussi à l'installer dans ce répertoire, vous devrez définir votre LD_LIBRARY_PATHà l'emplacement de la nouvelle glibc.

Vous devrez déterminer toutes les dépendances que vous devrez peut-être compiler. Vous pouvez créer un script shell qui définit les variables LD_ * et les exécutions de votre programme (que vous auriez à faire de toute façon), et l'exécuter à plusieurs reprises - télécharger / recompiler les bibliothèques manquantes en cours de route.

Vous pouvez également utiliser lddpour déterminer les bibliothèques partagées dont le programme a besoin, puis utiliser lddsur chacune des bibliothèques pour savoir si elles nécessitent une glibc.

Cela peut être un processus très long et ne convient pas aux impatients ou aux faibles de cœur - traverser / recompiler votre chemin à travers les dépendances possibles nécessaires pour faire fonctionner votre application peut parfois vous donner envie de vous arracher les cheveux.

Mise à jour 1:

J'ai téléchargé glibc-2.4 et essayé de le compiler sur CentOS 6. Pour configurefonctionner correctement, j'ai dû changer les vérifications de version acet lden changeant:

2.1[3-9]*)

à:

2.*)

aux lignes 4045et 4106dans le configurefichier lui-même. J'ai défini mes variables d'environnement * FLAGS comme suit:

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

puis exécuté ./configure --prefix=/home/tim/masochist. Il s'est configuré correctement ... et il a commencé à se construire correctement aussi ... mais j'ai ensuite commencé à rencontrer des erreurs - principalement le compilateur se plaignant de la redéfinition des choses.

À ce stade, j'ai abandonné ... Parce que cela prenait trop de temps . ;)

livingstaccato
la source
+1 pour l'information, bien que la dernière ligne soit importante. Le PO doit décider si la quantité d'efforts impliqués en vaut la peine.
Burhan Ali
Merci à tous! OK, je démissionne. Je pense que je ferais mieux de m'en tenir à Mathematica 8 comme compromis. Il fonctionne sur Red Hat 4.
user15964
@livingstaccato Salut, mais comment commentez les mots de vonbrand: "Installer une nouvelle version dans un endroit étrange est plus risqué ... La bibliothèque à cet endroit étrange pourrait être récupérée par des trucs aléatoires, ....". Est-ce vraiment plus risqué? Avez-vous déjà essayé la voie décrite dans votre réponse?
user15964
@ user15964 Ce n'est pas risqué sauf si vous ne faites pas attention à ce que vous faites root ou si vous faites quelque chose de bizarre comme changer votre LD_PRELOAD dans votre script d'initialisation de session et vous verrouiller.
livingstaccato
@ user15964 Aussi - oui - j'ai reconstruit la glibc façon, façon, à l'époque.
livingstaccato
1

La mise à jour de glibc vers une version prise en charge par votre distribution présente un faible risque. Il est écrit pour gérer la compatibilité avec les versions qui datent de très loin , et (à l'exception des bogues), une nouvelle version devrait simplement être une goutte de remplacement. Installer une nouvelle version dans un endroit étrange est plus risqué, à mon humble avis.

vonbrand
la source
4
mais le problème est que je ne suis pas l'administrateur, je n'ai pas l'autorité. Même si j'ai obtenu l'autorisation, j'ai peur d'apporter des modifications au système, car ce n'est pas mon ordinateur, c'est en fait un cluster, beaucoup de gens y travaillent. Au fait, pourquoi une nouvelle version ailleurs est-elle risquée? J'ai seulement besoin de lier le logiciel dont j'avais besoin à une nouvelle bibliothèque, pas à l'ensemble du système.
user15964
1
Et vous vous sentez libre d'installer un paquet aléatoire? Les politiques d'administration du système sont en retard d'une révision sérieuse . La bibliothèque à cet endroit étrange pourrait être récupérée par des trucs aléatoires, et aplanir le fonctionnement de votre application uniquement (et les processus possibles démarrés par elle, qui n'impliquent pas de programmes standard) pourrait s'avérer assez difficile ...
vonbrand
1
@vonbrand - C'est absurde, à moins que nous ne parlions d'une machine de haute sécurité (et non par exemple d'un développeur partagé ou d'une machine / cluster de test), auquel cas vous devez avoir une saine paranoïa à propos des logiciels étrangers non audités. En termes de ruptures aléatoires, la mise à jour de libc (affectant tout le système, provoquant éventuellement des ruptures du système) est très différente de la simple installation d'un programme d'application isolé à partir de sources fiables (je ne suis pas d'accord avec l'idée que Mathematica est un package aléatoire). L'épuisement des ressources est bien entendu une préoccupation valable que l'administrateur système compétent doit résoudre.
FooF
@FooF, j'ai vu trop de cas où "l'administration sait mieux, laissez les utilisateurs faire ce qu'ils veulent sans assistance" pour avoir des illusions dans ce domaine.
vonbrand
1
@vonbrand - J'ai tendance à être d'accord avec votre dernier commentaire. Mais je ne suis pas du tout d'accord que la mise à jour de la libc ou l'installation de logiciels bien connus (pas de "package aléatoire") soit en quelque sorte comparable (en supposant qu'il n'y ait pas de mauvaises intentions). Nous savons très peu de choses sur la nature de l'environnement et ses utilisateurs pour exprimer ici une opinion définitive. Dans les machines de développement logiciel (avec de nombreux utilisateurs compétents), il pourrait être judicieux de permettre aux utilisateurs d'exécuter leur propre logiciel. Parfois, c'est une simple nécessité (OpenWRT et OpenEmbedded qui ciblent les plates-formes embarquées construiront à partir de sources certains outils nécessaires pour construire l'image f / w).
FooF
-3

Dans ce cas particulier, je dirais ne vous embêtez pas, sauf si vous avez l'aide (et la permission) des administrateurs de ce système partagé.

Mathematica fonctionne sur Windows, Mac et Linux, alors installez-le simplement sur votre ordinateur de bureau où vous n'avez pas à vous soucier d'affecter les autres. Il est également plus probable que le système d'exploitation soit plus récent que RHEL4 et vous n'aurez donc pas à effectuer de contorsions pour l'installer.

Burhan Ali
la source