Installer deux glibc à côté dans Debian / Ubuntu

15

Est-il possible d'installer et d'utiliser deux versions de glibc différentes sur la même machine. Lorsqu'une seule version est utilisée uniquement pour exécuter un logiciel hérité, qui repose sur d'anciens binaires glibc?

Est-il possible de le faire à l'aide du gestionnaire de packages (quelque chose comme "installer ce package et ses dépendances /opt/old-glibc), au lieu de le gérer

Elazar Leibovich
la source
4
Ça doit être, mais ... oh, tellement de douleur.
tshepang
Peut-être, mais vous devrez donner plus de détails. Quel système d'exploitation (version de Debian / Ubuntu) précisément, et plus important encore, quel est le logiciel hérité, et quelle version de libc utilise-t-il? Je pense lddque vous dirait quelque chose. Si possible, vous devrez peut-être recompiler la bibliothèque libc héritée et / ou installer / recompiler les packages de prise en charge. Selon l'âge de votre application, cela peut devenir délicat. Je vois Debian actuel libc6dépend libc-bin (= 2.13-0exp5)et libgcc1, donc libc6ne pas beaucoup de dépendances, mais vous pouvez encore rencontrer des problèmes.
Faheem Mitha

Réponses:

8

Oui c'est possible. Vous devrez être très prudent avec les chemins de chargement des bibliothèques, et vous devrez peut-être recompiler d'autres bibliothèques.

Comme chemin de moindre friction, je recommande d'installer une ancienne version de Debian ou Ubuntu dans un chroot . Autrement dit, créez un répertoire, par exemple /old/etch, et installez l'ancienne distribution dans l'arborescence qui y est enracinée; pour exécuter ce programme problématique, appelez chrootpour restreindre sa vue du système de fichiers à /old/etch.

Debian (ou Ubuntu) est livré avec un paquet pour aider à installer un autre système dans un chroot: schroot (successeur de dchroot). Tout d'abord, utilisez debootstrap pour installer l'ancienne distribution (installez uniquement le système de base et ce dont votre programme a besoin, pas de serveurs). Ensuite, configurez schroot pour exécuter le programme de manière pratique (avec /dev,/proc , /homeet d' autres systèmes de fichiers « satellite » accessible).

Le plan est donc: debootstrap, puis dchroot. Dans Comment exécuter des programmes 32 bits sur un Debian / Ubuntu 64 bits? , Je donne un tutoriel sur une configuration similaire - que vous exécutiez différentes versions de la distribution, ou différentes architectures, ou différentes distributions de type Debian, il suffit de sélectionner la source de paquet appropriée, le reste est le même.

Gilles 'SO- arrête d'être méchant'
la source
Si l'on a déjà installé la version la plus récente, peut-il commencer à partir de là et ensuite, en plus de la plus récente, installer l'ancienne dans /old/etch?
n611x007
@naxa Oui, en fait, c'est la situation décrite ici, mais cela fonctionne de la même manière si vous allez dans l'autre sens (plus récent chrooté dans l'ancien). J'ai en fait écrit un tutoriel debootstrap / schroot quelques jours après avoir écrit cette réponse, j'ai ajouté le lien.
Gilles 'SO- arrête d'être méchant'