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
ubuntu
debian
dynamic-linking
glibc
Elazar Leibovich
la source
la source
ldd
que 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 actuellibc6
dépendlibc-bin (= 2.13-0exp5)
etlibgcc1
, donclibc6
ne pas beaucoup de dépendances, mais vous pouvez encore rencontrer des problèmes.Réponses:
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, appelezchroot
pour 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
,/home
et 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.
la source
/old/etch
?