É possível instalar e usar duas versões diferentes da glibc na mesma máquina. Onde uma versão é usada apenas para executar software legado, que depende de binários glibc antigos?
É possível fazer isso com a ajuda do gerenciador de pacotes (algo como "instalar este pacote e suas dependências para /opt/old-glibc
), em vez de gerenciá-lo
ubuntu
debian
dynamic-linking
glibc
Elazar Leibovich
fonte
fonte
ldd
que te diria uma coisa. Se possível, você pode precisar recompilar a biblioteca libc herdada e / ou instalar / recompilar pacotes de suporte. Dependendo da idade do seu aplicativo, isso pode ser complicado. Eu vejo que o Debian atuallibc6
dependelibc-bin (= 2.13-0exp5)
elibgcc1
, portantolibc6
, não tem muitas dependências, mas você ainda pode ter problemas.Respostas:
Sim é possivel. Você precisará ter muito cuidado com os caminhos de carregamento da biblioteca e talvez seja necessário recompilar algumas outras bibliotecas.
Como o caminho de menor atrito, eu recomendo instalar uma versão mais antiga do Debian ou Ubuntu em um chroot . Ou seja, crie um diretório, digamos
/old/etch
, e instale a distribuição mais antiga na árvore enraizada nele; Para executar esse programa problemático, chamechroot
para restringir sua visão do sistema de arquivos/old/etch
.O Debian (ou Ubuntu) vem com um pacote para ajudar na instalação de outro sistema em um chroot: schroot (sucessor do dchroot). Primeiro, use o debootstrap para instalar a distribuição mais antiga (instale apenas o sistema básico e o que o seu programa precisa, sem servidores). Em seguida, criar schroot para executar o programa convenientemente (com
/dev
,/proc
,/home
e outros “satélite” sistemas de arquivos acessível).Portanto, o plano é: debootstrap, dchroot. Em Como executo programas de 32 bits em um Debian / Ubuntu de 64 bits? , Dou um tutorial sobre uma configuração semelhante - esteja você executando versões diferentes da distribuição, arquiteturas diferentes ou distribuições semelhantes ao Debian, é apenas uma questão de selecionar a fonte de pacote apropriada, o resto é o mesmo.
fonte
/old/etch
?